1.经验误差与过拟合
把学习器在训练集上的误差称为“训练误差”或“经验误差”,而在新样本上的误差称为“泛化误差”。我们应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,这样才能在遇到新样本时做出正确的判别,此时很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。这种现象在机器学习中称为“过拟合”。与“过拟合”相对的是“欠拟合”,这是指对训练样本的一般性质尚未学好。
有多种因素可能导致过拟合,其中最常见的情况是由于学习能力过于强大,以至于把训练样本所包含的不太一般的特性都学到了,而欠拟合则通常是由于学习能力低下而造成的。
2.评估方法
通常,可通过实验测试来对学习器的泛化误差进行评估并进而做出选择。为此需要使用一个“测试集”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。介绍几种常见的做法。
2.1留出法
“留出法”直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集,另一个作为测试集。在训练集上训练处模型后,用测试集来评估其测试误差,作为对泛化误差的估计。
需要注意的是,训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如保持类别比例的采样方式(分层采样)。
另一个需要注意的问题是,即便在给定训练/测试集的样本比例后,仍存在多种方式对初始数据集的分割。单次使用留出法得到的估计结果往往不够稳定可靠,在使用留存法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
一般而言,测试集至少包含30个样例,常见做法是将大约2/3~4/5的样本用于训练,剩余样本用于测试。
2.2交叉验证法
“交叉验证法”先将数据集划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,即通过分层采样得到。然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,为强调这一点,通常把交叉验证法称为“k折交叉验证”。k最常用的取值是10,此时称为10折交叉验证法。
与留出法相似,将数据集划分为k个子集同样存在多种划分方式。为减少因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这P次k折交叉验证结果的均值。
交叉验证法的特例:留一法。每个子集包含一个样本,使用的训练集比初始数据集相比只少了样本。留一法的评估结果往往被认为比较准确,然而在大数据集上的计算开销是难以忍受的。
2.3自助法
“自助法”可以减少训练样本规模不同造成的影响,同时还能比较高效的进行实验估计。给定包含m个样本的数据集,每次随机从数据集挑选一个样本,将其拷贝放入训练集。重复执行m次后,就得到了包含m个样本的训练集,这就是自助采样的结果。此时原始数据集一部分样本在训练集中不会出现(约有36.8%)。这样实际评估的模型与期望评估的模型都使用M个训练样本,而仍有数据总量约1/3的、没在训练集中出现的样本用于测试。这样的测试结果,亦称为“包外估计”。
自助法在数据集较小、难以有效地划分训练/测试集时很有用;然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此,在初始数据量足够时,留出法和交叉验证法更常用一些。
3.性能度量
对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量泛化能力的评价指标,这就是性能度量。性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;这意味着模型的“好坏”是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。评估学习器的性能,就要把学习器预测结果与真实标记进行比较。回归任务最常用的性能度量是“均方误差”,下面主要介绍分类任务中常用的性能度量。
3.1错误率和精度
错误率是分类错误的样本数虎占样本总数的比例,精度则是分类正确的样本数占样本总数的比例。
3.2查准率、查全率与F1
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)。
查准率P与查全率R分别定义为
查准率和查全率是一对矛盾的度量。一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。
在很多情形下,我们可根据学习率的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在最后的则是学习器认为“最不可能”是正例的样本。按此顺序逐个把样本作为正例进行预测,则每次可以计算出当前的查全率、查准率。以查准率为纵轴、查全率为横轴作图,就能得到查准率-查全率曲线,简称“P-R曲线”。
综合考虑查准率、查全率的性能度量有“平衡点”和F1。平衡点是“查准率=查全率”时的取值。F1是查准率和查全率的调和平均。
3.3ROC和AUC
ROC全称是“受试者工作特征”曲线,与P-R曲线相似,根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算“真正例率”和“假正例率”的值,分别以它们为纵轴和横轴,就得到“ROC曲线”。“真正例率”和“假正例率”分别定义为:
显示的ROC曲线的图称为“ROC图”,如下图:
合理比较两个学习器的优劣较为合理的判据是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)。
3.4代价敏感错误率与代价曲线
在现实如任务中常会遇到这样的情况:不同类型的错误造成的后果不同。为了权衡不同类型错误造成的不同损失,可为错误赋予“非均等代价”。
以二分类任务为例,可根据任务的领域知识设定一个“代价矩阵”,如下图所示:
代价曲线图的横轴和纵轴分别为正例概率代价和归一化代价。
4.偏差与方差
“偏差-方差分解”是解释学习算法泛化性能的重要工具,对学习算法的期望泛化错误率进行拆解。泛化误差可分解为偏差、方差与噪声之和。偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据劳动所造成的影响;噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。一般来说,偏差与方差是有冲突的,这称为偏差-方差窘境。给定学习任务,在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率;随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,方差逐渐主导了泛化错误率;在训练程度充足后,学习器的拟合能力已非常强,训练数据发生轻微扰动都会导致学习器发生显著变化,若训练数据自身的、非全局的特性被学习器学到了,则将发生过拟合。
网友评论