模型评估

用训练数据集拟合出备选模型的参数,再用验证数据集选出最优模型后,接下来就到了是骡子是马牵出来溜溜,也就是模型评估的阶段了。模型评估中使用的是测试数据集,通过衡量模型在从未出现过的数据上的性能来估计模型的泛化特性。为简便起见,我将以二分类任务为例来说明度量模型性能的不同指标。

二分类任务是最重要也最基础的机器学习任务,其最直观的性能度量指标就是分类的准确率。给定一组训练数据,算法不可能完全正确地划分所有实例,而是会将一部分正例误判为反例,也会将一部分反例误判为正例。分类正确的样本占样本总数的比例是精度(accuracy),分类错误的样本占样本总数的比例是错误率(error rate),两者之和等于 1。

在现实生活中,二分类任务的一个实际应用就是疾病的诊断。你可以回忆一下在“贝叶斯视角下的机器学习”中提到的例子:“Jo 去进行某种疾病的检查。已知检查的准确率是 95%,也就是此病患者的检查结果 95% 会出现阳性,非此病患者的检查结果 95% 会出现阴性,同时在 Jo 的类似人群中,此病的发病率是 1%。如果 Jo 的检查结果呈阳性,那么她患病的概率是多大呢?”

这个例子就是一个典型的二分类问题。根据之前的分析结果,即使 Jo 的检查结果呈现阳性,她患病的概率也只有 16%,如果一个庸医完全按照检查结果判定的话,每 6 个病人里他就要误诊 5 个!(这又是频率主义直观的看法)但是需要注意的是,错误的分类不仅包括假阳性这一种情况,假阴性也要考虑在内——也就是确实生病的患者没有被检查出来的情形,假阳性和假阴性共同构成所有的误分类结果。

那么在 Jo 的例子中,出现假阴性的可能性有多大呢?同样令随机变量 $a$ 表示 Jo 的真实健康状况,$a = 1$ 表示 Jo 生病,$a = 0$ 表示 Jo 没病;令随机变量 $b$ 表示 Jo 的检查结果,$b = 1$ 表示阳性,$b = 0$ 表示阴性。由此可以计算出 Jo 的检查结果呈阴性,但是她患病的概率

$$p(a=1|b=0) = \dfrac{p(b = 0|a=1) \cdot p(a = 1)}{p(b = 0|a=1) \cdot p(a = 1) + p(b = 0|a=0) \cdot p(a = 0)}$$ $$= \dfrac{0.05 \times 0.01}{0.05 \times 0.01 + 0.95 \times 0.99} = 0.053\%$$

可以看出,虽然这个检查容易把没病的人误诊成有病,但把有病的人误诊成没病的概率是极低的。这符合我们一贯的认知:在现实中,假阳性无非就是给患者带来一些不必要的精神压力,通常不会产生更加严重的后果;可假阴性却可能让患者错过最佳的治疗时机,一旦发现便为时已晚。因此,在医学检查中本着“宁可错判,不能放过”的原则,对假阴性的要求比对假阳性的要求更加严格。

不光是在医学中,在很多情况下将正例误判为反例和将反例误判为正例的代价都是不同的,这也是数理统计将分类错误分为一类错误和二类错误的原因。为了更清楚地体现出不同的错误类型的影响,机器学习采用了混淆矩阵(confusion matrix),也叫列联表(contingency table)来对不同的划分结果加以区分。

混淆矩阵(图片来自维基百科)

如上图所示,在混淆矩阵中,所有测试样例被分为真正例(true positive, TP)、假正例(false positive, FP)、假反例(false negative, FN)、真反例(true negative, TN)四大类。真正例和真反例容易理解,假正例指的是样例本身是反例而预测结果是正例,也就是假阳性;假反例指的是样例本身是正例而预测结果是反例,也就是假阴性。

这样的分类能够对机器学习模型的性能做出更加精细的刻画,查准率(precision)和查全率(recall)就是两个具体的刻画指标。

