购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.6 衡量机器学习模型的指标

对于模型性能的好坏,我们并不知道这个模型很可能就是一个差的模型(对测试集不能很好地预测或分类)。那么如何知道这个模型是好是坏呢?我们必须有个评判的标准。为了进一步了解模型的能力,我们需要用某个指标来衡量,这就是性能度量的意义。有了一个指标,我们就可以对比不同模型了,从而知道哪个模型相对好,哪个模型相对差,并通过这个指标来进一步调参以逐步优化我们的模型。

1.6.1 正确率、精确率和召回率

假设你有一台自动分类装置,可以自动检测、分类目标。为论述方便,我们就假设它是用来预测某种疾病的机器。这台机器需要用某种疾病的数据作为输入,输出只可能为两条信息之一:有病或者没有病。虽然机器的输出只有两种,但是其内部对疾病的概率估计是一个实数,比如说p。机器上还有一个旋钮用来控制灵敏度阈值a。因此预报过程是这样子:首先用数据计算出p,然后比较p和a的大小,p>a就输出有得病(检测结果为阳性),p<a就输出没有得病(检测结果为阴性)。

如何评价这台机器的疾病预测性能呢?这里就要注意了,并不是每一次都能准确预报的机器就是好机器,因为它可以次次都预报有疾病(把a调得很低),自然不会漏掉,但是在绝大多数时候它都只是让大家虚惊一场,称为虚警;相反,从不产生虚警的机器也不一定就是好机器,因为它可以天天都预报没有得病(把a调得很高)——在绝大多数时间里这种预测显然是正确的,但也必然漏掉真正的病症,称为漏报。一台预测能力强的机器,应该同时具有低虚警和低漏报。精确率高意味着虚警少,能保证机器检测为阳性时,事件真正发生的概率高,但不能保证机器检测为阴性时,事件不发生。相反,召回率高意味着漏报少,能保证机器检测为阴性时,事件不发生的概率高,但不能保证机器检测结果为阳性时,事件就一定发生。

先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,正例(Positive)和负例(Negative)分别是:

● True Positives(TP):被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数(样本数)。

● False Positives(FP):被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数。

● False Negatives(FN):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数。

● True Negatives(TN):被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。

用大白话说,真正例TP是指模型将正类别样本正确地预测为正类别,同样真负例TN是指模型将负类别样本正确地预测为负类别;假正例FP是指模型将负类别样本错误地预测为正类别,而假负例FN是指模型将正类别样本错误地预测为负类别。这四个术语的混淆矩阵,如图1-17所示。

正确率是我们最常见的评价指标,正确率(Accuracy)=(TP+TN)/(P+N),这个很容易理解,就是被分对的样本数除以所有的样本数。通常来说,正确率越高,分类器越好。

错误率则与正确率相反,描述被分类器错分的比例,错误率(Error Rate)=(FP+FN)/(P+N)。对某一个实例来说,分对与分错是互斥事件。

图1-17

灵敏度(Sensitive)=TP/P,表示的是所有正例中被分对的比例,它衡量了分类器对正例的识别能力。

特效度(Specificity)=TN/N,表示的是所有负例中被分对的比例,它衡量了分类器对负例的识别能力。

精确率也叫精度(Precision),是针对我们预测结果而言的,表示被分为正例的示例中实际为正例的比例,那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP),精度Precision=TP/(TP+FP)。

召回率(Recall)是覆盖面的度量,度量有多个正例被分为正例。召回率也是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN),召回率Recall=TP/(TP+FN)=TP/P=灵敏度Sensitive,可以看到召回率与灵敏度是一样的。

举一个例子,假设儿童有5万例,识别成儿童的有4万例,识别成Other(其他)的有1例;Other有10万例,识别成Other的有8万例,识别成儿童的有2万例。由于我们现在分析的是儿童的准确率和召回率,所以儿童是正类,Other是负类。下面分析一下儿童的准确率和召回率:

● 检索到儿童,是儿童的数据并识别为儿童(即正类识别为正类),TP=4万。

● 把Other识别成儿童(即负类识别为正类),FP=2万。

● 未检索到儿童,是儿童却识别为Other(即正类识别为负类),FN=1万。

● 把Other识别为Other(负类识别为负类,TN=8万)。

精确率可以解释为,在所有判别为儿童的数据中是儿童的比例,精确度=TP/(TP+FP)=66.67%;召回率可解释为,在所有儿童相关的数据中,判别为儿童的比例,召回率=TP/(TP+FN)=80%。

一般来说,我们不可能同时提高所有上面介绍的指标,比如人们希望精确率和召回率都高,最好都是100%,这样代表识别出来的样本确实都是正类别,且所有正类别都被识别出来了,但是现实中这两个指标往往是此消彼长的关系。提高精确率通常会降低召回率值,即使不从数学上去证明一下,从感觉上也能理解,因为这两个指标的目标刚好相反,一个要求尽可能精确,那么要抛弃掉难以决定的、把握不大的样本;而另一个指标要求尽可能识别出所有的正类别,那么就可能带入把握不大的样本。可以想象一下识别垃圾邮件,精确与识别全是难以两全的。

