【西瓜书机器学习日记——第二天】
第二章 模型评估和选择
2.1 经验误差和过拟合
学习器在训练集上的误差称为“训练误差”(training error)或者“经验误差”(experical error);在新样本上的误差称为“泛化误差”(generalization error)。我们希望能得到泛化误差小的模型,但这是无法实现的,因为我们并不知道新样本是什么,我们只能得到经验误差,保存经验误差较小的模型。但是遗憾的是,这样的模型在大多数情况下都不好。
在经验误差很小的情况下,学习器将训练集中的绝大多数特征都学习了,导致泛化能力下降,这种现象就称为“过拟合”(overfitting)。与“过拟合”相对的是“欠拟合”,即学习器没有将训练样本的通用特征学习好。欠拟合现象可以通过增加训练轮数来克服,而过拟合则很麻烦,是机器学习面临的关键障碍,无法彻底避免。
2.2 评估方法
设立测试集:通常我们假设测试样本也是从样本真实分布中独立同分布采样而得,然后将模型在测试集上的“测试误差”作为泛化误差的近似,测试集应该尽可能与训练集互斥。假设我们目前拥有数据集D,要对它进行适当划分为训练集S和测试集T,有以下几种方法。
2.2.1 留出法
直接将训练数据划分为S,T,使得D=ST,
=S
T,一般要采用若干次随机划分,重复实验后取平均值作为模型评估的结果。常将2/3~4/5的样本用于训练,其余用于测试。
2.2.2 交叉验证法
将数据集分成k个集合,每个集合轮流做测试集,称为“k折交叉验证”,k最常取值为10,此时称为10折交叉验证,k也可取值为5、20。当k等于D的大小时,称为留一法,适合D较小的情况。
2.2.3 自助法
在给定包含m个样本的数据集中D中随机采样,将得到的样本复制到数据集D'中,使得D'中可能会有重复的样本,也可能会有从来没有被采到的样本,这部分样本在采样m次后所占的比例为(1-1/m)^m,当m无穷大时取极限为1/e,约为36.8%。于是我们可以将D‘作为训练集,将D\D'作为测试集。这种方法使得训练集大小==数据集大小,而留出法和交叉验证法的训练集大小<数据集大小。然而,自助法产生的数据集改变了初始数据集的分布,会引入估计误差。因此在初始数据集足够时,留出法和交叉验证法更常用一些。
2.2.4 调参与最终模型
我们将模型在实际使用时遇到的数据称为测试集,将在模型评估和选择中用于测试的数据集称为“验证集”,基于模型在验证集上的性能来进行模型选择和调参。