good-turing平滑⽅法评价_分类评价指标
此系列⽂章为笔者学习⼯作中的阶段性总结,难免有纰漏,如有不正之处,欢迎指正,⼤家共同成长。
分类(Classification)是机器学习中需要解决的主要问题之⼀,分类任务有诸多评价指标,在诸多的评估指标中, ⼤部分指标只能⽚⾯地反映模型的⼀部分性能。 如果不能合理地运⽤评估指标, 不仅不能发现模型本⾝的问题, ⽽且会得出错误的结论。
下⾯我们从基本概念⼊⼿,探讨如何根据实际场景选择合适的评价指标。便于理解,以下讨论主要基于⼆分类任务,多分类同样适⽤。
基本概念
混淆矩阵
⾸先了解下混淆矩阵。我们做⼆分类算法会输出预测值,当然预测值有对有错,对应着真实值。那么基于预测值和真实值两个属性我们可以组合四种状态,如下图所⽰。
其中:
预测值为正(Positive),并且真实值也为正(Positive),预测为真(True),True Positive (TP)。
预测值为负(Negative),但是真实值为正(Positive),预测失败(False),False Negative (FN)。
预测值为正(Positive),但是真实值为负(Negative),预测失败(False),False Positive (FP)。
预测值为负(Negative),并且真实值也为负(Negative),预测为真(True),True Negative (TN)。
在具体分类任务中,模型会对⼀批数据(测试或验证集数据)进⾏推理,并统计推理结果的TP、FN、FP、TN的数量。
准确率(Accuracy)
准确率是指分类正确的样本占总样本个数的⽐例。准确率是针对所有样本的统计量。
准确率是分类问题中最简单也是最直观的评价指标, 但存在明显的缺陷。 ⽐如, 当负样本占99%时, 分类器把所有样本都预测为负样本也可以获得99%的准确率。 所以, 当不同类别的样本⽐例⾮常不均衡时, 占⽐⼤的类别往往成为影响准确率的最主要因素。
精确率(Precision)
精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的⽐例。精确率是对部分样本的统计量,侧重对分类器判定为正类的数据的统计。
召回率(Recall)
召回率是指分类正确的正样本个数占真正的正样本个数的⽐例。召回率也是对部分样本的统计量,侧重对真实的正类样本的统计。
F1 score
通过下图再来强化下Precision和Recall的直观理解。
从上⽂我们可以看到,Precision值和Recall值是既⽭盾⼜统⼀的两个指标, 为了提⾼Precision值, 分类器需要尽量在“更有把握”时才把样本预测为正样本, 但此时往往会因为过于保守⽽漏掉很多“没有把握”的正样本, 导致Recall值降低。
那么当不同模型的Recall和Precision各有优势时该如何选择模型?此时可以通过F1 score来⽐较。F1 score是精准率和召回率的调和平均值, 它定义为:
在现实场景,如果你的两个模型,⼀个precision特别⾼,recall特别低,另⼀个recall特别⾼,precision特别低的时候,f1-score可能是差不多的,可能不能通过⼀个f1 socre做出最终判断,此时就需要根据不同场景选择其他合适的指标做出评判。
PR曲线
我们知道,分类模型的最后输出往往是⼀个概率值,我们⼀般需要把概率值转换为具体的类别,对于⼆分类来说,我们设置⼀个阈值(threshold),然后⼤于此阈值判定为正类,反之负类。
以上评价指标(Accuracy、Precision、Recall)都是针对某个特定阈值来说的,那么当不同模型取不同阈值时,如何全⾯的评价不同模型?以下介绍PR曲线,即Precision-Recall曲线。
P-R曲线的横轴是召回率, 纵轴是精确率。 对于⼀个模型来说, 其P-R曲线上的⼀个点代表着, 在某⼀阈值下, 模型将⼤于该阈值的结果判定为正样本,⼩于该阈值的结果判定为负样本, 此时返回结果对应⼀对⼉召回率和精确率,作为PR坐标系上的⼀个坐标。 整条P-R曲线是通过将阈值从⾼到低移动⽽⽣成的。
上图代表两个模型的P-R曲线,很明显,P-R曲线越靠近右上⾓(1,1)代表模型越好。在现实场景,需要根据不同决策要求综合判断不同模型的好坏(以下章节具体讨论)。
为什么P-R曲线没有AUC?
ROC曲线
另⼀个全⾯评估模型的指标叫ROC曲线,ROC曲线是Receiver Operating Characteristic Curve的简称, 中⽂名为“受试者⼯作特征曲线”。 ROC曲线源于军事领域, ⽽后在医学领域应⽤甚⼴, “受试者⼯作特征曲线”这⼀名称也正是来⾃于医学领域。 ROC曲线的横坐标为假阳性率( False Positive Rate, FPR) ; 纵坐标为真阳性率( True Positive Rate, TPR) 。 FPR和TPR的计算⽅法分别为:
可以看到,FPR代表错误判断的正类占所有负类的⽐例,医学上等价于误诊率。TPR等价于Reacll。
同样的,ROC曲线也是通过不同阈值下的FPR和TPR坐标所得到的。具体来说,通过动态地调整模型概率值(概率值的意思是模型多⼤概率判定为正类), 从最⾼的值开始( ⽐如1, 对应着ROC曲线的零点) , 逐渐调整到最低概率值, 每⼀个概率值都会对应⼀个FPR和TPR, 在ROC图上绘制出每个概率值对应的位置, 再连接所有点就得到最终的ROC曲线。
AUC
weight的几种形式AUC (Area Under Curve 被定义为ROC曲线下的⾯积,显然这个⾯积的数值不会⼤于1。⼜由于ROC曲线⼀般都处于y=x这条直线的上⽅,所以AUC的取值范围⼀般在0.5和1之间。使⽤AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,⽽作为⼀个数值,对应AUC更⼤的分类器效果更好。
AUC的计算有两种⽅式,梯形法和ROC AUCH法,都是以逼近法求近似值,具体见wikipedia。
从AUC判断分类器(预测模型)优劣的标准:
AUC = 1,是完美分类器,采⽤这个预测模型时,存在⾄少⼀个阈值能得出完美预测。绝⼤多数预测的场合,不存在完美分类器。
0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
AUC = 0.5,跟随机猜测⼀样(例:丢铜板),模型没有预测价值。
AUC < 0.5,⽐随机猜测还差;但只要总是反预测⽽⾏,就优于随机猜测。
三种AUC值⽰例:
AUC值越⼤的分类器,正确率越⾼。
简单说:AUC值越⼤的分类器,正确率越⾼
注:TPR、FPR、Precision、Recall的定义来对⽐,TPR、Recall的分母为样本中正类的个数,FPR的分母为样本中负类的个数,样本⼀旦确定分母即为定值,因此三个指标的变化随分⼦增加单调递增。但是Precision的分母为预测为正类的个数,会随着阈值的变化⽽变化,因此Precision的变化受TP和FP的综合影响,不单调,变化情况不可预测。
实际使⽤
对于ROC,⼀般来说,如果ROC是光滑的,那么基本可以判断没有太⼤的overfitting(⽐如图中0.2到0.4可能就有问题,但是样本太少了),这个时候调模型可以只看AUC,⾯积越⼤⼀般认为模型越好。
对于PRC, precision recall curve。和ROC⼀样,先看平滑不平滑(蓝线明显好些),再看谁上谁下(同⼀测试集上),⼀般来说,上⾯的⽐下⾯的好(绿线⽐红线好)。F1(计算公式略)当P和R接近就也越⼤,⼀般会画连接(0,0)和(1,1)的线,线和PRC重合的地⽅的F1是这条线最⼤的F1(光滑的情况下),此时的F1对于PRC就好象AUC对于ROC⼀样。⼀个数字⽐⼀条线更⽅便调模型。
sklearn库实现
通过sklearn库可以轻松的实现各个分类性能度量。
accuracy_score函数⽤于计算分类结果的准确率,其原型为:
precision_score函数⽤于计算分类结果的查准率,其原型为:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。