第二章 模型评估与选择

经验误差与过拟合

首先在分类机器学习中,引入了两个概念,错误率:分类错误的样本数占总样本数的比例。其表达式为:E = \frac{a}{m}。其中a为分类错误样本数,m为总样本数。与之相对应的就是精度:分类正确的样本数占总样本数的比例。也就是:1-E

然后拓展到一般情况就是误差:机器学习预测的输出和样本的真实输出之间的差异。而误差又可分为训练误差(经验误差):在训练集上产生的误差和泛化误差:在测试集上产生的误差。机器学习的目的是尽力减小泛化误差从而试预测的结果更加准确,但是机器学习的过程中并不知道新样本的信息,所以能做的只能是通过控制训练误差。

当误差比较大的时候,证明机器学习过程并没有很好的掌握对象的一般规律,并不能对新样本进行有效的预测,这种现象被称为欠拟合。同时误差并不是越小越好,机器学习的过程是要学习到对象的一般规律,当误差非常小的时候就意味着,模型将训练集中对象特有的性质也进行了学习,模型的泛化性能就会下降,这种现象成为过拟合。欠拟合可以通过改进学习方法进行完善,但是过拟合是无法避免的,因为如果承认过拟合解决,就等于承认可以通过经验误差最小化来获得最优解。因此训练误差并不能作为评估模型的标准,接下来就介绍一些可行的评估方法。

评估方法

想要得知得到模型的性能,我们就需要用一些一致的样本对其进行测试。主要的思路就是从训练集中抽出一部分作为测试集,对训练出的结果进行测试。方法主要有:

  • 留出法
    留出法就是将数据集D分为互斥的两个子集,训练集S和测试集T。在划分的时候要保证S和T的分布和D都保持一致,保持类别比例一致,这一点我们可以通过分层抽样来确保,即从数据集的不同类中以相同的比例分割。为了使结果更加可靠,进行多次划分,然后对多次的结果取平均。然后关键的地方就是S和T之间的比例,S比较多的时候,训练结果和D更接近,但是相对用于测试的T的数目减小,结果的稳定性就会下降;S比较少的时候,训练的结果和D就会原理,保真性就会下降。因此常把2/3~4/5的样本作为训练集剩下的用来作为测试集。
  • 交叉验证法
    交叉验证法就是将训练集D均分为k个子集,然后每次取其中1个子集作为T,k-1个子集作为S,进行k次训练,然后这个k次训练进行p次重复,最后对重复结果取平均,称为“p次k折交叉验证”。同样,这个过程子集的划分也要保证分布的一致。这个方法有一个特例,叫做留一法,就是将一个样本作为一个子集,这种方法最接近期望,但是计算量十分大。
  • 自助法
    自助法就是有放回的每次从数据集D中抽取一个样本放入D'中,重复进行m次。D'作为训练集,D\D'作为验证集。其中:\lim_{m \to \infty}(1- \frac{1}{m})^m = \frac{1}{e} \approx 0.368。因此T中大约有1/3的样本,且在训练集中没有出现,因此称为“包外估计”。这种方法使得小样本量的数据集也能进行机器学习,但是由于改变了子集的分布,所以获得的结果相对于上面两中方法并不可靠。
  • 调参与最终模型
    在进行机器学习的过程中许多算法都需要设置参数,不同的参数设置,最后就会得到不同的模型(注意算法的参数和模型的参数不同)。通常获取参数的方法是,采用一定步长的参数,对每种参数进行训练,选择所有得到的模型中最好的对应的参数作为设置参数。获得参数后,把数据集D作为训练集再次训练得到最后的模型。

性能度量

得到了模型之后,我们还需要对模型的性能做一个评估,一些用来衡量模型性能的标准就叫做性能度量。当选择不同的性能度量的时候,模型的评价结果可能会不同,因此需要根据任务需求选择合适的性能度量。

回归中的常用性能度量是均方误差,定义式为:E(f; D)=\frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2。更一般的表达形式为:E(f,D)=\int_{\infty \to D}(f(x)-y)^2p(x)dx,其中p(x)为概率密度。

分类中的度量比较多种多样:

  • 错误率和精度
    错误率和精度在前面提高过,对于一个数据集D,错误率的定义为:E(f; D)=\frac{1}{m}\sum_{i=1}^m(f(x_i) \neq y_i),一般形式为:E(f,D)=\int_{\infty \to D}(f(x) \neq y)p(x)dx,精度的定义为:acc(f; D)=\frac{1}{m}\sum_{i=1}^m(f(x_i) = y_i),一般形式为:E(f,D)=\int_{\infty \to D}(f(x)=y)p(x)dx
  • 查准率、查全率与F1
    错误率只能反映这个模型的预测的整体情况,当我们想要知道某一中分类中,有多少被预测挑中,或着挑出的有多少是正确的,就引入了两个新概念。差准率为预测的真正例占预测的所有正例的比例,定义为:P= \frac{TP}{TP+FP}查全率为预测的真正例占所有真正例的比例,定义为:R=\frac{TP}{TP+FN}。这两个率呈现一种你增我减的规律,这很好理解。

我们可以通过P-R图来描述两个率。制作方法:首先按照预测中最可能为正例->不可能为正例的方式将所有样本排序,然后我们逐次添加一个样本,都视为正例样本,每次计算查准率和查全率,制作P-R图。

有了P-R图之后,我们就可以通过不同模型的P-R曲线来比较它们的性能:完全外包的曲线对应的模型性能优于被包的曲线对应的模型;如果曲线存在交叉,可以通过计算覆盖面积来比较,面积大的性能优,介于面积计算难度大,提出了平衡点的概念,以及基于平衡点的F1F_\beta

