赞
踩
我们训练模型时需要用到各种评价指标,网上很多人的总结要么太凌乱,甚至还有错误,总结一下各种常用的评价指标,以备使用时查阅,如有错误欢迎指出。
分类正确的样本占总样本个数的比例。
1)True positive(TP): 真正例,将正类正确预测为正类数;
2)False positive(FP): 假正例,将负类错误预测为正类数;
3)False negative(FN):假负例,将正类错误预测为负类数;
4)True negative(TN): 真负例,将负类正确预测为负类数。
注:后面的P/N代表预测值,如果预测值与真实值一样,则是真x例,反之是假x例。
1)Precision(精确率):分类正确的正样本个数占分类器判定为正样本的样本个数的比例
分类正确的正样本个数:即真正例(TP)。
分类器判定为正样本的个数:包括真正例(TP)和假正例(FP)
2)Recall(召回率):分类正确的正样本个数占真正的正样本个数的比例。
分类正确的正样本个数:即真正例(TP)。
真正的正样本个数:包括真正例(TP)和假负例(FN)
3)F1-score:精确率和召回率的调和均值。
4)F score
score的通用形式, score认为precision和recall同等重要;
>1,Recall更重要;
<1,Precision更重要。
Precision-Recall曲线,简称P-R曲线,其横轴是召回率,纵轴是精确率。
下面举例说明其绘制方法。
在机器学习中分类器往往输出的不是类别标号,而是属于某个类别的概率值,根据分类器的预测结果从大到小对样例进行排序,逐个把样例加入正例进行预测,算出此时的P、R值。
如上图: 真实情况正例反例各有10个。 先用分数score=0.9作为阈值(大于等于0.9为正例,小于0.9为反例),此时TP=1,FP=0,FN=9,故根据Precision/Recall公式,P=1,R=0.1。 用0.8作为阈值,P=1,R=0.2。 用0.7作为阈值,P=0.67,R=0.2。 用0.6作为阈值,P=0.75,R=0.3。 以此类推。。。 最后得到一系列P、R值序列,就画出P-R曲线(如下图,不对应上面数据)。
即P-R曲线是通过将阈值从高到低移动而生成。
P-R曲线上一个点的含义是,在该阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。
P-R 曲线越靠近右上角性能越好。
F1score综合考虑了P值和R值。
ROC曲线用FPR(假正例率)作横轴,用TPR(真正例率)作纵轴
FPR:真实负样本被判定为正例的数量 占 全部真实负样本数量 的比例
TPR:真实正样本被判定为正例的数量 占 全部真实正样本数量 的比例
同样用上面的数据, 用0.9作为阈值,此时TP=1,FP=0,FN=9,TN=10,故TPR=0.1,FPR=0。 用0.8作为阈值,此时TP=2,FP=0,FN=8,TN=10,故TPR=0.2,FPR=0。 用0.7作为阈值,此时TP=2,FP=1,FN=8,TN=9,故TPR=0.2,FPR=0.1。 用0.6作为阈值,此时TP=3,FP=1,FN=7,TN=9,故TPR=0.3,FPR=0.1。 以此类推。。。
最后的ROC曲线如下图:
AUC的值就是ROC曲线下方围成区域的面积大小。
计算AUC的值只需要沿着ROC横轴做积分即可。
AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。
P-R曲线和ROC曲线都能评价分类器的性能。如果分类器a的PR曲线或ROC曲线包围了分类器b对应的曲线,那么分类器a的性能好于分类器b的性能。
PR曲线和ROC曲线有什么联系和不同: 相同点: 首先从定义上PR曲线的R值是等于ROC曲线中的TPR值。 都是用来评价分类器的性能的。 不同点: ROC曲线是单调的而PR曲线不是(根据它能更方便调参),可以用AUC的值得大小来评价分类器的好坏(是否可以用PR曲线围成面积大小来评价呢?)。 正负样本的分布不平衡时,ROC曲线形状基本保持不变,而PR曲线一般会产生剧烈的变化。
下图(a)和(b)分别是正反例相等的时候的ROC曲线和PR曲线, (c)和(d)分别是十倍反例一倍正例的ROC曲线和PR曲线 。 可以看出,在正负失衡的情况下,从ROC曲线看分类器的表现仍然较好(图c),然而从P-R曲线来看,分类器就表现的很差。 事实情况是分类器确实表现的不好,是ROC曲线欺骗了我们。
附知乎大佬@qian lv对ROC和P-R曲线在不平衡时的分析:
《百面机器学习》诸葛越
《统计学习方法》李航
《机器学习》周志华
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。