根据实际应用场景,比如医院检测疾病的仪器是宁愿多虚警也要少漏报,因为没病的病人如果错误地检测出有病(虚警),可以通过后续更加仔细地检查进一步排除。比如网贷违约率,相对好用户,我们更关心坏用户,不能错放过任何一个坏用户。因为如果我们过多地将坏用户当成好用户,这样后续可能发生的违约金额会远超过好用户偿还的借贷利息金额,结果得不偿失。召回率越高,代表实际坏用户被预测出来的概率越高,它的含义类似“宁可错杀一千,绝不放过一个”。再比如地震预测,没有谁能准确预测地震的发生,但我们能容忍一定程度的误报,虽然谎报了几次地震,但真的地震来临时,我们没有错过,这样才是我们想要的。

1.6.2 F1 score和ROC曲线

由于存在精确率和召回率两个指标,对于多个模型来说,这两个指标差不多的情况下难以判断哪个更好,于是出现了F1值。假如两个模型识别样本的精确率与召回率分别是:0.6 0.6与0.5 0.7,那么哪个更好呢?于是数学家又定义了一个指标去计算,名叫:F score,常见的是F1 score。

F1 score是精确值和召回率的调和均值,它的公式如图1-18所示。

图1-18

对于上面的两个例子,F1 score分别是:

● precision=0.6 recall=0.6时,F1 score=0.60。

● precision=0.5 recall=0.7时,F1 score=0.58。

显然precision=0.6 recall=0.6的模型效果相对稍微好一点。

ROC曲线

ROC曲线起源于第二次世界大战时期雷达兵对雷达的信号判断。当时每一个雷达兵的任务就是去解析雷达的信号,但是当时的雷达技术还没有那么先进,存在很多噪声(比如一只大鸟飞过),所以每当有信号出现在雷达屏幕上,雷达兵就需要对其进行破译。有的雷达兵比较谨慎,凡是有信号过来,他都会倾向于解析成是敌军轰炸机,有的雷达兵又比较神经大条,会倾向于解析成是飞鸟。这个时候,雷达兵的上司就很头大了,他急需一套评估指标来帮助他汇总每一个雷达兵的预测信息,以及来评估这台雷达的可靠性。于是,最早的ROC曲线分析方法就诞生了,用来作为评估雷达可靠性的指标,在那之后,ROC曲线就被广泛运用于医学以及机器学习领域。

ROC的全称是Receiver Operating Characteristic Curve,中文名字叫“受试者工作特征曲线”,顾名思义,其主要的分析方法就是画这条特征曲线,图样示例如图1-19所示。可以看到该曲线的横坐标为假阳性率(False Positive Rate,FPR),负例分错的概率=FP/(FP+TN),俗称假警报率。纵坐标为真阳性率(True Positive Rate,TPR),正例分对的概率=TP/(TP+FN),其实就是查全率(召回率Recall),预测对的正例数占真正的正例数的比率。

图1-19

如果是随机分类(比如投掷硬币),没有进行任何学习器,FPR=TPR,即正例分对和负例分错概率相同,预测出来的正例负例和正例负例本身的分布是一致的,所以是一条45°的直线。因此,ROC曲线越向上远离这条45°直线,说明用了这个学习器在很小的代价(负例分错为正例,横轴)下达到了相对较大的查全率(TPR)。

举一个简单的例子方便大家的理解,还是刚才雷达的例子。假设现在有10个雷达信号警报,其中8个是真的轰炸机(P是真实正样本的个数)来了,2个是老鹰(N是真实负样本的个数)飞过,经过某分析员解析雷达的信号,判断出9个信号是轰炸机,剩下1个是老鹰,其中被判定为轰炸机的信号中,有1个其实是老鹰的信号(FP=1,FP是N个负样本中被分类器预测为正样本的个数),而剩下8个确实是轰炸机信号(TP=8,TP是P个正样本中被分类器预测为正样本的个数)。因此可以计算出FPR为0.5,TPR为1,而(0.5,1)就对应ROC曲线上一点。对于敏锐的雷达系统来说,我们肯定希望它能把所有的敌方轰炸机来袭都感知到并预测出来,即TPR越高越好,但我们又不希望把飞过的老鹰也当成轰炸机来预警,即FRP越低越好。这两个坐标值其实蕴含了相互制约的一个概念。

当绘制完成曲线后,就会对模型有一个定性的分析。ROC曲线的应用场景有很多,根据上述的定义,其最直观的应用就是能反映模型在选取不同阈值的时候其敏感性(Sensitivity,FPR)和其精确性(Specificity,TPR)的趋势走向。ROC曲线还有一个巨大的优势就是,当正负样本的分布发生变化时,其形状能够基本保持不变。 Upep9M0suthmC3K+inQ2Q9ZKvw9gPfEO1jshXSrK928pbmB05BAu8D+PlHtVXgls

点击中间区域
呼出菜单
上一章
目录
下一章
×