机器学习读书笔记-1(模型评估与选择)

1、基础关键词

错误率:分类错误的样本数占样本总数的比例。
精度:1 - 错误率
误差
:模型的实际预测输出与样本的真实输出之间的差异。
训练误差、经验误差:模型在训练集上的误差。
泛化误差:模型在新的样本数据上的误差。
过拟合:模型在训练集上的效果逐渐上升,而在测试集上的效果逐渐下降,这种现象在机器学习中称为过拟合。过拟合是由多种因素导致的,其中最常见的情况是由于学习能力过于强大,以致于学习到了训练样本的非一般的特性。过拟合是机器学习面临的关键障碍,各类算法都有一些针对过拟合的措施。不过要认识到,过拟合是无法彻底避免的,我们只能“缓解”。
欠拟合:与过拟合相对,指没有充分学习到训练集上的共有特征,导致模型在训练集上的效果就不好,这种现象称为欠拟合。欠拟合通常是由模型学习率过低导致的,比较容易克服,直接增加训练的轮数即可。
查准率(precision):检索出的信息中有多少是用户感兴趣的。
查全率(recall):用户感感兴趣的信息中有多少被检索出来了。

2、选择模型的评估方法

通常我们可通过实验测试来对学习器的泛化误差进行评估,进而做出选择,为此需要一个测试集来测试学习器对新样本的判别能力,然后以测试集上的测试误差作为泛化误差的近似。测试集当中的样本,尽量在训练集中不出现。关于如何从总样本中选择合适测试集,下面介绍了几种方法。

(1)留出法

留出法直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个集合作为测试集T。模型在训练集S上训练,然后用测试集T来评估其测试误差,作为对泛化误差的估计,进而对模型进行评估、选择。对于数据集D,常见的作法是将大约2/3 ~ 4/5的样本用于训练,剩余的样本用于测试。

需要注意的是,训练集和测试集的划分要尽可能的保持数据分布的一致性,避免因数据划分过程引入额外的偏差二队最终结果产生影响,例如在份额里任务中,总样本D有500个正例,500个反例,则分层采样得到的训练集S应该包含350个正例、350个反例,而测试集T应该包含150个正例、150个反例;若训练集S和测试集中样本类别比例差别很大,则误差估计将由于训练/测试数据分布的差异而产生偏差。

(2)交叉验证法

交叉验证法(cross validation)先将数据集D划分为k个大小相似的互斥子集,每个子集尽可能的保持数据分布的一致性,即从D中通过分层采样得到。然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就获得了k组训练集、测试集,从而可进行k次模型训练和预测,最终返回k个测试结果的均值。

显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,因此通常把较差验证法称为k折交叉验证(k-fold cross validation)。k最常用的取值是10,其他常用的k值有5、20等。
机器学习读书笔记-1(模型评估与选择)
与留出法相似,将数据集D划分为K个子集同样存在多种划分方式,为较小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值,例如常见的有10词10折交叉验证。

假定数据集D中包含m个样本,若令k = m,则得到了交叉验证法的一个特例:留一法(leave-one-out,简称LOO)。留一法不瘦随机样本划分方式的影响,因为m个样本只有唯一的方式划分为m个子集,每个子集只包含一个样本。留一法使用的训练集与初始数据集相比只是少了一个样本,使得在大多数情况下,留一法中被实际评估的模型与期望评估的用D训练出的模型很相似。因此,留一法的评估结果往往被认为比较准确。然后也有其缺陷:当数据集比较大时,训练m个模型的计算开销可能是难以忍受的。

(3)自助法

我们希望评估的是用训练集D训练出的模型,然是留出法和较差验证法中,由于保留了一部分样本作为测试集,因此实际评估的模型所用的训练集比D小,这必然会引入一些因训练样本规模不同而导致的估计偏差。留一法受训练样本规模变化影响较小,但是计算复杂度又太高了。下面介绍一种可以减少训练样本规模不同造成的影响,同时还能比较高校的进行试验评估的方法。

自助法(bootstrapping)是一个比较好的解决方案,它直接以自助采样法为基础。给定包含m个样本的数据集D,我们对它进行采样产生数据集D1:每次随机从D中国挑选一个样本拷贝到数据集D1中,然后将该样本放回初始数据集D,这个过程重复执行m次后,我们就得到了一个包含m个样本的数据集D1,这就是自助采样的结果。显然,D中一部分样本会在D1中出现多次,二另一部分样本则不会出现,做一个简单的估计,机器学习读书笔记-1(模型评估与选择)
即通过自助采样,初始数据集D中鱼油36.8%的样本未出现在采样数据集D1中。我们可将D1作为训练集,D\D1(D中没有被采样的样本集)作为测试集。
自助法在数据集较小、难以有效划分的时候很有用;在初始数据量足够时,留出法和较差验证法更常用一些。