26 第2章模型评估与选择 练/测试集,这就会导致一个窘境:若令训练集S包含绝大多数样本,则训练出 可从“偏差-方差”(参 见2.6节)的角度来理解: 的模型可能更接近于用D训练出的模型,但由于T比较小,评估结果可能不够 稳定准确;若令测试集T多包含一些样本,则训练集S与D差别更大了,被评 估的模型与用D训练出的模型相比可能有较大差别,从而降低了评估结果的保 一般而言,测试集至少 真性(6 delity).这个问题没有完美的解决方案,常见做法是将大约2/3~4/5的 应含30个样例Mitchel, 样本用于训练,剩余样本用于测试. 1997 2.2.2交叉验证法 “交又验证法”(cross validation)先将数据集D划分为k个大小相似的 互斥子集,即D=D1UD2U.UDk,D,nD=8(亿≠).每个子集D:都 尽可能保持数据分布的一致性,即从D中通过分层采样得到.然后,每次用 k一1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得 组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果 的均值.显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于 的取值,为强调这一点,通常把交叉验证法称为“k折交叉验证”(k-fold cross 亦称“k倍交又验证” validation).k最常用的取值是10,此时称为l0折交叉验证;其他常用的k值 有5、20等.图2.2给出了10折交叉验证的示意图. ■ D Da Ds Da Ds Da D:Ds Dy Duo 训练集 测试 D1DD4DaD5D6DDD购Dm→测该结果1 D.D.D.D.D.D.DD.D园A一测浅结米2 D.D.D.D.D.D四凸D☑D]→测孩结I米0, 图2210折交叉验证示意图 与留出法相似,将数据集D划分为k个子集同样存在多种划分方式.为 减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分 重复p次,最终的评估结果是这p次k折交叉验证结果的均值,例如常见的有 “10次10折交叉验证” 法”都是进行了100次训 练/测试。 假定数据集D中包含m个样本,若令k=m,则得到了交叉验证法的 个特例:留一法(Leave-One-Out,简称LOO).显然,留一法不受随机样本划分
2.2评估方法 27 方式的影响,因为m个样本只有唯一的方式划分为m个子集一每个子集包含 一个样本;留一法使用的训练集与初始数据集相比只少了一个样本,这就使得 在绝大多数情况下,留一法中被实际评估的模型与期望评估的用D训练出的模 型很相似.因此,留一法的评估结果往往被认为比较准确。然而,留一法也有其 缺陷:在数据集比较大时,训练m个模型的计算开销可能是难以忍受的(例如数 据集包含1百万个样本,则需训练1百万个模型),而这还是在未考虑算法调参 参见习题2.2, 的情况下.另外,留一法的估计结果也未必永远比其他评估方法准确;“没有免 NFL定理参见1.4节 费的午餐”定理对实验评估方法同样适用. 2.2.3自助法 我们希望评估的是用D训练出的模型.但在留出法和交叉验证法中,由于 保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比D小,这 必然会引入一些因训练样本规模不同而导致的估计偏差.留一法受训练样本规 12章. 模变化的影响较小,但计算复杂度又太高了,有没有什么办法可以减少训练样 本规模不同造成的影响,同时还能比较高效地进行实验估计呢? “自助法”(bootstrapping)是一个比较好的解决方案,它直接以自助采样 Bootstrap太意是“解 带”:这里是在使用德国 法(bootstrap sampling)为基础Efron and Tibshirani,,l993).给定包含m个样 18世纪文学作品《吹牛 本的数据集D,我们对它进行采样产生数据集D:每次随机从D中挑选一个 大王历橙记》 样本,将其拷贝放入D,然后再将该样本放回初始数据集D中,使得该样本在 称“可重复采样”或有 下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m 放回采样” 个样本的数据集D,这就是自助采样的结果.显然,D中有一部分样本会在D 中多次出现,而另一部分样本不出现.可以做一个简单的估计,样本在m次采 样中始终不被采到的概率是(1一品)”,取极限得到 e是自然常数。 典-”+0s, (2.1) 即通过自助采样,初始数据集D中约有36.8%的样本未出现在采样数据集D ”表示集合减法 中.于是我们可将D用作训练集,D八D用作测试集;这样,实际评估的模型与 期望评估的模型都使用m个训练样本,而我们仍有数据总量约1/3的、没在训 练集中出现的样本用于测试.这样的测试结果,亦称“包外估计”(out-of-bag estimate). 自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法 能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处 集成学习参见第8章 然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差.因
子 第2章模型评估与选择 此,在初始数据量足够时,留出法和交叉验证法更常用一些 2.2.4调参与最终模型 大多数学习算法都有些参数(parameter)需要设定,参数配置不同,学得模 型的性能往往有显著差别.因此,在进行模型评估与选择时,除了要对适用学习 算法进行选择,还需对算法参数进行设定,这就是通常所说的“参数调节”或 简称“调参”(parameter tuning. 读者可能马上想到,调参和算法选择没什么本质区别:对每种参数配置都 训练出模型,然后把对应最好模型的参数作为结果.这样的考虑基本是正确的, 但有一点需注意:学习算法的很多参数是在实数范围内取值,因此,对每种参数 配置都训练出模型来是不可行的.现实中常用的做法,是对每个参数选定一个 范围和变化步长,例如在[0,0.2范围内以0.05为步长,则实际要评估的候选参 数值有5个,最终是从这5个候选值中产生选定值.显然,这样选定的参数值往 往不是“最佳”值,但这是在计算开销和性能估计之间进行折中的结果,通过 这个折中,学习过程才变得可行.事实上,即便在进行这样的折中后,调参往往 仍很困难.可以简单估算一下:假定算法有3个参数,每个参数仅考虑5个候选 值,这样对每一组训练/测试集就有53=125个模型需考察;很多强大的学习算 法有大量参数需设定,这将导致极大的调参工程量,以至于在不少应用任务中 制如大型“深度学习 模型甚至有上百亿个参数, 参数调得好不好往往对最终模型性能有关键性影响. 给定包含m个样本的数据集D,在模型评估与选择过程中由于需要留出 部分数据进行评估测试,事实上我们只使用了一部分数据训练模型.因此,在 模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练 模型.这个模型在训练过程中使用了所有m个样本,这才是我们最终提交给用 户的模型. 另外,需注意的是,我们通常把学得模型在实际使用中遇到的数据称为测 试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为“验 证集”(validation set).例如,在研究对比不同算法的泛化性能时,我们用测试 集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分 为训练集和验证集,基于验证集上的性能来进行模型选择和调参 2.3性能度量 对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需 要有衡量模型泛化能力的评价标准,这就是性能度量(performance measure)
2.3性能度量 29 性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往 往会导致不同的评判结果;这意味着模型的“好坏”是相对的,什么样的模型 是好的,不仅取决于算法和数据,还决定于任务需求」 )聚类的性能度量泰见常 在预测任务中,给定样例集D={(c1,1),(x2,2),,(xm,m)},其中头 是示例x:的真实标记.要评估学习器∫的性能,就要把学习器预测结果∫(x) 与真实标记y进行比较. 回归任务最常用的性能度量是“均方误差”(mean squared error) E(f;D)= 15U- (2.2) 更一般的,对于数据分布D和概率密度函数(),均方误差可描述为 E(f:D)= (f (x)-y)2p(z)dx (2.3) 本节下面主要介绍分类任务中常用的性能度量 2.3.1错误率与精度 本章开头提到了错误率和精度,这是分类任务中最常用的两种性能度量 既适用于二分类任务,也适用于多分类任务.错误率是分类错误的样本数占样 本总数的比例,精度则是分类正确的样本数占样本总数的比例。对样例集D,分 类错误率定义为 E(;D)= 1G(e)≠明) (2.4) m 精度则定义为 acc(f;D)= 1分Ue)=别 (2.5) m =1-Ef;D). 更一般的,对于数据分布D和概率密度函数(),错误率与精度可分别描 述为 E(f;D)= I(f(x)≠)p(x)dx, (2.6)
30 第2章模型评估与选择 acc(f;D)= 「If(a)=pdr (2.7) =1-E(f:D) 2.3.2查准率、查全率与F1 错误率和精度虽常用,但并不能满足所有任务需求.以西瓜问题为例,假定 瓜农拉来一车西瓜,我们用训练好的模型对这些西瓜进行判别,显然,错误率衡 量了有多少比例的瓜被判别错误.但是若我们关心的是“挑出的西瓜中有多少 比例是好瓜”,或者“所有好瓜中有多少比例被挑了出来”,那么错误率显然 就不够用了,这时需要使用其他的性能度量, 类似的需求在信息检索、W©b搜索等应用中经常出现,例如在信息检索 中,我们经常会关心“检索出的信息中有多少比例是用户感兴趣的”“用 户感兴趣的信息中有多少被检索出来了”,“查准率”(precision)与“查全 率”(recal)是更为适用于此类需求的性能度量 对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划 分为真正例(true positive)、假正例(false positive)、真反例(true negative)、 假反例(false negative)四种情形,令TP、FP、TN、FN分别表示其对应的 样例数,则显然有TP+FP+TN+FN=样例总数.分类结果的“混淆矩 阵”(confusion matrix)如表2.1所示, 表2.1分类结果混清矩阵 预测结果 真实情况 正例 反例 正例 TP(真正例)FN(假反例) 反例FP(假正例)TN(真反例) 查准率P与查全率R分别定义为 TP P-TP+FP' (2.8) TP R=TP+FN (2.9) 查准率和查全率是一对矛盾的度量。一般来说,查准率高时,查全率往往 偏低;而查全率高时,查准率往往偏低。例如,若希望将好瓜尽可能多地选出来, 则可通过增加选瓜的数量来实现,如果将所有西瓜都选上,那么所有的好瓜也