机器学习——1 模型评估与选择

1.1 泛化误差

   1.1.1 泛化误差概念

        在新样本上的误差称为泛化误差。

    1.1.2 问题引出

        在模型选择时,理想的解决方案是对候选模型的泛化误差进行评估,然后选择泛化误差最小的模型。但是我们无法直接获得泛化误差,而训练误差又因为过拟合现象的存在而不适合作为标准,那么在现实中怎么进行模型评估和选择呢?————下评估方法


1.2 评估方法

    1.2.1 评估方法

        通常,我们可通过实验测试来学习器的泛化误差进行评估并进而做出选择。为此,需使用一个 "测试集“*(其实就是我们通常说的验证集)测试学习器对新样本的判别能力,,然后测试上的"测试误差" (testing error) 作为泛化误差的近似。通常,我们假设测试样本也是从样本真实分布中独立同分布采样而得。但需注意是,测试集应该尽可能与训练 斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。


    1.2.2 问题引出

        对于一个数据集D既要训练,又要测试,怎样才能做到呢?答案是:通过对数据集进行适当的处理,从中产生出训练集S和测试集T 。下面介绍几种常见的做法。

         1. 留出法
        概念:"留出法" (hold-out) 直接将数据集划分为两个互斥的集合?其中一个集合作为训练集S,另一个作为测试集T。
        注意:1)、训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。
                   2)、即使在给定训练/测试集的样本比例后,仍存在多种划分方式对初始数据集进行分割。
         留出法窘境:我们希望评估的是用D训练出的模型的性能,但留出法需划分训练/测试集。若令训练集S包含绝大多数样本,则训练出的模型可能更接近于用D训练出的模型,但由T比较小,评估结果可能不够稳定准确;若令测试集T多包含一些样本, 则训练集S与D的差别更大了,被评估的模型与用D训练出的模型相比可能有较大差别,从而降低了评估结果的保真性。这个问题没有完美的解决方案常见做法是将大约 2/3~4/5的样本用于训练,剩余样本用于测试。
         2. 交叉验证法
        交叉验证法:"交叉验证法" (cross alidation) 将数据分为个大小相似的互斥子集,每个子集尽可能保持数据分布的一致性,即从D种通过分层采样得到,然后每次用k-1个子集的并集作为训练集,其余的那个子集作为试集;这样就可获得k组训练/测试集,从而可进行k次训练和测试, 最终返回的是k测试结果的均值 显然,交叉验证法评估结果的稳性 和保真性在很大程度上取决于k的取值,为强调这一点,通常把交叉验证法称为 ”k折交叉验证"。
        注意:与留出法相似,将数据集D划分为k个子集同样存在多种划分方式。为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p 次,最终的评估结果是这p次k折交叉验证结果的均值。
        留一法:假定数据集D中包含m个样本,令k=m则得到了交叉验证法的一个特例:留 一法。
        留一法的评估结果往往被认为比较准确。然而,留一法也有其缺陷:在数据集比较大时,训练m个模型的计算开销可能是难以忍受的(例如数据集包含1百万个样本,则需训练1百万个模型),而这还是在未考虑算法调参的情况下。另外,留一法的估计结果也未必永远比其他评估方法准确;“没有免费的午餐”定理对实验评估方法同样适用。

         3. 自助法

        “自助法”(bootstrapping)是一个比较好的解决方案,它直接以自助采样法为基础 。给定包含m个样本的数据集D,我们对它进行采样产生数据集D':每次随机从D中挑选一个样本,将其拷贝放入D',然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D',这就是自助采样的结果。显然,D中有一部分样本会在D'中多次出现,而另一部分样本不出现。

        自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此,在初始数据量足够时,留出法和交叉验证法更常用一些。
另外,需注意的是,我们通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为"验证集" (validation set). 例如,在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。

1.3 性能度量        

        对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量。(度量模型评估好坏的标准/方法)

    1.3.1 错误率和精度

        错误率和精度是分类任务中最常用的两种性能度量既适用于二分类任务,也适用于多分类任务.错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例.对样例集D,分类错误率定义为

         精度则定义为

机器学习——1 模型评估与选择_第1张图片

        更一般的,对于数据分布D和概率密度函数 p(.) 错误率与精度可分别描述为

 

机器学习——1 模型评估与选择_第2张图片

     1.3.2 查准率、查全率与Fl

        错误率和精度虽常用,但并不能满足所有任务需求。
        对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)四种情形,令TP、FP、TN、FN分别表示其对应的样例数,则显然有TP+FP+TN+ FN=样例总数.分类结果的“混淆矩阵”(confusion matrix)如表2.1所示.
机器学习——1 模型评估与选择_第3张图片
 

 查准率P与查全率R分别定义为

机器学习——1 模型评估与选择_第4张图片

        查准率和查全率是一对矛盾的度量.一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。

你可能感兴趣的:(机器学习,python,机器学习,python)