美文网首页AI界的产品经理产品经理机器学习和人工智能入门
读书笔记 | 《机器学习》- 模型评估与选择

读书笔记 | 《机器学习》- 模型评估与选择

作者: rui_liu | 来源:发表于2017-10-31 17:22 被阅读194次

    -- 原创,未经授权,禁止转载 2017.10.31 --

    传送门:

    机器学习的基本概念(一):http://www.jianshu.com/p/10fc7e397a3e

    机器学习的基本概念(二):http://www.jianshu.com/p/b3edf9c9f2c8

    机器学习

    机器通过学习,得到了模型。我们需要评判模型的泛化能力如何。

    衡量模型泛化能力的评价标准,就是【性能度量】。这一章就是围绕性能度量,讲述如何评估模型。

    一、结论:

    模型的好坏(泛化能力)= 学习算法的能力 + 数据的充分性 + 学习任务本身的难易度

    所以,模型的“好坏”是相对的,它不仅取决于算法和数据,还决定于任务需求。

    二、评判方法

    模型评估,是通过某种实验方法,评估测得某学习器的性能度量,以此做为评判方法。

    除此之外,还需要辅助以假设检验,比较学习器之间的泛化能力。

    性能评估

    1. 基本术语:

    【错误率】:分类错误的样本数 占 样本总数的比例。
    【精度】: 1 - 错误率。
    【误差】:学习器的实际预测输出与样本的真实输出之间的差异。
    【训练误差】:学习器在训练集上的误差。
    【泛化误差】:学习器在新样本上的误差。

    【过拟合】:学习器把训练样本学得“太好”,把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样会导致泛化能力下降。

    举例说明:

    过拟合与欠拟合

    【欠拟合】:与过拟合相对,指对训练样本的一般性质尚未学好。
    ps:过拟合无法彻底避免,只能“缓解”。

    【测试集】:通过实验测试学习器的泛化能力的样本集合。

    休息一下

    2. 实验评估方法:

    这些方法是对测试样本的选择,为了得到更加准确的测试结果,测试集应该尽可能与训练集互斥。即,测试样本尽量不在训练集中出现,未在训练过程中使用过。

    实验评估方法
    1)留出法

    步骤:
    将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。

    需要注意的是:

    1. 训练/测试集的划分要尽可能保持数据分布的一致性。
    2. 采用若干次随机划分、重复进行试验评估后,取平均值作为留出法的评估结果。

    解释:

    1. 训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。

      例如,在分类任务中,要保持样本的类别比例相似。一般采用分层采样。

      【分层采样】:保留类别比例的采样方式。

    2. 因为存在多种方式对初始数据集D进行分割,不同的划分方式导致不同的训练/测试集,相应的,模型评估的结果也会有差别。

      所以,在使用留出法时,一般要采用若干次随机划分、重复进行试验评估后取平均值作为留出法的评估结果。

    常用做法: 将2/3 ~ 4/5 的样本用于训练,剩余样本用于测试。

    2)交叉验证法

    步骤:

    先将数据集D划分为k个大小相似的互斥子集(分层采样)得到,然后每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集。

    这样就能得到k组训练/测试集。从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。

    所以,交叉验证法也称为“k折交叉验证”,k通常取10,称为10折交叉验证。

    10折交叉示意图:

    10折交叉示意图

    需要注意的是:

    与留出法类似,采用若干次随机划分、重复进行试验评估后,取平均值作为交叉验证法的评估结果。

    常见的有“10次10折交叉验证”。

    特例:留一法

    假设数据集D包含m个样本,若k=m,则得到了交叉验证法的特例:留一法(LOO)。

    优点:它不受随机样本划分的影响,因为每个子集都会包含一个样本。所以留一法的评估结果最准确。

    缺点:数据集较大时,训练m个模型计算开销太大。

    3)自助法

    以自助采样法为基础,从原始数据集D中,采样产生数据集D‘,其中数据集D中约有36.8%的样本未出现在采样数据集D’中,这部分数据可以用于测试。

    自助法

    优点:在数据集较小,难以有效划分训练/测试集时很有用。
    缺点:自助法产生的数据集改变了初始数据集的分布,会引入估计偏差。

    休息一下

    三、 常用的性能度量

    【性能度量】:衡量模型泛化能力的评价标准。反应了任务需求。

    不同任务,使用的性能度量不同。

    性能度量
    1) 回归任务

    最常用的性能度量是“均方误差”:

    均方误差

    2)聚类任务

    聚类性能度量也称为聚类“有效性指标”,主要分两类:

    a)一类,是将聚类结果与某个“参考模型”进行比较,称为【外部指标】。

    常用的指标有:
    JC系数,FM指数,Rand指数。

    结果在[0,1]区间,值越大越好。

    b)另一类,是直接考察聚类结果而不用任何模型,称为【内部指标】。

    常用的指标有:
    DB指数,Dunn指数。

    DB指数越小越好,Dunn指数越大越好。

    3)分类任务

    a)错误率、精度

    【错误率】:分类错误的样本数 占 样本总数的比例。
    【精度】: 1 - 错误率。

    错误率、精度
    b)查准率与查全率

    查准率也称为【准确率】。
    查全率也称为【召回率】。

    下图给出了二者的定义:

    查准率、查全率

    查准率与查全率是一对矛盾的度量。
    一般,查准率高时,查全率会低;查全率高时,查准率偏低。

    P-R曲线

    以查全率为横轴,查准率为纵轴,作图。即查准率-查全率曲线,简称P-R曲线。

    i) 计算步骤:

    根据学习器的预测结果对样例进行排序,排在前面的是“最可能”的正例样本,排在后面的是“最不可能”的正例样本。

    按此顺序,逐个把样本作为正例进行预测,则每次可以计算出当前的查全率、查准率。

    ii)检验查全率、查准率的性能指标:

    • 平衡点 BEP:查全率=查准率 时的取值。
    • F1度量:基于查准率与查全率的调和平均定义的。
    F1度量

    查准率与查全率的平衡选择,取决于你要解决的问题。

    例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容是用户感兴趣的,此时查准率更重要。

    如果是在逃犯信息检索系统中,希望尽可能少漏掉逃犯,此时查全率更重要。

    F1度量的一般形式
    c)ROC曲线

    全称是“受试者工作特征”曲线。以【假正例率FPR】为横轴,【真正例率TPR】为纵轴。作图。

    i)计算步骤:

    与P-R曲线类似,根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,算出FPR、TPR。

    FPR、TPR

    ii)为什么要用ROC曲线?

    排序本身质量的好坏,体现了学习器在不同任务下泛化能力的好坏。ROC曲线则是从这个角度来衡量学习器泛化能力的。

    ROC与AUC

    AUC是ROC曲线下的面积,以此判断两个学习器的性能。

    d)代价敏感错误率 与 代价曲线

    i)为什么要用代价曲线:

    现实生活中,不同类型的错误,造成的后果不同。

    比如,医疗诊断中,将患者诊断为健康人,与,将健康人诊断为患者,带来的后果完全不同。误诊为健康人,后果是患者可能丧失了最佳治疗时机。

    所以,为权衡不同类型的错误所造成的不同损失,为错误赋予【非均等代价】的概念。

    在【非均等代价】下,代价曲线可以反映,学习器的期望总体代价。

    我们寻求的,就是总体代价最小化。

    ii)绘制步骤

    绘制 代价曲线 放松一下

    四、比较检验

    1)概念解释

    学习器之间泛化能力的比较,无法通过直接比较性能度量的值的大小。需要通过统计假设检验来比较。

    原因:
    1. 我们希望比较的是学习器之间的泛化能力,然而通过实验评估方法,我们获得的是测试集上的性能。两者的对比结果可能未必相同。

    2. 测试集上的性能与测试集本身的选择有很大关系,而测试集大小不同,测试样例不同,测试结果也会不同。

    3. 机器学习算法本身有一定的随机性,即便用相同的参数设置在同一个测试集上运行多次,结果也会不同。

    所以,不能直接比较性能度量值的大小,而是需要用假设检验进行比较。

    2)常用的比较方法

    对于单个学习器和多个学习器有不同的比较方法。

    假设检验法

    举例:

    以错误率为性能度量,进行假设检验。
    假设检验中的“假设”是对学习器泛化错误率分布的某种猜想。

    现实任务中,我们并不知道学习器的泛化错误率,只知道测试错误率。二者接近的可能性很大,以此可以推算出泛化错误率的分布。

    • 对于单个学习器,常用的方法有二项检验,t检验。
    二项检验

    有多个测试错误率时,可采用t检验方法比较。

    t分布示意图 常用临界值
    • 对于多个学习器,常用的方法有,交叉验证t检验,McNemar检验,Friedman检验与Nemenyi后续检验。

      • 交叉验证t检验 和 McNemar检验,是在一个数据集上比较两个算法的性能。

      • Friedman检验 与 Nemenyi后续检验,是在一组数据集上比较多个算法的性能。

    对于两个学习器,若使用k折交叉验证法得到测试错误率,则可用k折交叉验证“成对t检验”来进行比较检验。

    进行有效的假设检验,一个重要前提是,测试错误率均为泛化错误率的独立采样。所以一般采用“5 x 2交叉验证”法,尽量保证测试错误率的独立性。

    Friedman检验是基于多个算法进行排序的检验。

    F检验常用临界值

    经过F检验,说明算法的性能显著不同,需要进行“后续检验”进一步区别各算法。

    Nemenyi检验常用临界值 休息一下

    五、偏差与方差

    “偏差-方差分解”是解释学习算法泛化能力的重要工具。它试图对学习算法的期望泛化错误率进行拆解。

    以回归任务为例,泛化误差可分解为,偏差+方差+噪声之和。

    【偏差】度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。

    【方差】度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。

    【噪声】则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。

    • 偏差-方差分解说明,泛化能力是由学习算法的能力、数据的充分性以及 学习任务本身的难易度 共同决定的。

    给定学习任务,为了取得好的泛化能力,则需使偏差较小,即能够充分拟合数据;并且方差较小,即使得数据扰动产生的影响较小。

    一般来说,偏差与方差是有冲突的,称为偏差-方差窘境。

    偏差-方差窘境

    至此,内容就讲完了。上一张全家福~~

    全家福

    最后,想成为一名AI产品经理,求推荐~

    -- 原创,未经授权,禁止转载 2017.10.31 --

    相关文章

      网友评论

        本文标题:读书笔记 | 《机器学习》- 模型评估与选择

        本文链接:https://www.haomeiwen.com/subject/qicmpxtx.html