模型评估与选择
参考西瓜书与 AndrewNG ML 课程
1.经验误差与过拟合
2.评估方法
以测试集来测试学习器对新样本的判别能力,以测试误差作为泛化误差的近似。通常假设测试样本也是从样本真实分布的独立同分布采样获得。
需要注意测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。
于是需要对数据D进行划分出训练集S和测试集T。
直接将数据集D划分为两个互斥的集合S和T。在S训练出模型,用T评估测试误差。
需要注意,训练/测试集应该尽可能保持数据的一致性,避免由于数据划分过程引入产生额外的偏差而对最终结果产生影响。
单次留出法往往结果不够准确,一般采用若干次随机划分、重复实验评估取平局值。但是S与T的取值一般是2/3~4/5用于S,剩余用于测试.
将D划分为k个大小相似的互斥子集(分层采样)。每次取k-1个子集做训练集,剩下1个做测试集,进行k次训练和测试,最终返回均值,也称作“k折交叉验证”。交叉验证的稳定和保真性取决于k,k一般取值为10,其他的有5,20等。
将数据进行划分通常要随机使用不同的划分p次,取p次k折交叉验证均值,如“10次10折交叉验证”。
若D包含m个样本,k=m称作“留一法”,该方法不收样本划分方式的影响。往往认为比较准确,但是数据集交大时候开销过大。另外NFL表明未必比其他评估算法准确。
减少样本S和T规模不同造成的影响。
具体步骤如下:
给定包含m个样本的数据集D,我们对他进行采样产生数据集D’:每次随机从D中挑选一个样本个样本,将其拷贝放到D’中,然后再将该样本重新放回初始数据集D,使得该样本在下次采样时候仍有可能被采到;这个过程重复m次以后就得到包含m个样本的D’。显然D中有一部分样本会在D‘中重复出现多次,而一些则不会出现,不会出现的概率是:
limm→∞(1−1m)→1e≈0.368
即原始数据集中有36.8%不会出现在D’中。
于是我们可以用D’做训练集,D/D’做测试集,这样实际评估的模型与期望评估的模型都是用m个样本。而仍有1/3没在训练集中的样本用于测试。这样的测试结果称作“包外估计”。
优点:
- 数据集较小,难以划分训练、测试集时很有用
能从原始数据集产生多个不同训练集,对集成学习等有很大好处
缺点:
改变了原始数据集分布,会引入估计误差。
因此,在初始数据量足够时,留出法和交叉验证使用更多。2.4.调参与最终模型