模型评估-留出法

来源:互联网 发布:mysql 5.7 for linux 编辑:程序博客网 时间:2024/05/26 05:51

对于一个机器学习问题,我们通常有数据集D(用于训练模型),但我们还需要评估模型,因此不能把整个D用于训练,因为拿训练过的数据再去评估必然无效。那么最基本的方法就是留出法:

把D划分为两部分:训练集S和测试集T,其中SUT=D,S∩T=Φ。

划分时一般不宜随机划分,因为如果T中正好只取到某一种特殊类型数据,从而带来了额外的误差。此时处理方法要视具体情况而定,如当数据明显的分为有限类时,可以采用分层抽样方式选择测试数据,保证数据分布比例的平衡。

大多情形下,难以得到合适的测试集,此时一般多次重复划分-训练-测试求误差的步骤,取误差的平均值。

留出法带来一个无法避免的矛盾:

我们初始动机是“评估数据集D训练出的模型”但是我们把数据集分开了,导致:

Ⅰ 若 S较大T较小,那么S训练出的模型与D训练的模型相似,但是T太少,评估结果偶然性大,不准确。

Ⅱ 若S较小T较大,那么S与D训练出的模型差异较大,T的评估失去意义。

这种矛盾是无法避免的。常用做法是选择1/5-1/3左右数据用于评估。