最近开始重新看机器学习,并归纳整理。
通常我们为了得到泛化能力比较好的模型,经常会把数据按照某种比例分成训练集和测试集,进而将测试集的测试误差近似作为模型的泛化误差,常用的评估方法有:
留出法、交叉验证法、自助法,具体介绍如下:
-
留出法
直接将数据集分成两个互斥的集合,其中一个作为训练集,一个作为测试集,使用训练集训练出模型后,用测试集评估模型的测试误差,作为对泛化误差的估计。
优点:
评估结果一般是准确的。
缺点:
在数据集比较大时,计算开销大。
注:
- 训练集和测试集的划分要尽可能保持数据分布的一致性;
- 训练集和测试集的划分比例一般为2:1~4:1,并且数据有多种划分方式,不同的划分方式会对模型有不同的影响,所以在使用留出法时,一般采用若干次随机划分、重复进行实验评估后取均值作为留出法的评估结果。
-
交叉验证法(K折交叉验证)
将数据集D分成k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,然后每次使用k-1个子集的并集作为训练集,剩余的那个子集作为测试集,最终将这k个子集的测试结果的均值作为最终的测试结果。
-
自助法(可重复采样或有放回采样)
给定m个样本的数据集D,对D采样产生数据集D`:每次随机从D中挑选一个样本,将其拷贝放入D`,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍可能被采到,这个过程重复m次,就得到了包含m个样本的数据集D`,并将次作为训练集,然后D中除了D`以外的的剩余部分作为测试集。
优点:
能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大好处;
在数据集较小、难以有效划分训练集和测试集时很有用。
缺点:
改变了初始数据集的分布,会引入估计误差。