-
经验误差与过拟合
错误率(error rate):E=a/m ,其中 m为样本个数, a为分类错误样本个数
精度(accuracy):精度=1-错误率
误差(error):学习器的实际预测输出与样本的真实输出之间的差异
训练误差(training error):学习器在训练集上的误差,又称为经验误差(empirical error)
泛化误差(generalization):学习器在新样本上的误差
代价(cost),也称为损失指将某种类别样本预测为另一种类别时付出的代价,与之相对应的计算损失的函数是代价函数(损失函数)
风险(risk),在第 7 章提到“决策论中将‘期望损失称风险(risk)” 。 进一步地,学习器在训练集上的风险称为经验风险。在实际训练学习器时,常见的做法是经验风险最小化(Empirical Risk Minimization, ERM)。
过拟合(overfitting)是由于模型的学习能力相对于数据来说过于强大;反过来说,欠拟 合(underfitting)是因为模型的学习能力相对于数据来说过于低下。 -
评估方法
本节介绍了三种模型评估方法:留出法、交叉验证法、自助法(也称 bootstrap )
留出法 (hold-out)直接将数据集 D 划分为两个互斥的集合,其中一个集合作为训练集 S,另一个作为测试集 T,在 S 上训练出模型后,用 T 来评估其测试误差,作为对泛化误差的估计。
需注意的问题是,即使在给定训练/测试集的样本比例后,仍存在多种划分方式对初始数据集D进行分割。不同的划分将导致不同的训练/测试集,相应的模型评估的结果也会有差别。因此,单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验,评估后取平均值作为留出法的评估结果。
交叉验证法(cross validation)先将数据集 D 划分为 k 个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,即从 D 中通过分层采样得到. 然后,每次用 k-1 个子集的并集作为训练集,余下的那个子集作为测试集,这样就可获得 k 组训练/测试集,从而可进行 k 次训练和测试,最终返回的是这 k 个测试结果的均值。交叉验证法评估结果的稳定性和保真性在很大程度上取决于 k 的取值,为强调这一点,通常把交叉验证法称为 " k 折交叉验证"
假定数据集 D 中包含 m 个样本,若令 k=m , 则得到了交叉验证法的一个特例:留一法(Leave-One-Out,简称 LOO). .留一法受训练样本规模变化的影响较小,但计算复杂度又太高了。
自助法(bootstrapping)直接以自助采样法(bootstrap sampling)为基础,给定包含 m 个样本的数据集 D , 我们对它进行采样产生数据集 D’: 每次随机从 D 中挑选一个样本,将其拷贝放入 D’ ,然后再将该样本放回初始数据集 D 中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行 m 次后,我们就得到了包含 m 个样本的数据集 D’,这就是自助采样的结果。D 中有一部分样本会在 D’ 中多次出现,而另一部分样本不出现。
自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此,在初始数据量足够时,留出法和交叉验证法更常用一些。
每个算法按某组参数配置训练之后都会得到一个模型。 算法本身的一些参数,例如 k 近邻的近邻个数 k、支持向量机的参数 C,就是这里提到的算法参数,亦称超参数。
算法训练后会得到一个模型,例如支持向量机最终会得到 w 和 b 具体的值,这就是模型参数。用模型参数就可以对未见样本做预测了。
有时算法需要从候选超参数中选择使用其一,例如支持向量机的参数 C;这时需要先将训练集继续划分为两部分,其中一部分(暂称为小训练集)用于训练使用了不同候选超参数的模型,然后将剩余部分(即验证集)用于测试,进 而基于验证集测试结果选出较好的超参数;然后,再以此超参数为准,在整个训练集上重新训练,再用测试集进行测试其性能。
-
性能度量
回归任务最常用的性能度量是"均方误差" (mean squared error)
对于连续函数,数据分布 D 和概率密度函数 p(.), 均方误差可描述为
分类错误率定义为
精度则定义为
对于连续函数,数据分布 D 和概率密度函数 p(.), 错误率与精度可分别描
述为
查准率 P(也称准确率) 与查全率 R(也称召回率) 分别定义为
查准率和查全率是一对矛盾的度量.一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。
P-R 图直观地显示出学习器在样本总体上的查全率、 查准率。在进行比较时,若一个学习器的 P-R 曲线被另一个学习器的曲线完全"包住" , 则可断言后者的性能优于前者。 例如图中学习器 A 的性能优于学习器 C; 如果两个 学习器的 P-R 曲线发生了交叉,例如图中的 A 与 B ,则难以-般性地断言 两者孰优孰劣。只能在具体的查准率或查全率条件下进行比较然而,在很多情形下,人们往往仍希望把学习器 A 与 B 比出个高低. 这时一个比较合理的判据是比较 P-R 曲线节面积的大小。
"平衡点 " (Break-Event Point,简称 BEP)就是这样一个度量,它是"查准率=查全率"时的取值,例如图中学习器 C 的 BEP 是 0.64,而基于 BEP 的比较,可认为学习器 A 优于 B .但 BEP 还是过于简化了些,更常用的是 F1 度量:
在一些应用中,对查准率和查全率的重视程度有所不同。例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容确是用户感兴趣的,此时查准率更重要;而在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时查全率更重要。 F1 度量的一般形式 --Fß 能让我们表达出对查准率/查全率的不同偏好,它定义为
ß> 1 时查全率有更大影响; ß < 1 时查准率有更大影响。
为权衡不同类型错误所造成的不同损失,可为错误赋予"非均等代价" (unequa1 cost). .在非均等代价下,我们所希望的不再是简单地最小化错误次数,而是希望最小化"总体代价" (total cost). -
比较检验
机器学习中性能比较涉及几个重要因素:首先,我们希望比较的是泛化性能,然而通过实验评估方法我们获得的是测试集上的性能,两者的对比结果可能未必相同;第二,测试 集上的性能与测试集本身的选择有很大关系,且不论使用不同大小的测试集会得到不同的结果,即使用相同大小的测试集,若包含的测试样例不同,测试结果也会有不同;第三,很多机器学习算法本身有一定的随机性,即便用相同的参数设置在同一个测试集上多次运行,其结果也会有不同。统计假设检验(hypothesis test)为我们进行学习器t性能比较提供了重要依据。
假设检验中的"假设"是对学习器泛化错误率分布的某种判断或猜想,例如 “ε= ε0”. 现实任务中我们并不知道学习器的泛化错误率,只能获知其测试错误率。泛化错误率与测试错误率未必相同,但直观上二者接近的可能性应比较大,相差很远的可能性比较小。因此,可根据测试错误率估计出泛化错误率的分布。
泛化错误率为 ε 的学习器在一个样本上犯错的概率是 ε; 则在 m 个测试样本中,泛化错误率为 ε 的学习器被测得测试错误率为 ε 的概率:
若欲求最大似然估计,只需令
,解得
即泛化错误率等于测试错误率 。 -
偏差与方差
不考虑噪声,偏差很大可以认为是由模型欠拟合引起的,方差很大可以认为是由模型过拟合引起的。
学习算法的期望预测为
使用样本数相同的不同训练集产生的方差为
噪声为
期望输出与真实标记的差别称为偏差(bias),即
为便于讨论,假定噪声期望为0,即 E[yD -y] =0. 通过简单的多项式展开合并,可对算法的期望泛化误差进行分解:
即泛化误差可分解为偏差、方差与噪声之和。
回顾偏差、方差、噪声的含义:偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。偏差一方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。
一般来说,偏差与方差是有冲突的。在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率;随着训练程度的加深, 学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,方差 逐渐主导了泛化错误率;在训练程度充足后,学习器的拟合能力已非常强,训练数据发生的轻微扰动都会导致学习器发生显著变化,若训练数据自身的、非全局的特性被学习器学到了,则将发生过拟合。