泛化误差
学习器在新样本上的误差称为“泛化误差”。
评估方法:
1.留出法
直接将数据集D划分为两个互斥的集合,一个作为训练集S,另一个作为测试集T。
分层采样:
保留类别比例的采样方式通常称为“分层采样”。
单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
我们希望评估的是用D训练出的模型的性能,但留出法需划分训练/测试集,这会导致:若训练集S包含绝大部分样本,那么训练的模型更接近于用D训练的模型,但是测试集T会比较小,评估结果可能不够稳定准确;如果T多些样本,又会导致S与D差别更大,训练的模型可能与用D训练的模型存在差别,降低了评估结果的保真性。但这个问题没有完美的解决方案,常见做法是大约2/3~4/5的样本用于训练,其余用于测试。
2.交叉验证法
与留出法相似,将数据集D划分为k个子集同样存在多种划分方式。为减小因样本划分不同而引入的差别,k折交叉验证通常用随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值,常见的是“10次10折交叉验证”。
3.留一法(交叉验证法的特例)
将交叉验证中的k,设为样本的数量,这样划分子集的方式就唯一且固定了。
这使得,大部分情况下,留一法中被实际评估的模型与期望评估的用D训练出的模型很相似,评估结果往往被认为比较准确。但是数据量大时,训练非常多模型的计算量是难以忍受的,其次NFL原理对于实验评估方法留一法也是适用的,未必永远比其他评估方法准确。
4.自助法
留出法和交叉验证集法,必然会引入因训练样本规模不同而导致的估计偏差;留一法复杂度太高。
所以提出自助法,Bootstrapping,其以自助采样为基础。
自助采样=可重复采样=有放回采样。
自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。可以参考我之前写的文章-集成学习。
但是自助法改变了初始数据集的分布,会引入估计偏差,所以初始数据量足够时,留出法和交叉验证法更为常用。
![](https://i-blog.csdnimg.cn/blog_migrate/2c659232926ea694dadda222a39ec456.png#pic_center)