百面机器学习 #2 模型评估:精确率与召回率,假阳性与真阳性率,PR曲线和ROC曲线
predict Positive | predict Negative | ||
---|---|---|---|
real Positive | TP | FN | num of real positive= |
real Negative | FP | TN | num of real negative= |
predicted num of postitive | predicted num of negative |
-
精确率(查准率) = 分类正确的正样本个数占分类器判定为正样本的样本个数的比例。
-
召回率(查全率) = 分类正确的正样本个数占真正的正样本个数的比例。
Precision值和Recall值是既矛盾又统一的两个指标,为了提高Precision值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致Recall值降低。
1. P-R(Precision-Recall)曲线
-
P-R曲线的横轴是召回率R,纵轴是精确率P
-
P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本(即高分为正样本,相当于排序,得分前几名为正样本,或者说是我们想要的搜索结果),此时返回结果对应的召回率和精确率。
左边曲线起始附近代表当阈值最大时模型的精确率和召回率。越往右表示阈值越小。
-
即开始阈值很大,判定结果可能几乎没有正样本,即无论正负都判定为负,,,所以召回率趋近于0,而准确率因为判定为正样本的个数为0、正确判断为正样本的个数也为0,或者说对于正样本的确定“锱铢必较”,只有预测数值特别高的才认为是正样本,这样的高要求得到的正样本是真的正样本的概率就会趋近于1,所以准确率趋近于1;
-
而当曲线往右走,阈值很小,即对于正样本的判定要求变得很松,几乎将所有的判定为正样本,,则此时就可能将所有的真正样本都挖掘出来,召回率趋近于1;而由于所有样本都判定为正样本,准确率则相当于是原始样本中真实正样本的比例。
-
只用某个点对应的精确率和召回率是不能全面地衡量模型的性能,只有通过P-R曲线的整体表现,才能够对模型进行更为全面的评估。
F1 score
精准率和召回率的调和平均值
2. 平方根误差的局限性
RMSE经常被用来衡量回归模型的好坏
一般情况下,RMSE能够很好地反映回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点(Outlier)时,即使离群点数量非常少,也会让RMSE指标变得很差。
离群点:
认定这些离群点是“噪声点”的话,就需要在数据预处理的阶段把这些噪声点过滤掉
如果不认为这些离群点是“噪声点”的话,就需要进一步提高模型的预测能力,将离群点产生的机制建模进去
找一个更合适的指标来评估该模型。关于评估指标,其实是存在比RMSE的鲁棒性更好的指标,比如平均绝对百分比误差(Mean Absolute Percent Error,MAPE)
MAPE相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。
3. ROC曲线
Receiver Operating Characteristic Curve/ 受试者工作特征曲线”:相比precision、recall、F1 score、P-R曲线等,ROC曲线则有很多优点,经常作为评估二值分类器最重要的指标之一。
predict Positive | predict Negative | ||
---|---|---|---|
real Positive | TP | FN | num of real positive= |
real Negative | FP | TN | num of real negative= |
predicted num of postitive | predicted num of negative |
-
横坐标 = 假阳性率(False Positive Rate,FPR):真的负样本中被分类器预测为正样本的比例。
所有敌机来袭的事件中,每个雷达兵准确预报的概率
-
纵坐标 = 真阳性率(True Positive Rate,TPR):真的正样本中被分类器预测为正样本的比例。(=召回率)
所有非敌机来袭信号中,雷达兵预报错误成有敌机的概率
ROC曲线绘制
-
ROC曲线是通过不断移动分类器的“截断点”来生成曲线上的一组关键点的。“截断点”指的就是区分正负预测结果的阈值。
左边曲线起始附近代表当阈值最大,越往右表示阈值越小。
-
即开始阈值很大,判定结果可能几乎没有正样本,即无论正负都判定为负,,,即此时真、假阳性率都趋近0.
-
而当曲线往右走,阈值很小,即对于正样本的判定要求变得很松,几乎将所有的判定为正样本,,,即此时真实负样本中被分为阳性的比例为1,真实负样本中被分为阳性的比例也为1.
-
-
还有一种更直观地绘制ROC曲线的方法
- 首先,根据样本标签统计出正负样本的数量,假设正样本数量为,负样本数量为
- 接下来,把横轴的刻度间隔设置为,纵轴的刻度间隔设置为
- 再根据模型输出的预测概率对样本进行排序(从高到低,相当于阈值从最高开始往下走,即是对应曲线最左端开始);依次遍历样本,同时从零点开始绘制ROC曲线
- 每遇到一个正样本就沿纵轴方向绘制一个刻度间隔的曲线
- 每遇到一个负样本就沿横轴方向绘制一个刻度间隔的曲线
- 直到遍历完所有样本,曲线最终停在(1,1)这个点,表示遍历了所有个正样本和所有个负样本,整个ROC曲线绘制完成
-
相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。所以ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。
ROC曲线的适用场景更多,被广泛用于排序、推荐、广告等正负样本数量往往很不均衡领域。
4. AUC
-
AUC((Area Under ROC Curve)指的是ROC曲线下的面积大小,该值能够量化地反映基于ROC曲线衡量出的模型性能。
-
由于ROC曲线一般都处于这条直线的上方(如果不是的话,只要把模型预测的概率反转成1−p就可以得到一个更好的分类器),所以AUC的取值一般在0.5~1之间。
横纵坐标都表示预测为阳性(正例),而我们希望真实正样本被预测为阳性的概率,高于真实负样本被预测为阳性的概率,所以大部分ROC曲线.
-
AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。
-
AUC常常被用来作为模型排序好坏的指标,原因在于AUC可以看做随机从正负样本中选取一对正负样本,其中正样本的得分大于负样本的概率 !
Ref:
对于真正例率TPR,分子是得分>t里面正样本的数目,分母是总的正样本数目。 而对于假正例率FPR,分子是得分>t里面负样本的数目,分母是总的负样本数目。 因此,如果定义N+(t),N−(t)N+(t),N−(t)分别为得分大于t的样本中正负样本数目,N+,N−N+,N−为总的正负样本数目, 那么TPR和FPR可以表达为阈值t的函数
考虑随机取得这对正负样本中,负样本得分在之间的概率为
如果很小,那么该正样本得分大于该负样本的概率为
所以
注意积分区间,对应ROC图像最右上角的点,而对应ROC图像最左下角的点。所以,计算面积是。 可以看出,积分项里面实际上是这样一个事件的概率:随机取一对正负样本,负样本得分为t且正样本得分大于t! 因此,对这个概率微元积分就可以到正样本得分大于负样本的概率!