第二章 模型评估与选择

2018-08-15  本文已影响0人  康君爱上了蕊酱

经验误差与过拟合

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

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

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

评估方法

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

性能度量

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

回归中的常用性能度量是均方误差,定义式为: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)为概率密度。

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

我们可以通过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,需要下面两个定义,真正例率指正例中被正确调处的比率,定义式为: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}

比较检验

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

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

偏差与方差

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

上一篇下一篇

猜你喜欢

热点阅读