查准率 $P$ 也叫正例预测值(positive predictive value),表示的是真正例占所有预测结果为正例的样例的比值,也就是模型预测结果的准确程度,写成数学表达式是

$$ P = PPV = \dfrac{TP}{TP + FP} $$

查全率 $R$ 也叫真正例率(true positive rate, TPR),表示的是真正例占所有真实情况为正例的样例的比值,也就是模型对真实正例的判断能力,写成数学表达式是

$$ R = TPR = \dfrac{TP}{TP + FN} $$

通俗地说,查准率要求把尽可能少的真实负例判定为预测正例,查全率则要求把尽可能少的真实正例判定为预测负例。

一般情况下,查准率和查全率是鱼和熊掌不可兼得的一对指标。使用比较严苛的判定标准可以提高查准率,比如医学上对青光眼的诊断主要依赖于眼压值,将诊断阈值设定得较高可以保证所有被诊断的患者都是真正的病人,从而得到较高的查准率。可这样做会将症状不那么明显的初期患例都划分为正常范畴,从而导致查全率的大幅下降。

反过来,如果将眼压的诊断阈值设定得较低,稍有症状的患者都会被诊断为病人。这样做固然可以保证真正的病人都被确诊,使查全率接近于 100%,但确诊的病例中也会包含大量的疑似患者,指标稍高的健康人也会被误诊为病人,从而导致查准率的大幅下降。

将查准率和查全率画在同一个平面直角坐标系内,得到的就是 P-R 曲线,它表示了模型可以同时达到的查准率和查全率。如果一个模型的 P-R 曲线能够完全包住另一个模型的曲线,就意味着前者全面地优于后者。可是更普遍的情况是有些模型查全性能较优,而另一些模型查准性能较优,这就需要根据任务本身的特点来加以选择了。

除了 P-R 曲线外,另一个对机器学习模型性能进行可视化的方式是受试者工作特征曲线(receiver operating characteristic curve),简称ROC 曲线。ROC 这个名字来源于曲线的原始用途:判断雷达接收到的信号到底是敌机还是干扰。在机器学习中,这样的场景就演化为所有的样例共同符合一个混合分布,这个混合分布由正例和反例各自服从的单独概率分布叠加组成。此时二分类模型的任务就是确定新来的样本究竟来源于哪个分布。数据中的随机变化在分类器中体现为阈值动态取值的随机变化,分类器的性能则取决于两个概率分布之间的分离程度。

ROC 曲线描述的是真正例率和假正例率之间的关系,也就是收益(真正例)与代价(假正例)之间的关系。所谓的假正例率(false positive rate, FPR)等于假正例和所有真实反例之间的比值,其数学表达式为

$$ FPR = \dfrac{FP}{FP + TN} $$

ROC 空间将 FPR 定义为 $X$ 轴,TPR 定义为 $Y$ 轴。给定一个二元分类模型和它的阈值,就能计算出模型的 FPR 和 TPR,并映射成由 (0, 0)、(0, 1)、(1, 0)、(1, 1) 四个点围成的正方形里。在这个正方形里,从 (0, 0) 到 (1, 1) 的对角线代表了一条分界线,叫作无识别率线,它将 ROC 空间划分为左上/右下两个区域。

无识别率线描述的是随机猜测的模型,以 0.5 的概率将新来的实例判定为正例,这种模型的 TPR 和 FPR 是处处相等的。在无识别率线左上方,所有点的 TPR 都大于 FPR,意味着分类结果优于二选一的随机猜测;而在无识别率线右下方,所有点的 TPR 都小于 FPR,意味着分类结果劣于随机猜测。完美的模型体现在 ROC 空间上的 (0, 1) 点:$FPR = 0$ 意味着没有假正例,没有负例被掺入;$TPR = 1$ 意味着没有假负例,没有正例被遗漏。也就是说,不管分类器输出结果是正例还是反例,都是 100% 完全正确。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容