[关闭]
@songying 2019-04-03T12:57:18.000000Z 字数 3089 阅读 1178

深度学习: 评估指标

deep-learning


实际问题中,需要通过一组互补的指标去评估模型,才能更好的发现并解决模型存在的问题,从而更好的解决实际业务场景中遇到的问题。

分类模型常用评估方法:**

指标 描述 Scikit-learn函数
Precision 精准度 from sklearn.metrics import precision_score
Recall 召回率 from sklearn.metrics import recall_score
F1 F1值 from sklearn.metrics import f1_score
Confusion Matrix 混淆矩阵 from sklearn.metrics import confusion_matrix
ROC ROC曲线 from sklearn.metrics import roc
AUC ROC曲线下的面积 from sklearn.metrics import auc
precision 查准率
recall 查全率
P-R曲线 查准率为纵轴,查全率为横轴,作图

回归模型常用评估方法:

指标 描述 Scikit-learn函数
Mean Square Error (MSE, RMSE) 平均方差 from sklearn.metrics import mean_squared_error
Absolute Error (MAE, RAE) 绝对误差 from sklearn.metrics import mean_absolute_error, median_absolute_error
R-Squared R平方值 from sklearn.metrics import r2_score

分类问题

TP, FP, FN, TN

1. 准确率

准确率是指我们的模型预测正确的结果所占的比例。

  • 准确率在正负样本不均衡的情况下,占比达的类别往往会成为影响准确率的最主要因素。此时,单单准确率一项并不能反映全面情况。
  • 举个例子: 预测地震[0,1], 考虑到地震发生的概率是很小的,我们每次都预测为0-不发生,准确率再99%, 此时并不能很好的评估模型。
  • 此时可以取每个类别下的样本准确率的算术平均作为模型评估的指标。

2. Precision:精确率

3. recall:召回率

精确率与召回率的权衡

要全面评估模型的有效性,必须同时检查精确率和召回率。

遗憾的是,精确率和召回率往往是此消彼长的情况。如果提高精确率,分类器需要尽量在“更有把握”时才将样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,从而导致召回率降低。

为了更好的评估一个模型,最好绘制出P-R曲线。P-R曲线的横轴是召回率,纵轴是精确率。在P-R曲线上的一个点代表着:在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率

4. F1 Score

F1 score 能够综合的反映一个模型的性能。

5. ROC 曲线

ROC 曲线常作为评估二分类器最重要的指标之一。

ROC 曲线的横坐标为假阳性率 - FPR, 纵坐标为真阳性率-TPR。

ROC曲线越靠近(0,1)点,越偏离45度对角线越好。

回归问题

1. 平方根误差:RMSE

一般情况下,RMSE能够很好的反映回归模型预测值与真实值的偏离程度,但在实际问题中,如果存在个别偏离程度非常大的离群点时,即使离群点数量非常少,也会让RMSE指标变得很差。

针对这种情况,可以从三个角度来考虑问题:

  • 如果我们认定这些离群点是“噪声点”的话,就需要在数据预处理阶段将这些噪声点过滤掉
  • 如果不认为这些离群带你是“噪声点”的话,需要进一步提高模型的预测能力,将离群点产生的机制建模进去
  • 可以找一个更合适的指标来评估该模型。

2. 平均绝对百分比误差:MAPE

该评价指标与RMSE相比有更好的鲁棒性,相当于将每个点的误差进行归一化,降低了个别离群点带来的绝对误差的影响。

3. 余弦距离

余弦距离可用来评估两个样本之间的距离。

相同的两个相邻的余弦距离位0.

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注