平衡点是当查全率和查准率相等的点,这个点对应的额数值越大,可以认为这个模型越好。对平衡点进行调和平均优化就形成了F1\frac1{F1}=\frac12\cdot(\frac1P+\frac1R),即:F1=\frac{2\times P \times R}{P+R}=\frac{2 \times TP}{样例总数+TP-TN}。对平衡点进行加权调和平均优化就形成了F_\beta:\frac1{F_\beta}=\frac1{1+\beta^2}(\frac1P+\frac{\beta^2}{R}),即:F_\beta=\frac{(1+\beta^2) \times P \times R}{(\beta^2 \times P)+R}。通过\beta的调整我们就可以选择查全率和查准率那个更重要,从而符合实际问题需要。

很多时候我们对分类进行多次训练,因此,查全率和查准率的均值取值就有了两种方法:“宏”是指对每次计算得到的查准率,查全率,F1取平均值;“微”是指对每次的TP、FP、TN、FN取均值再计算查准率,查全率,F1

  • ROC和AUG
    有的时候我们的目的是通过学习给出一个预测值,然后通过和某个阈值进行对比,来区分正反例,这个时候相当于对所有样本进行一个排序然后通过一个阈值截断,阈值通过实际任务确定,因此对样本的排序质量就集中反映了模型的性能,为了应对这种需求研发出了ROC

为了理解ROC,需要下面两个定义,真正例率指正例中被正确调处的比率,定义式为:TPR=\frac{TP}{TP+FN}假正例率指反例中被错挑为正例的比率,定义式为:TPR=\frac{FP}{TN+FP}

ROC的做法和P-R图类似:首先一个数据集有给定的a个正例,b个反例,先将所有例子视为反例,每次按顺序将一个样本视为正例,如果是真正例坐标为(x+\frac1a,y),如果是假正例坐标为(x,y+\frac1b),最终得到ROC图。

然后我们需要通过ROC来比较模型之间的优劣,对这种图的整体理解是每有一个真正例纵坐标增加一个单位,每有一个假正例横坐标增加一个单位。因此,曲线完全外包的时候,外部曲线对应的模型优,存在交叉的时候,覆盖面积比较大的优。因此引入AUG,即ROC曲线覆盖的面积,它的计算公式为:AUG=\frac12 \sum_{i=1}^{m-1}(x_{i+1}-x_i)\cdot(y_i+y_{i+1})\。同时定义了一个用来描述排序误差的“损失”,计算公式为:l_{rank}=\frac1{m^+m^-}\sum_{x^+{\in}D^+}\sum_{x^-{\in}D^-}((f(x^-)<f(x^-))+\frac12(f(x^+)=f(x^-))),这个损失代表的就是ROC曲线之上的面积就,AUC=1-l_{rank}

  • 代价敏感错误率与代价曲线
    引入一个概念,“非均等代价”:不同错误分类付出的代价不同的现象。与上述各种度量不同,每种错误相当于有了自己的权重,不能简单的将所有的错误简单的合并。这里用cost_{ij}来表示,意义为当把i类错误的认为是j类时付出的代价。cost_{11}就等于0。上述的各种度量就可以拓展为各种代价敏感的度量,例如错误率:E(f;D;cost)=\frac1m(\sum_{x_i \in D^+}(f(x_i) \not= y_i)\times cost_{01}+\sum_{x_i \in D^-}(f(x_i) \not= y_i)\times cost_{10})。为了获得学习器的期望总体代价,使用代价曲线来描述,其中x轴为取值为[0-1]的正例概率代价:P(+)cost=\frac{p\times cost_{01}}{p\times cost_{01}+(1-p)\times cost_{10}},其中p为正例的概率;y轴为取值为[0-1]的归一化代价:cost_{norm}=\frac{FNR\times p\times cost_{01}+FPR \times (1-p)\times cost_{10}}{p\times cost_{01}+(1-p)\times cost_{10}}。不同的FPR,TPR条件,对应一条不同的线段,(0,FPR)到(1,FNR),线段下的面积就是这个条件下的期望代价,所有条件都有一个线段,重合面积就是总期望代价。

比较检验

有了评估方法和性能度量,但是得到的度量都是基于测试集数据,而我们想要的是学习器的泛化性能,那么测试集上证明的学习器对比结果,是否在统计学上就能代表泛化性能的结果。下面介绍用到的假设性检验和机器学习性能比较方法。

  • 单学习器
    二项检验
    t检验
  • 多学习器
    交叉验证t检验
    McNemar检验
  • 多学习器
    Friedman检验
    Nemenji检验

这一部分就是假设检验的那些东西,只不过用来分析机器学习的度量,统计学相关的书中更详细一些。

偏差与方差

学习算法为什么会有这样的性能,通过“偏差-方差分解”来解释学习算法泛化性能。推到过程省略得到:E(f;D)=bias^2 (x)+var(x)+\xi^2。其中偏差度量学习器期望与真实结果的偏离程度,算法本身的拟合能力;方差度量数据变化造成的影响;噪声体现了研究问题的难度。偏差-方差窘境指当训练不足的时候,学习器拟合程度不足,数据变化不会使学习器显著改变,偏差主导,当训练加深,拟合能力逐渐增强,数据变动会被学习器学到,方差主导,训练充足后,拟合能力已经很强,数据的轻微变化也会影响学习器结果,可能会发生过拟合。

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

推荐阅读更多精彩内容