准确率(accuracy)
准确率是最常用的分类性能指标。拿最常见的二分类问题来说,我们的模型无非是想要把正类和负类预测识别出来。在测试集中识别对的数量(不论是把正样本识别为正样本还是把负样本识别为负样本)除以测试集的数据总量就是准确率。在用scikit-learn调用分类器进行分类的时候,模型返回的score值其实就是准确率。
精确率(precision)和召回率(recall)以及F值
精确率容易和准确率被混为一谈。其实,精确率只是针对预测正确的正样本而不是所有预测正确的样本。它可以由预测正确的正样本数除以模型所有预测为正样本的数目之比来计算出来。表现为预测出是正的里面有多少真正是正的。
而召回率是由预测正确的正样本数目除以测试集中真正的实际正样本数目之比计算得出。表现出所有真正是正样本中分类器能召回多少。
错误率:分类错误的样本数/样本总数
精度:分类正确的样本数/样本总数
错误率和精度虽常用,但是并不能满足所有任务的要求,,比如在信息检索中,我们经常关心的是:检索出的信息中有多少比例是用户感兴趣的?用户感兴趣的信息中有多少被检索出来?这个时候,“查准率”(precision),“查全率”(recall)更为适用次类信息的需求。
对于二类分类问题,可将样例根据其真实类别与机器学习预测的类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative),令TP/FP/TN/FN分别对应的样例数,显然,TP+FP+TN+FN=样例总数,分类结果混淆矩阵如下:
![machine learning中的性能度量 - 妹妹妹妹妹妹妹儿的~ - 这孩子谁懂的博客 machine learning中的性能度量 - 妹妹妹妹妹妹妹儿的~ - 这孩子谁懂的博客](http://img1.ph.126.net/0K-o8fAqmpG8_Pcd3unBFw==/6632220053885949946.png)
查准率P和查全率R分别定义为:
P=TP/TP+FP
R=TP/TP+FN
Accuracy=(TP+TN)/(TP+FP+FN+TN)
程序识别错误的总数:
N = TN + FP
程序识别正确的总数:
P = TP + FN
正确识别为“低质”的站点占识别错误总数的比例(值越大越好):
TP Rate = TP/N
未召回的“低质”站点占识别错误总数的比例:
FP Rate = FP/N
特征系数--误判为“低质”的站点占识别错误总数的比例:
Specificity = TN/N
查准率和查全率是一对毛对的度量,一般来说,查准率高时,查全率往往偏低,反之亦然。
如果是分类器的话,通过调整分类阈值,可以得到不同的P-R值,从而可以得到一条曲线(纵坐标为P,横坐标为R)。通常随着分类阈值从大到小变化(大于阈值认为标签为L),查准率减小,查全率增加。比较两个分类器好坏时,显然是查得又准又全的比较好,也就是的PR曲线越往坐标(1,1)的位置靠近越好。
![machine learning中的性能度量 - 妹妹妹妹妹妹妹儿的~ - 这孩子谁懂的博客 machine learning中的性能度量 - 妹妹妹妹妹妹妹儿的~ - 这孩子谁懂的博客](http://img2.ph.126.net/ZA9yzi8WlotkHRUGK1S0PA==/6631893498932485460.png)
P-R 图直观地显示出学习器在样本总体上的查全率、查准率.在进行比较
时?若一个学习器的P-R 曲线被另一个学习器的曲线完全"包住" , 则可断言
后者的性能优于前者, 例如图2 . 3 中学习器A 的性能优于学习器C; 如果两个
学习器的P-R 曲线发生了交叉7 例如图2 . 3 中的A 与B ,则难以-般性地断言
两者孰优孰劣?只能在具体的查准率或查全率条件下进行比较然而,在很多情
形下,人们往往仍希望把学习器A 与B 比出个高低. 这时一个比较合理的判据
是比较P-R 曲线节面积的大小,它在一定程度上表征了学习器在查准率和查全
率上取得相对"双高"的比例.但这个值不太容易估算, 因此7 人们设计了一些
综合考虑查准率、查全率的性能度量.
ROC 与AUC
很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与
一个分类阔值(threshold)进行比较,若大于|词值则分为正类,否则为反类.例
如,神经网络在一般情形下是对每个测试样本预测出一个[0.0 ,1. 0] 之间的实值,
然后将这个值与0.5 进行比较,大于0.5 则判为正例,否则为反例.这个实值或
概率预测结果的好坏,直接决定了学习器的泛化能力.实际上?根据这个实值或
概率预测结果,我们可将测试样本进行排序,"最可能"是正例的排在最前面,
"最不可能"是正例的排在最后面.这样,分类过程就相当于在这个排序中以
某个"截断点" (cut point)将样本分为两部分,前一部分判作正例,后一部分则
判作反例.
在不同的应用任务中,我们可根据任务需求来采用不同的截断点,例如若
我们更重视"查准率",则可选择排序中靠前的位置进行截断;若更重视"查
全率",则可选择靠后的位置进行截断.因此,排序本身的质量好坏,体现了综
合考虑学习器在不同任务下的"期望泛化性能"的好坏,或者说"一般情况
下"泛化性能的好坏. ROC 曲线则是从这个角度出发来研究学习器泛化性能
的有力工具.
与2.3.2 节中介绍的P-R 曲线相似?我们根据学习器的预
测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算
出两个重要量的值,分别以它们为横、纵坐标作图'就得到了"ROC 曲线
与P卫-R 曲线使用查准率、查全率为纵、横轴不同, ROC 曲线的纵轴是"真正
例率" (True Positive Rate,简称TPR) ,横轴是"假正例率" (False Positive
Rate,简称FPR) ,基于表2.1 中的符号,两者分别定义为
![machine learning中的性能度量 - 妹妹妹妹妹妹妹儿的~ - 这孩子谁懂的博客 machine learning中的性能度量 - 妹妹妹妹妹妹妹儿的~ - 这孩子谁懂的博客](http://img1.ph.126.net/GajAx7RlzUQPSuK7gwmLLg==/6632139789537108610.png)
![machine learning中的性能度量 - 妹妹妹妹妹妹妹儿的~ - 这孩子谁懂的博客 machine learning中的性能度量 - 妹妹妹妹妹妹妹儿的~ - 这孩子谁懂的博客](http://img2.ph.126.net/mA1Gijns_McKf5vAMNoSlQ==/6632060624699911241.png)
现实任务中通常是利用有限个测试样例来绘制ROC 图,此时仅能获得有
限个(真正例率,假正例率)坐标对,无法产生图2.4(a) 中的光滑ROC 曲线, 只能
绘制出如图2叫b)所示的近似ROC 曲线.绘图过程很简单:给定m+ 个正例和
m一个反例,根据学习器预测结果对样例进行排序,然后把分类阔值设为最大,
即把所有样例均预测为反例,此时真正例率和假正例率均为0 , 在坐标(0, 0) 处
标记一个点然后,将分类阐值依次设为每个样例的预测值,即依次将每个样例
划分为正例.设前一个标记点坐标为(X, y) , 当前若为真正例,则对应标记点的
坐标为(X, y + 步) ;当前若为假正例,则对应标记点的坐标为(X + 去, ν) ,然
后用线段连接相邻点即得.
进行学习器的比较时, 与P-R 图相似, 若一个学习器的ROC 曲线被另一
个学习器的曲线完全"包住", 则可断言后者的性能优于前者;若两个学习器
的ROC 曲线发生交叉,则难以-般性地断言两者孰优孰劣. 此时如果一定要进
行比较, 则较为合理的判据是比较ROC 曲线下的面积,即AUC (Area Under
ROC Curve) ,如图2.4 所示.
从定义可知, AUC 可通过对ROC 曲线下各部分的面积求和而得. 假
定ROC 曲线是由坐标为{(Xl , yl), (X2, Y2) , . . . , (xm, Ym)} 的点按序连接而形
成(Xl =0, xm = 1) ; 参见图2 .4(b) ,则AUC 可估算为
![machine learning中的性能度量 - 妹妹妹妹妹妹妹儿的~ - 这孩子谁懂的博客 machine learning中的性能度量 - 妹妹妹妹妹妹妹儿的~ - 这孩子谁懂的博客](http://img2.ph.126.net/ssCu-COkur1o99drOYZQbA==/6631989156444101306.png)