【西瓜书笔记】——第二章:模型评估与选择

【索引】
本节涉及核心内容:
1、评估方法(留出法、交叉验证法……)
2、性能度量方式(错误率与精度、查准率P与查全率R、ROC曲线……)


1、经验误差与过拟合

错误率:分类错误的样本数占样本总数的比例
精度:精度=1-错误率

误差:学习器的实际预测输出与样本的真是输出之间的差异
其中:
训练误差经验误差:指的是学习器在训练集上的误差
泛化误差:指的是学习器在新样本上的误差

因此,我们希望得到泛化误差小的学习器,但在事先不知道新样本是什么样的情况下智能努力使经验误差最小化。为了达到该目的,应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”。

然而,当学习器把训练样本学的“太好”了的时候,可能已经把训练样本自身的一些特点当作所有潜在样本都会具有的一般性质,这样会导致泛化性能下降。
过拟合:把训练样本自身特点当作将潜在样本具有的一般性质,从而导致泛化性能下降(就是学的太好了,以至于一根筋、死脑筋)
欠拟合:对训练样本的一般性质尚未学好(学的才粗糙了,不具备举一反三的辨识能力)
通常情况下,欠拟合比较容易克服,而过拟合是目前机器学习领域所面临的关键障碍,且过拟合是无法彻底避免的,我们所能做到的就只是缓解或减小其风险。可否再多项式时间内解决的算法决定了此类问题是不是P/NP问题。而机器学习通常面临的问题都是NP难甚至更难,因此若想避免过拟合,那么经验误差最小化就必须要能获得最优解,这就意味着需要构造性地证明P=NP。但实际上P≠NP,那么过拟合就是不可避免的。


2、评估方法

【引言】在现实任务中,我们往往有多种学习算法可供选择,甚至对同一个学习算法,当使用不同的参数配置时,也会产生不同的模型,那么,我们该选用哪一个学习算法、使用哪一种参数配置呢?这就机器学习中的模型选择问题。理想的解决方案是对候选模型的泛化误差进行评估,然后选择泛化误差最小模型,但由于无法直接获得,以及过拟合现象的存在,这个过程往往没有那么简单。

简单说来,泛化误差无法直接获得是因为必须先有训练数据的模拟,但是训练数据并非标准数据。因此机器学习没有一个固定的、准确衡量的标准来定义对于一个新样本而言,其泛化结果是否正确。(就像考试永远不会考原题一样)

通过“测试集”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。通常我们假设测试样本也是从样本真实分布中独立同分布采样而得,但要注意的是,测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。
因此,我们需要一个能够举一反三地模型,而非只会死记硬背的模型。


留出法

留出法直接将数据集D划分成两个互斥的集合,其中一个作为训练集S,另一个作为测试集T。通过在S上训练模型,用T来评估测试误差,作为泛化误差的估计。总之,S用来训练出模型,而T用来计算泛化误差
采取分层采样的方式,保留类别比例,即使按不同比例划分训练/测试集,但是正、反例所在集合中的相对比例还是近似的。

训练集和测试集的划分需要尽可能保持数据分布的一致性,目的是为了避免因数据划分过程引入额外的偏差,从而对最终结果产生影响。(例如:不同类别样本的比例要在训练集、测试集中保持一致。试想如果训练集中全是正例而测试集中全是反例,那将无法划分数据)

不过通常的单次留出法所得到的评估结果往往不够稳定可靠,一般需要进行若干次随即划分、重复进行实验评估后取平均值作为留出法的评估结果。

分层采样:保留类别比例的采样方式称为分层采样。

例如对一个集合进行100次划分,每次都是不同的训练/测试集,总共会得出100个结果,而留出法最后的结果就是这100次结果的平均值。

但是留出法的局限在于:集合只局限在D集合中。无论T也好,D也好,调整比例无法保证结果的稳定性(S小了,方差会大;T小了,偏差会大)。一般做法是将大约2/3 ~ 4/5的样本用于判断,剩余的作为测试。


交叉验证法

将数据集D划分为k个大小相似的互斥子集,每个子集Di都尽可能保持数据分布的一致性,即都从D中通过分层采样得到。每次用k-1个子集的并集作为训练集,剩下的那个子集作为测试集,总共可获得k组训练/测试集,并进行训练,得到k个测试结果,以它们的均值作为最后输出

交叉验证法的稳定性和保真性很大程度上取决于k值,通常取值为10的称为“10折交叉验证”,其他也有k=5或k=20等。

与留出法相似,数据集D的划分也存在多种方式,通常会再对k折交叉验证的过程整体进行p次最终的评估计算,最后求这p次的均值。常见的有10次10折交叉验证

10次10折交叉验证的方式相当于进行100次留出法验证

留一法:交叉验证的特例。当数据集不够庞大时,可以采用留一法,即对所有样本进行唯一分类。假设D数据集合中有m个样本,那么只有唯一方式划分为m个子集,每个子集包含一个样本。(其中每一次在17个样本的集合中,将16个作为训练集,1个作为测试集)绝大多数小数据量的情况下,留一法中被实际评估的模型与期望评估的用D训练出的模型很相似


