模型评估与选择

本篇参照周志华《机器学习》第2章编写
主要介绍了机器学习的基础知识。从学习器的性能出发,讲解了不同的评估方法(怎么样划分训练集和测试集来通过测试误差代替泛化误差来评估学习器的性能);然后讲解了性能度量方法(怎么样计算测试误差)。有了评估方法和性能度量方法,我们可以轻松比较不同学习器的性能。

2.1 经验误差与过拟合

学习器的预测结果和样本的实际值的差异叫做:误差(error)。分为以下几种

  • 训练集上的误差叫做“训练误差(training error)”或者“经验误差(empirical error)”
  • 测试集上的误差叫做“测试误差 (test error)”
  • 所有新样本上的误差叫做“泛化误差(generalization error)”
    我们显然想要得到泛化误差最小的学习器,应该从样本中学习到所有潜在样本的“普遍规律”,但是当学习器把训练用的样本学习的“太好的”时候,很可能把训练样本本身的特点当成所有样本普适的特点 这时候就会产生过拟合(overfitting)。
    过拟合问题是当前机器学习主要面临的问题。

2.2 评估方法

现实问题中,我们想要一个泛化误差最小的学习器。但是由于泛化误差的定义来说,所有未见过的样本都应该用来算泛化误差,显然这个泛化误差是不可得的。所以我们用测试集的测试误差代替泛化误差来衡量一个学习器能力的好坏。最好的要求是测试集的样本最好不要在训练集中出现过。
这里举一个栗子来理解一哈。老师给你讲10个题目,现在要考察你对这个知识点的掌握情况,当然不能出这讲过的10个题目,因为你已经掌握了讲过的题目。这个时候最好的衡量你的方法就是选择其他的你没见过的题目,即上面提过的测试集。
但是,实际情况中,我们只有一个包含 m 个样本的数据集 D,所以就要采用合适的方法来划分训练集和测试集。

2.2.1 留出法

即把样本数据集 D 划分为两个互斥的集合,流出一个集合作为训练集S,另一个作为测试集 T。常见的划分方法是:大约 2/3--4/5 的样本作为训练,剩下的样本作为测试。有一个点需要注意,就是为了保持数据分布的一致性,避免由于数据分布引来额外的偏差,我们采取 “分层抽样”。由于划分存在随机性,所以留出法一般要多次随机划分,重复试验,最终取平均值。

2.2.2 交叉验证法

10折交叉验证示意图

注意的是,一次“10折验证” 进行了10次的 训练/测试。

2.2.3 自助法

在前面的“留出法”和“交叉验证法”中,由于要拿一部分样本来做测试,所以实际评估的模型所使用的训练集比D小,这必然会引入一些因为训练样本规模不同而导致产生估计偏差。这个时候我们采用“自助法”。
基本思想是:给定数据集D,做可放回的随机取样,重复 m 次,这样就有一个包含 m 个样本的 D1。


m次取样取极限

可以看到,有大约 1/3 的样本没有出现在 D1中,于是我们用 D1作为训练集,用剩下的 D-D1 作为测试集。
自助法在数据集 D 较小,难以有效划分 测试集/训练集 时很有用。但是由于其随机抽样改变了初始数据集的分布,引入了估计偏差,所以在数据集足够多的时候,一般使用 留出法 和 交叉验证法。

2.2.4 调参

绝大多数学习算法都有参数(parameter)需要设定,不同参数直接导致了学习器性能的显著差别。而“调参”(parameter tuning)也是一步重要的工作。

机器学习中的“参数”分为两种,一种是算法的参数,称为“超参”;另外一种是模型的参数,比如神经网络中的神经元连接权重。前者一般在10个以内,而后者在大型模型中往往非常多。需要注意的是:我们所谓的调参是“调超参”。而模型的参数一般通过我们模型自身的限制条件迭代停止得到。

我们要知道,很多参数是在实数范围内取值的,所以配置出所有参数的所有取值情况是不可能的。一般常用的做法是,对每个参数设置变化范围和步长。比如[0,0.5],步长为0.1。即取值为5个。
最终需要注意的是,定好模型和调参之后,还要用初始的数据集D来重新训练一哈模型,即让最初划分的测试集也用来训练,增强训练效果。举一个栗子:考试之后,要把考试中的题目也都消化掉,即用测试集再训练一遍。

2.3 性能度量

性能度量(performance measure)是衡量学习器泛化能力的评价标准。在对比不同的学习器时,使用不同的性能度量标准往往会导致不同的评判结果。

