分享

机器学习第2章 模型评估指标与选择

 落日下旳余晖 2018-05-01

2.1 经验误差与过拟合

  通常我们把分类错误的样本数占样本总数的比例称为“错误率,即如果在m个昂本中有a个样本分类错误,则错误率E=a/m;相应的,1-a/m称为“精度”,即“精度=1-错误率”。更一般的,我们把学习器的实际预测输出与样本的真实输出之间的差异称为“误差”,学习器在训练集上的误差称为“训练误差”或“经验误差”,在新样本上的误差称为“泛化误差”。显然,我们希望得到得到泛化误差小的学习器。然而,我们事先并不知道新样本是什么样的,实际能做的是努力使经验误差最小化。
  我们实际希望的,是在新样本上能够表现得很好的学习器,为了达到这个目的,希望从训练样本中尽可能学出适用于潜在样本的“普遍规律”,这样才能遇到新样本时做出正确的判别。然而,当学习器把训练样本学得“太好”了的时候,很可能已经把训练样本自身的一些特点当作了所在潜在样本都会具有的一般性质,这样就会导致泛化性能下降。这种现象在机器学习中称为“ 过拟合”。与“过拟合”相对的是“欠拟合”,这是指对训练样本的一般性质尚未学好。
  有很多因素可能导致过拟合,其中最常见的情况是由于学习能力过于强大,以至于把训练样本所包含的不太一般的特性都能学到了,而过拟合则通常是由于学习能力低下而造成的。欠拟合比较容易克服,例如在决策树学习中扩展分支、在神经网络学习中增加训练轮数等,而过拟合则比较麻烦,在后面的学习中我们将看到,过拟合是机器学习面临的关键障碍,各类学习算法都必然带有一些针对过拟合的措施;但是过拟合是无法彻底避免的。机器学习面临的问题通常是NP难甚至更难。
  在显示任务中我们往往有很多学习算法可供选择,甚至对同一个学习算法,当使用不同的参数配置时,也会产生不同的模型。那么,我们该选择哪一种学习算法,使用哪一种参数配置呢?这就是机器学习中的“模型选择”问题。理想的解决方案当然是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型。然而如上面所讨论的,我们无法直接获得泛化误差,而训练误差又由于过拟合现象的存在而不适合作为标准,那么,在现实中如何进行模型评估与选择呢。

2.2 评估方法

  通常,我们可以通过实验测试来对学习器的泛化误差进行评估并进而做出选择,为此,需要使用一个“测试集”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。通常我们假设测试样本也是从样本真实分布中独立同分布采样而得。但需注意的是,测试集应该尽可能与训练集互斥,即测试样本尽可能不在训练集中出现,未在训练过程中使用过。
  下面是几种将数据集分为训练集和测试集的常见方法。

2.2.1 留出法
  
  “留出法”(hold-out)直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
  在分类任务中至少保持样本的类别比例相似。
  另一个需要注意的问题是,即便在给定训练/测试集的样本比例 后,仍存在多种划分方式对初始数据集D进行分割。例如在上面的例子中,可以把D中的样本排序,然后把前350个正例放到训练集中。例如在上面的例子中,可以把D中的样本排序,然后把前350个整理放到训练集中,也可以把最后350个正例放在训练集中,......,这些不同的划分将导致不同的训练/测试集,相应的,模型评估的结果也会有所差别。因此,单词使用留出法得到的随机结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行试验评估后取平均值作为留出法的评估结果。例如进行100次随机划分,每次产生一个训练/测试集用于实验评估,100次后就得到100个结果,而留出法返回的则是这100个结果的平均.
  此外,我们希望评估的是用D训练出的模型的性能,但留出法需要划分训练/测试集,这就会导致一个窘境:若训练集S包含绝大多数样本,则训练出的模型可能更接近于用D训练出的模型,但由于T比较小,评估结果可能不够稳定准确;若令测试集T多包含一些样本,则训练集S与D差别更大了,别评估的模型与用D训练出的模型相比可能有较大差别,从而降低了评估结果的保真性,这个问题没有完美的解决方案。常见做法是将大约2/3-4/5的样本用于训练,剩余样本用于测试。一般而言,测试集至少应该包含30个样例。

