机器学习——模型评估与选择

经验误差与过拟合

错误率为分类错误的样本数占样本总数的比例,相应的精度=1-错误率,模型的实际预测输出与样本的真实输出之间的差异称为“误差”,模型在训练集上的误差称为“训练误差”,在新样本上的误差称为“泛化误差”。我们希望得到在新样本上表现好的学习器,也就是泛化误差小的学习器,但是并不是泛化误差越小越好,我们应该尽可能出训练样本中学出适用于所有潜在样本的“普遍规律”,然而模型把训练样本学的太好,很可能把训练完本自身的特点当做所有潜在样本都具有的一般性质,这样就导致了泛化性能下降,这种现象称为“过拟合”,相对立的是“欠拟合”,是指训练样本的一般性质尚未学好。欠拟合比较容易克制,例如在决策树学习中扩展分支、在神经网络中增加训练轮数,然而过拟合是无法避免的,我们所能做的就是尽量“缓解”,在现实生活中,我们往往有有多种学习算法可供选择,对于同一算法,当使用不同参数配置时,也会产生不同的模型。

评估方法

通过“训练集”训练出机器学习模型,通过“测试集”来测试模型对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差近似,当需要注意的是,测试集应该尽可能与测试集互斥,即测试样本尽量不在训练样本中出现、未在训练过程中使用。解释为什么(老师出了10道习题供同学们练习,考试时老师又用同样的这10道题作为考题,这个考试成绩是否能反应出同学们真实情况,机器学习的模型是希望得到泛化能力强的模型,获得举一反三的能力)。

我们一共包含m个样例的数据集D={(x1,y1),{x2,y2}...,(xm,ym)}},既要训练,又要测试,我们通常对D进行适当的处理,从中产出训练集S和测试集T。

留出法

“留出法”直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,D=S∪T,S∩T=∅ 需要注意的是,训练/测试的划分要尽可能的保持数据的一致性,避免应数据的划分过程引入额外的偏差而对最终结果产生影响,也就是两个集合中样本类别比例要相似,这种保留类别比例的采样方式称为“分层采样”。可即使是这样,仍然存在多种划分方式, 例如可以把D中的样本排序,然后把前350个正例放到训练集中,也可以把最后350个正例放到训练集中,.....这不同的划分将导致不同的训练/测试集,模型估计必然会有偏差,

因此,单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复实验取平均值作为留出法的结果。此外我们使用留出法对数据集D进行划分,会有一个很尴尬的局面,当训练集S过多,训练出的模型可能更加接近用D训练出的结局,但是由于测试集T太少,评估结果不够稳定精确;若令训练集T的样本数过多,这训练出的模型和用整个数据集D训练出的模型相差就更加大了,这个问题没有完美的解决方法,常见做法是将2/3~4/5的样本用于训练。

交叉验证法

“交叉验证法”先将数据集D划分为k个大小相似的互斥子集,即 D = D1∪D2....∪Dk, Di ∩ Dj = ∅(i≠j),每个子集 Di 都尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后,每次用k-1 个子集的并集作为训练集,其余的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k 次训练和测试,最终返回的是这k 个测试结果的均值。通常把交叉验证法称为“k折交叉验证”。

与留出法类似,k折交叉验证要随机使用不同的划分重复p次,最终的评估结果是这p 次k 折交叉验证结果的均值。

“留一法”是数据集D包含m个样本,若令 k=m,得到交叉验证的一个特例,留一法不收随机样本划分方式的影响,划分方式为m个子集,每个子集一个样本,使得训练集和初始数据集只少一个样本,所以被训练出的模型很接近实际的评估模型,但是留一法也有缺点,当数据集m很大的时候,根本无法承受训练m个模型的计算(m等于一百万)。

自助法

给定包含m个样本的数据集D,我们对它进行采样产生数据集D': 每次随机从D中挑选一个样本7,将其拷贝放入D' 然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到,这个过程重复执行m 次后,我们就得到了包含m个样本的数据集D',这就是自助采样的结果,显然,D 中有一部分样本会在D'中多次出现,而另一部分样本不出现.可以做一个简单的估计,样本在m 次采样中始终不被采到的概率是取极限得到


即通过自助来样,初始数据集D 中约有36.8% 的样本未出现在采样数据集D'中.于是我们可将D' 用作训练集, D\D' 用作测试集;这样实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有数据总量约1/3 的、没在训练集中出现的样本用于测试.这样的测试结果,亦称"包外估计"

自助法在数据集较小、难以有效划分训练/测试集是很有用;此外,自助法产生的数据集改变了初始数据集的分布,这会引起估计偏差,因此在数据量足够大的时候还是留出法和交叉验证法更常用一些。

调参与最终模型

在进行模型评估与选择的时候,除了要对使用学习算法进行选择,还需对算法参数进行设定,这就是常说的“参数调节”简称“调参”。对每种参数配置都训练出模型,然后把最好的模型作为结果,但是对每种参数训练出模型是不可行的,现实中常用的做法,是对每个参数选定一个范围和变化步长,例如[0,0.2],步长选定0.05,则实际要评估的参数为5个,但即便是这样同样是不可行的,假设一个算法有3个参数,每个参数有5个候选参数,那么一共需要考虑53=125个模型,参数调的不好往往直接影响模型的关键性能。

这就需要在计算开销和性能估计中进行折中考虑。

作者:凌逆战
欢迎任何形式的转载,但请务必注明出处。
出处:https://www.cnblogs.com/LXP-Never/p/9693923.html

推荐阅读