在训练模型时,我们需要使用各种评价指标评估模型的效果。然而,在我初入门时,很多概念都搞不清楚,网上大部分总结或者比较简单,或者杂糅在一起,有点凌乱,甚至可能还有错误,在此抛砖引玉,总结一下各种常用的评价指标,以备使用时查阅,如有错误欢迎指出。
知乎文章
https://zhuanlan.zhihu.com/p/505034942
分类正确的样本占总样本个数的比例。
2. TP/FP/FN/TN
注:后面的P/N代表预测值,如果预测值与真实值一样,则是真x例,反之是假x例。
3. Precision/Recall/F1 score
1)Precision(精确率):分类正确的正样本个数占分类器判定为正样本的样本个数的比例
分类正确的正样本个数:即真正例(TP)。
分类器判定为正样本的个数:包括真正例(TP)和假正例(FP)
2)Recall(召回率):分类正确的正样本个数占真正的正样本个数的比例。
分类正确的正样本个数:即真正例(TP)。真正的正样本个数:包括真正例(TP)和假负例(FN)
3)F1-score:精确率和召回率的调和均值。
4)F score
F1 score的通用形式,F1 score认为precision和recall同等重要;
beta >1,Recall更重要;
beta <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曲线在不平衡时的分析:
《百面机器学习》诸葛越
《统计学习方法》李航
《机器学习》周志华
PR曲线和F1、ROC曲线和AUC