机器学习研究的主要内容是“学习算法”,例如:线性回归、SVM、神经网络等。学习算法通过经验数据来产生模型。在有新数据时,模型能够提供新的输出。
在现实任务中,选择不同学习算法,或者采用同一学习算法的不同参数,可以获得不同的模型,那如何区分模型的好坏?
一、基本概念总结
1、错误率 : 分类错误样本/总样本。精度 = 1- 错误率。针对训练样本。
2、训练误差:模型在训练集上的误差。
3、泛化误差:模型在新样本上的误差,不可获得。
4、模型过拟合和欠拟合:未学到样本的一般性质,导致泛化能力差。过拟合是把特殊当成一般规律。欠拟合是对一般性质尚未学好。
二、从样本中估计泛化误差的方法
学习的目的是得到泛化误差小的模型,但是在没有新样本用于测试模型时,如何得到模型的泛化误差?下面的方法就是在只有训练样本的情况下评估泛化误差。更进一步,在样本中如何划分测试集,最后使用测试集的误差,作为泛化误差。
1、留出法:
直接划分为两个互斥的集合,一个用于测试,一个用于训练。划分要尽可能保持数据分布的一致性。通过“分层采样”保留不同类别的数据。可随机多次选择学习。
测试集和训练集的划分规律:(2/3 - 4/5的样本作为训练,其余作为测试)
2、交叉验证:
样本D分为k个大小相似的互斥子集,其中k-1子集的并集为训练集,余下为测试集。
下面是一个10折交叉验证:
根据划分方法,重复p次。 P次k折交叉验证结果
留一法:LOO: Leave One Out,用D训练的模型相似,但针对数据集大的样本,计算开销太大。
3、自助法:
留出法和交叉验证减少了训练样本,留一法(LOO)又增加了计算复杂度,为解决上述问题,自助法是一个好的解决方法。
针对m个样本的数据集D,处理过程:
1、随机从D中挑选一个样本,放入D'中。
2、重复执行上述过程m次,获取数据集D'.
则样本在m次采样后,不被采集到的概率大约0.368
D'作为训练集,没有出现在D’中的数据作为测试集。这种测试结果也称为“包外估计”(out-of-estimate)
优缺点和基本应用:
1、自助法在数据集较小、难以划分训练/测试集时很有用。自助法产生的数据集改变初始数据集分布,因此引入估计误差。
2、在数据集足够大时,使用留出法和交叉验证。