2.2.2 交叉验证法
   
   “交叉验证法”先将数据集D划分为k个大小相似的互斥子集,每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到,然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可以获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。k最常用的取值是10,此时称为10折交叉验证;其他常用的k值有5、20。
  在留出法和交叉验证法中,由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比D小,这必然会引入一些因村联样本规模不同而导致的估计偏差。针对这一问题,“自助法”(bootstrapping)则是一个比较好的解决方案,

2.2.3 自助法

  “自助法”(bootstrapping)直接以自助采样法(bootstrap sampling)为基础。给定包含m个样本的数据集D,我们对它进行采样产生数据集D':每次随机从D中挑选一个样本,将其拷贝放入D',然后再将该样本放回初始训练集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D',这就是自助采样的结果。显然,D中有一部分样本会在D'中多次出现,而另一部分样本不出现。可以做一个简单的估计,样本在m次采样中始终不被采到的概率是(1-1/m)m ——1/e = 0.368
即通过自助采样,初始数据集D中约有36.8%的样本未出现在采样数据集D'中。于是我们可将D'用作训练集,D\D'用作测试集;这样,实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有数据总量约1/3的、没在训练集中出现的样本用于测试,这样的测试结果,亦称“包外估计”(out-of-bag-estimate)。
  自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的数据集,这对集成学习等方法有很大的好处。然而,自助法产生的数据集改变了初始数据集的粉笔,这会引入估计偏差。因此,在初始数据量足够时,留出法和交叉验证法更常用一些。

2.2.4 调参与最终模型
  大多数学习算法都有些参数需要设定,参数配置不同,学得模型的性能往往有显著差别。因此,在进行模型评估与选择时,除了要对适用学习算法进行选择,还需要对算法参数进行设定,这就是通常所说的“参数调节”或简称“调参”。
  读者可能马上想到,调参和算法选择没什么本质区别:对每种参数配置都训练出模型,然后把对应最好模型的参数作为结果。这样的考虑基本是正确的。但有一点需要注意:学习算法的很多参数是在实数范围内取值,因此,对每种参数配置都训练出模型来事不可行的。现实中常用的做法,是对每个参数选定一个范围和变化步长,例如在[0,0.2]范围内以0.05为步长,则实际要评估的候选参数值有5个,最终是从这5个候选值中产生选定值。显然,这样选定的参数值往往不是“最佳”值,但这是在计算开销和性能估计之间进行折中的结果,通过这个折中,学习过程才变得可行。事实上,即便在进行这样的折中后,调参往往仍很困难,可以简单估算一下:嘉定算法有3个参数,每个参数仅考虑5个候选值,这样对每一组训练/测试集就有53 =125个模型需考察;很多强大的学习算法有大量参数需要设定,这将导致极大的调参工程量,以至于在不少应用任务中,参数调得好不好往往对最终模型性能有关键性影响。
  给定包含m个样本的数据集D,在模型评估与选择过程中由于需要留出一部分数据进行评估测试,事实上我们只使用了一部分数据训练模型。因此,在模型选择完成后,学习算法和参数配置亦选定,此时应该用数据集D重新训练模型。这个模型在训练过程中使用了所有m个样本,这才是我们最终提交给用户的模型。
  另外,需注意的是,我们通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为“验证集”,例如,在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。

模型评价指标及模型选择
评估模型
   不同的应用有着不同的目标,不同的评价指标
   准确率是最常用的一种
   真正例(TP)假正例(FP)真反例(TN)假反例(FN)
   TPR(Recall,召回率):TP/(TP+FN),表示检测率
   Precision(精确率):TP/(TP+FP)
   FPR:FP/(TN+FP),在所有实际值是0的样本中,被错误的预测为1的比例
   F1值:将召回率和精准率用一个数值表示
   Precision-Recall Curve(PR曲线):由面积大小表示好坏,X轴:recall,
   Y轴:precision,右上角是最理想的点,precision=1,recall=1
   Receiver Operating Characteristic Curve(ROC曲线):X轴:FPR,Y轴:TPR,左上角     是最理想的点,FPR=0,TPR=1
   混淆矩阵:可用于多分类模型的评价




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多