机器学习ZEMI003

Chapter 2 模型评估与选择


2.1 经验误差、过拟合、欠拟合

  1. 经验误差:在训练过程中产生的误差被叫做“经验误差”或“训练误差”,在新样本(或测试集)上产生的误差被叫做“泛化误差(generalization error)”。
  2. 拟合:拟合分为‘过拟合overfitting’和‘欠拟合underfitting’,
  • 【过拟合】通俗的解释是—在学习过程中学习了过多的特性,排除了本来应该识别出的对象,如果过拟合非常严重则失去了我们追求的普适性。过拟合的防止比较困难,机器学习基本都是NP问题,所以过拟合只能尽量缓解,但是不可能避免。
  • 【欠拟合】的意思则是和过拟合相反,包含了本来应该被排除的对象,但是解决起来较为简单,例如添加一些条件判断,增加训练轮数等。

模型选择的评估方法

在上文中提到,过拟合是无法避免的,只能缓解,那么如何才能找到较为适合的模型能够达到较好的效果,也就是相对误差最小。

评估方法

从我们前文所知,测试集与训练集需要分开。为什么要分开呢,想象一下,考试的题是平常做过的题,那测试就变得毫无意义,无法评价出平时的训练成果。但是我们的数据往往是有限的,我们既希望让我们的数据集尽量多的参与到训练中,又需要进行测试,而测试集又不可以和训练集重叠,所以一个数据集如何做到既训练又测试呢?我们需要做的就是使用一些方法来划分,尽可能做到上述的效果,下面在书中介绍了三种方法。

  1. 留出法:这个方法简单地解释就是把数据集分为两个完全不重合(互斥)的数据集,分别作为训练集和测试集,但是并不是随机分配,两个数据集的数据分布应保持一致,比如在辨别猫狗的数据集中,猫与狗的分布应保持一致,原数据集包含500个例子,猫与狗都是250只,则我们可以分配400个例子给训练集,100个例子给测试集,则训练集猫狗应是200:200,测试集为50:50。但这种划分不是唯一的,训练集可以相应减少,测试集增加,但比例应保持不变。(一般而言,测试集至少包含30个样例)。
  2. 交叉验证法:这种方法也比较简单易懂,就是把一个大的数据集分为k个小数据集,其中k-1个作为训练集,剩下的一个作为测试集,然后选择下一个作为测试集,剩下的k-1个作为训练集,以此类推。这其中,k的取值就比较重要,在书中提到一般取10作为k的值(具体愿意 不太清楚)。这种方法也被叫做‘k折交叉验证法(k-fold cross validation)’。最终的结果是这10次验证的均值。此外,还有一种交叉验证方法就是留一法(Leave-One-Out,简称LOO),顾名思义,就是使k等于数据集中数据的个数,每次只使用一个作为测试集,剩下的全部作为训练集,这种方法得出的结果与训练整个测试集的期望值最为接近,但是成本过于庞大。
  3. 自助法:这种方法的原理是,加入我们的原始数据集D中有m个数据,每次取其中的一个,取m次,注意每次取的过程中每个数据被取到的概率是一样的,也就是说取到的这新的D/中的m个数据是有可能重复的。我们做一个估计,在原始数据集中没有被取到的概率是 ( 1 − 1 / m ) m (1-1/m)^m (11/m)m对这个式子取极限 l i m ( 1 − 1 / m ) m = 1 / e ≈ 0.368 lim(1-1/m)^m = 1/e \approx 0.368 lim(11/m)m=1/e0.368也就是说,有36.8%的数据没有被取到,我们就用这些数据作为测试集,而训练集依然保持了原有的数量。这种方法在对于比较小的数据集时效果较好。

猜你喜欢

转载自blog.csdn.net/weixin_35436966/article/details/90349129
003