机器学习系列机器学习评价指标
公众号:医学⼤数据挖掘分析
评价指标是针对将相同的数据,输⼊不同的算法模型,或者输⼊不同参数的同⼀种算法模型,⽽给出这个算法或者参数好坏的定量指标。
在模型评估过程中,往往需要使⽤多种不同的指标进⾏评估,在诸多的评价指标中,⼤部分指标只能⽚⾯的反应模型的⼀部分性能,如果不能合理的运⽤评估指标,不仅不能发现模型本⾝的问题,⽽且会得出错误的结论。
本⽂将详细介绍机器学习分类任务的常⽤评价指标:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、P-R曲线(Precision-Recall Curve)、F1 Score、混淆矩阵(Confu Matrix)、ROC、AUC。
01 ⼏个常⽤的概念
⾏为/⾏为正确与否:
•positives/True (TP) 将样本预测为正类,预测正确。
•negatives/True (TN) 将样本预测为负类,预测正确。
•positives/Fal (FP) 将样本预测为正类,预测错误。
•negatives/Fal (FN) 将样本预测为负类,预测错误。
02 Precision 与 Recall
•precision
(查准率,⼜叫阳性预测值。指识别正确占识别为正样本的总数的⽐例,即预测为正/阳性的样本中有多少是真正的正样本):
•recall
(召回率, ⼜叫查全率,真阳性率TPR。即有多少正/阳性样本被正确识别出来——进⾏了识别且识别是正确的样本, 占总正样本的⽐例):
补充:
nsitivity(TPR)灵敏度 = TP/(TP + FN) # 所有正例中, 被识别出来的⽐例;
specifcity(TNR) 特异性= TN/(TN + FP) # 所有反例中, 被识别出来的⽐例;
哪个国家最小PPV阳性预测值 = TP/(TP + FP) # 所有识别为正例的样本中, 预测正确的⽐例。
NPV 阴性预测值= TN/(TN + FN) # 所有识别为反例的样本中, 预测正确的⽐例。
Acc 准确率= (TP + TN)/(TP + FN + FP + TN) #所有预测正确的样本占总样本的⽐例。
注:在正负样本不平衡的情况下,准确率这个评价指标有很⼤的缺陷。⽐如在互联⽹⼴告⾥⾯,点击的数量是很少的,⼀般只有千分之⼏,如果⽤acc,即使全部预测成负类(不点击)acc 也有 99% 以上,没有意义。
03 调整阈值
可以通过调整阈值,来选择让系统识别出多少图⽚,进⽽改变Precision 或 Recall 的值。举个例⼦,在某种阈值的前提下(蓝⾊虚线),系统识别出了四张图⽚,如下图中所⽰:
可以通过改变阈值(也可以看作上下移动蓝⾊的虚线),来选择让系统识别能出多少个图⽚,当然阈值的变化会导致Precision与Recall值发⽣变化。⽐如,把蓝⾊虚线放到第⼀张图⽚下⾯,也就是说让系统只识别出最上⾯的那张飞机图⽚,那么Precision的值就是100%,⽽Recall的值则是20%。如果把蓝⾊虚线放到第⼆张图⽚下⾯,也就是说让系统只识别出最上⾯的前两张图⽚,那么Precision的值还是100%,⽽Recall的值则增长到是40%。
下图为不同阈值条件下,Precision与Recall的变化情况:
微商04 Precision-recall 曲线
评估分类器的性能,⼀个⽐较好的⽅法是:观察当阈值变化是,precision和recall值的变化情况。如果⼀个分类器性能⽐较好,那么应该让recall值增长的同时,保持precision值在⼀个较⾼的⽔平。⽽性能⽐较差的分类器,是通过损失很多precision值才能换来较⾼的recall。
若⼀个学习器B的P-R曲线被另⼀个学习器A的P-R曲线完全包住,则称:B的性能优于A。若A和B的曲
线发⽣了交叉,则谁的曲线下的⾯积⼤,谁的性能更优。但⼀般来说,曲线下的⾯积是很难进⾏估算的,所以衍⽣出了“平衡
点”(Break-Event Point,简称BEP),即当P=R时的取值,平衡点的取值越⾼,性能更优。
05 F1-Measure(⼜称F-Score)
F-Measure是Precision和Recall的加权调和平均,能兼顾精确率和召回率。
调整下也就是
当β取1时,就是精确率和召回率的调和均值
即
调整下也就是
代⼊Precision 与 Recall的公式,可以进⽽求得
代⼊Precision 与 Recall的公式,可以进⽽求得
只⽤预测正确的样本数量就可以计算小鱼历险记
有些场景下,我们可能认为精确度更重要,调整参数β可以帮助我们更好的evaluate结果。
06 ROC曲线
即受试者⼯作特征曲线(receiver operating characteristic curve),是以假阳性率为横坐标和以真阳性率为纵坐标绘制的曲线。
下⾯两个概念可以帮助我们更好地理解ROC曲线:
团队游戏有哪些
•假阳性:the fal positive rate (FP / (TN + FP)) 就是阳性检测器,错将阴性样本检测成阳性的样本数占总数的⽐例,因为随着检测器对于阳性样本识别能⼒增强,可能会将部分阴性样本也错检成阳性,即在增强检测器对于阳性样本识别能⼒时,产⽣的成本。
•灵敏度:the true positive rate (TP / (TP + FN)) 就是阳性检测器,对于阳性样本的检测正确率。
图中不同颜⾊代表不同模型。明显,⿊⾊模型是瞎猜模型,绿⾊模型是最好的,但是也是不可能实现的。剩下的,红⾊的⽐蓝⾊的好。也就是说,ROC (Receiver Operating Characteristic)曲线下⾯的⾯积越⼤,模型就越好。这个曲线下⾯积就称为 AUC(Area Under the Curve)。
什么时候⽤ ROC,什么时候⽤ Precision-Recall 呢?⼀般来说,data imbalanced(不均衡)的情况,
⽤ Precision-Recall ⽐较好。如果 positive,negative 的数量基本是平衡的,那 ROC 就更常⽤⼀些。
07 AUC
AUC(Area Under Curve)⼜称为曲线下⾯积,是处于ROC Curve下⽅的那部分⾯积的⼤⼩。对于ROC曲线下⽅⾯积越⼤表明模型性能越好,于是AUC就是由此产⽣的评价指标。通常,AUC的值介于0.5到1.0之间,较⼤的AUC代表了较好的Performance。如果模型是完美的,那么它的AUC = 1,证明所有正例排在了负例的前⾯,如果模型是个简单的⼆类随机猜测模型,那么它的AUC = 0.5,如果⼀个模型好于另⼀个,则它的曲线下⽅⾯积相对较⼤,对应的AUC值也会较⼤。
08 混淆矩阵
混淆矩阵(Confusion Matrix)⼜被称为错误矩阵,通过它可以直观地观察到算法的效果。它的每⼀列是样本的预测分类,每⼀⾏是样本的真实分类(反过来也可以),顾名思义,它反映了分类结果的混淆程度。对之进⾏可视化:
然彩
对⾓线上数字代表预测正确的样本数。
sklearn实现
import numpy as np
import sklearn积木搭建
y_true = np.array([-1]*30 + [0]*240 + [1]*30)
y_pred = np.array([-1]*10 + [0]*10 + [1]*10 +
[-1]*40 + [0]*160 + [1]*40 +
[-1]*5 + [0]*5 + [1]*20)
牛骨汤面09 Approximated Average precision(AP)
其中p代表Precision, r代表recall,p是⼀个以r为参数的函数。这个指标其实就是代表Precision-recall曲线下⾯积。实际上这⼀积分极其接近于这⼀数值:对每⼀种阈值分别求(Precision值)乘以(Recall值的变化情况),再把所有阈值下求得的乘积值累加。公式如下:
PASCAL VOC CHALLENGE的AP计算⽅法是:假设这N个样本中有M个正例,那么我们会得到M个recall值(1/M, 2/M, ..., M/M),对于每个recall值r,我们可以计算出对应(r' >= r)的最⼤precision,然后对这M个precision值取平均即得到最后的AP值。计算⽅法如下:
冲动的英文