2.3.1 一般的性能度量指标

在回归问题中,最常用的性能度量是“均方误差(mean squared error)”


MSE

下面介绍分类问题中度量指标的选择。
而在分类任务中,最常用的性能度量指标是 "错误率(error rate)" 和“精度(accuracy)”。二者加和为1。


错误率和精度

错误率和精度2

2.3.2 查准率、查全率、F1

错误率和精度是常用的。考虑这样一个情景:在推荐系统中,我们只关心推送给用户的内容是不是用户感兴趣的(即查准率 precision),或者说用户感兴趣的东西我们推荐了多少(查全率 recall)。

precision & recall

看一下上图,可以发现 precision 代表预测正例中,预测准确的概率;recall 代表实际正例中,预测准确的概率。这里需要注意的是,实际正例= TP + FN
显而易见,precsion & recall 是一对矛盾的参数。如果想要尽量推荐用户喜欢的内容,那就推荐一些有把握的,这样的话就漏掉了一些用户感兴趣的内容,recall 就低了;反之同理。
而“P-R曲线”正是描述二者之间关系变化的曲线。根据学习器的预测结果对样例进行排序,调整判决的 threshold,得到不同的分类结果,对应不同的 P-R,最终根据不同的(P,R)来作图即可。
P-R曲线图

那如何根据 P-R曲线图来衡量学习器的性能好坏。极端情况下,如果一个学习器的 P-R 曲线完全包住另外一个的,则这个学习器的性能优于另外一个(对应相同的P有更好的R,相同的R有更好的P)。然而一般情况下,我们用“平衡点(Break Even Point)”来衡量,即 P=R 的点。显然图中 A 学习器的性能最好。 越靠近(1,1)点越好,查的又准又全。
P&R 指标会出现矛盾的情况,我们需要综合考量,最常见的方法就是 F-Measure,是 P&R的加权调和平均。
F-Measure

特别的,当β=1时,就是我们常用的 F1 度量,当 F1的值较高时,模型的性能越好。
F1

常常我们会遇到多个二分类混淆矩阵,例如多次训练或者在多个数据集上面训练,此时需要估计全局的性能,有两种解决方法:宏观和微。简单理解,宏观就是说先计算每个混淆矩阵的 P-R,然后算出平均P和平均 R 再求 F1。微观则是求出平均 TP/FP/TN/FN,再求 F1。

2.3.3 ROC 和 AUC

学习器都是产生一系列预测实值或者概率,进行排序,然后根据不同的 cut point 来划分最终的预测结果。如果我们更加重视 precision 就可以把 cut point 选的靠前一些。因此这些预测的实值的排序就代表着学习器的泛化性能的好坏,而 ROC 曲线就是从这个角度出发,衡量学习器的性能。即 ROC 曲线偏重研究基于测试样本评估值的排序好坏。
总之,从另外一个角度来研究 学习器 的性能好坏。与 ROC 是不同的角度。


TPR & FPR

ROC

左上角(0,1)称为 perfect classfication点,即预测全部为True Positive。
性能比较,包住也是代表绝对优于。通常我们用曲线包围的面积AUC(Area Under ROC curve)来代表性能。


AUC

2.3.4 代价敏感错误率 与 代价曲线

上面的方法中,我们将学习器犯的错误同等对待。但实际上,将正确预测称为错误和将错误预测成为正确所付出的代价往往是天壤之别。以二分裂为例,我们引入了代价矩阵(cost matrix)。


cost matrix

在非均等代价的条件下,我们追求整体代价最小化。于是我们定义“代价敏感”错误率为:


代价敏感错误率

在非均等代价下,ROC 曲线演化称为“代价曲线”。其中横轴是取值在[0,1] 之间的正例概率代价,式子中的 p 表示正例的概率;纵轴是取值为[0,1]的归一化代价。二者都是基于 ROC 曲线中的横轴 TPR 和纵轴 FPR 算出来的。
代价曲线与ROC对应关系

ROC曲线上的每一个点对应代价曲线的一条线段。所有线段围城的面积即为所有添加下学习器的期望总体代价。


代价曲线

2.4 比较检验

这一节是基于这几个点来说的:

  • 测试集性能 != 泛化性能(可以代替但是不等于)
  • 测试集性能与测试集的选取有关
  • 机器学习的算法有随机性
    所以这一节就说说,在两个学习器的测试性能有一个比较,但是不是绝对代表二者的泛化性能的比较。在多大的置信区间上,多高的概率上,一个优于另外一个。就是之前概率论那些 假设检验。这里不多说。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容