1.经验误差与过拟合
错误率: 错误样本/样本数
学习器在训练集上的误差叫做 “训练误差”或“经验误差”,在新样本上的误差称为“泛化误差”, 我们希望得到泛化误差小的学习器,而我们能做的是使经验误差最小化,但这样容易导致泛化性能下降,出现“过拟合”现象。
我们要做的就是避免过拟合。机器学习面临的问题通常是NP难甚至更难问题,而有效的学习算法必然是在多项式时间内运行完成,若可彻底避免过拟合,则通过经验误差最小化就能获得最优解,这就意味着我们构造性证明了P=NP。总之就是过拟合不可避免。
在机器学习的模型选择中,理想的解决方案是选择候选模型中泛化误差最小的那个。(问题又来了,我们无法直接获得训练误差
2.评估方法
我们需要测试集和训练集,因为要相对客观,所以测试集应该与训练集尽可能的互斥。可是如果我们只有m个样例的数据集D = {(x1,y1), (x2,y2),…,(xm,ym)},既要训练,又要测试。我们就应该对D进行适当处理,将其分为训练集S和测试集T。
2.1留出法
留出法是直接将D划分为两个互斥的集合S和T。在S上训练后,在T上进行评估误差(作为泛化误差的估计)。
训练/测试集的划分要注意保持数据分布的一致性,就比如在分类任务中至少要保持样本的类别比例类似。如果从采样的角度来看待数据集的划分过程则保留类别比例的采样方式通常称为“分层采样”。
另一个要注意的是单次使用留出法往往不够可靠,所以一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
此外我们希望评估的是用D训练出来的模型的性能,这样S和T的比例问题就比较尴尬。通常我们将大约 2 3 到 4 5 \dfrac{2}{3} 到 \dfrac{4}{5} 32到54的样本用于训练,其余用于测试。
2.2 交叉验证法
将数据集D划分为k个互斥子集(每个子集尽可能保持数据分布的一致性),每次用k-1个子集作为训练集,剩下的一个作为测试集,进行k次训练和测试,这就叫k折交叉验证。k最常用的取值是10,再次就是5、20。
同样,为了减小因样本划分不同而引入的差别,k折交叉验证通常要随即使用不同的划分p次,最终的评估结果是这p次k折交叉验证的均值。10次10折。
留一法在数据集比较小的情况下比较准确,数据大时复杂度过高。
2.3 自助法
我们有一个包含m个样例的数据集D,每次随机从D中选一个样本copy到D‘,重复m次。这样D中的样本约有36.8%未出现在D’中。D’用于训练,D用于测试。
自助法在数据集较小、难以有效划分训练集和测试集时很有用。(集成学习有好处)。因改变了数据集的分布,会引入估计偏差。
。。待更新