自助法

【引言】在留出法和交叉验证发中,由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集是比D要小的,这必然会引入一些因训练样本规模不同而导致的估计偏差。而留一法的样本规模变化最小(只比D少一个样本),但是复杂度太高。

自助法:直接以自助采样法为基础,给定包含m个样本的数据集D,对它进行采样产生数据集D’:每次随机从D中挑选一个样本,将其拷贝放入D‘,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到。这个过程重复m次后,就得到了包含m个样本的数据集D’(D和D‘的规模相同,但是D’中可能有重复样本,也可能有的样本一次未出现过)。

通过计算可知(书P27,已推导),通过自助采样,初始数据集D中约有36.8%的样本未出现在采集数据集D‘中。

因此,用D‘作为训练集,D\D’作为测试集,以此保证实际评估模型与期望评估模型规模,这样测试的结果称为包外估计

【利】自助法有利于集成学习,因为它能从初始数据集中产生多个不同的训练集;且针对数据集较小、难以有效划分训练/测试集的情况下很有效果。
【弊】自助法产生的数据改变了初始数据集的分布,会引入估计偏差。因此,在数据量较大的情况下,还是使用交叉验证发和留出法较为合适。

个人界定:当数据集规模小于1000样本时,可以考虑使用自助法;当数据集规模小于300样本时,可以考虑使用留一法。当然,具体情况还需考虑计算机处理效率。

调参与最终模型

算法参数配置不同,学得模型的性能也会有显著差别。因为很多参数仅在实数范围内取值,因此对每种参数配置都训练出模型是不可取的,需要给参数选定一个范围变化步长

例如:[0, 0.2]范围内以0.05为步长可以划分为[0, 0.05]、[0.05, 0.1]、[0.1, 0.15]、[0.15, 0.2]这4个区间,同时产生了0、0.05、0.1、0.15、0.2这5个候选值,然后在其中产生选定值。

这样产生的选定值往往不是最佳值,但也是综合了计算开销和性能估计之间进行折中的结果。

试想,如果就像上述例子所说的5个候选值,而对于某一个算法,有3个参数需要调,那么就有5*5*5=125个模型需要考察,这将需要很强大的学习过程以及大量的调参工程。

值得一提的是,往往无论我们采用留出法、交叉验证法还是自助法,通常我们只使用了一部分数据来训练模型因此,还需要在模型选择完成后(此时学习算法、参数配置已经确定的情况下),对整个数据集D进行重新训练,即对全部m个样本进行训练的结果才是我们最终提交给用户的模型。


验证集

模型评估与选择之后,用于评估测试的数据集。
在对比不同模型的泛化能力时,通常利用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,然后基于验证集上的性能来进行模型选择和调参。(具体可以想想为内测公测的过程)


机器学习种的参数

算法参数:也被称为超参数,数目通常在10以内。一般由人工设定多个参数候选值后产生模型。
模型参数:数目可以很多。如大型的深度学习项目中,参数甚至可以达到上百亿。一般通过学习来产生多个候选模型。(如:神经网络在不同轮数时停止训练)

上述两者的调参方式相似,均是产生多个模型之后,基于某种评估方法对参数进行选择


3、性能度量

对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量。

性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果,这意味着模型的好坏是相对的。

模型的好坏取决于:算法、数据和任务需求三大要素。

正如机器学习中的损失函数所提到的,将预测结果f(x)与真实标记y进行比较,正如回归任务中的均方误差MSE;更一般的,对于数据分布D和概率密度分布p(·),均方误差可以描述为其积分(书P29页)。

概率密度:某个随机变量的输出值在某个确定的取值点附近的可能性的函数。落在某个区域内的概率即为概率密度函数在该区域的积分。


3.1错误率与精度

错误率精度是分类任务中最常用的两种性能度量。既适用于二分类任务,页适用于多分类任务。
E ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) E(f;D)=\frac1m\sum_{i=1}^mI(f(x_i)≠y_i) E(f;D)=m1i=1mI(f(xi)̸=yi)
其中 I 为指示函数,若为真,则为1;若为假,则为0。

if (预测结果 ≠ 实际标签)为真
	则 I 返回1
	否则 I 返回0
sum(I 的全部结果)
avg(sum)

然而,错误率仅仅是对整体性能的评估,例如,100个瓜里有90个是好瓜,那么这100个瓜的好瓜率就是90%,相当于精度;而坏瓜率就是10%,相当于错误率。

而有时候,人们更倾向于了解从100个瓜中,选出50个瓜,这50个瓜的好瓜率为多少。

因此,错误率err和精度acc是最常用的用来衡量性能的指标之一。

3.2查准率、查全率和F1

相比较了解整体的准确与否,有时候,人们更希望了解经过检索或挖掘处理后的信息的正确率如何

查准率P:全部已查样例中正例所占的比例,基底为全部所查样例*。
查全率R:全部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值