zoukankan      html  css  js  c++  java
  • 机器学习笔记-----02模型评估与选择

    经验误差与过拟合

    错误率(error rate):分类错误的样本数占样本总数的比例

    精度(accuracy):分类正确的样本数占样本总数的比例

    PS: 如果在m个样本中有a个样本分类错误,则错误率为E=a/m;相应的,1-a/m称为“精度”

    误差(error):学习器的实际预测输出与样本的真实输出之间的差异

    训练误差(training error)/经验误差(empirical error):学习器在训练集上的误差

    泛化误差(generalization error):学习器在新样本上的误差

    过拟合(overfitting)/过配:当学习器把训练样本学得“太好”了的时候,很可能已经把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降

    欠拟合(underfitting)/欠配:对训练样本的一般性质尚未学好

    评估方法

    测试集(testing set)是用来测试学习器对新样本的学习能力,将测试误差近似地看做为“泛化误差”。
    测试集应该尽可能地与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。

    留出法(hold-out)

    直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集,另一个作为测试集

    需要注意的是:

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

    2、单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果

    将大约2/3——4/5的样本用于训练,剩下的用于测试。

    交叉验证法(cross validation)

    “交叉验证法”先将数据集D划分成k个大小相似的互斥子集。每个子集保持数据分布的一致性,即从D中分层采样所得。然后每一次将k-1个子集的并集当做训练集,剩下的当做测试集,这样就能得到k组训练/测试集,进而进行k次训练和测试。最后返回的是这k次结果的均值。又叫做“k折交叉验证”(k-fold cross validation),一般k取10。

    自助法(bootstrapping)

    “自助法”直接以自助采样法为基础,在给定m个样本的数据集D中,我们对它进行采样产生D‘:每次随机挑选一个样本,将其拷贝到D’中然后再将样本放回数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复m次,然后就得到m个样本的数据集D‘,这就是自助采样的结果。
    于是我们用D’作为训练集,D-D‘作为测试集,这样我们仍有数据总量为1/3的、没在训练集中出现的样本用于测试,这样的测试结果,亦称“包外估计”。(out-of-bagestimate)

    留出法,自助法以及交叉验证法所适用的范围:
    自助法在数据集较小、难以有效划分训练/测试集时很有用;由于产生了多个不同的训练集,对集成学习很有用。但同时产生的数据集改变了原先的数据集分布,会引入估计偏差。故当初始数据量足够时,使用留出法和交叉验证法比较好。

    调参与最终模型

    除对学习算法进行选择,还需对算法参数进行设定,这就是“调参”(parameter tuning)。
    现实中常用的方法是,是对每一个参数进行选定一个范围和变化步长。调参的过程工程量很大,对最终的模型性能有关键性影响。
    模型评估与选择中用于评估测试的数据集常称为“验证集”(validation set)。

    性能度量

    衡量模型泛化能力的评价标准,即为性能度量。性能度量反映了任务需求,模型的好坏是相对的,判断模型的好坏,不仅取决于算法和数据,还决定于任务需求。
    回归任务最常用的性能度量是“均方误差”(mean squared error)。就是将预测结果f(x)与真实标记进行比较。

     

    错误率与精度

    错误率定义为:

     精度定义为:

    查准率(precision)、查全率(recall) 与F1

    分类结果混淆矩阵

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

    查全率和查准率是一对矛盾的度量。
    查准率-查全率曲线,简称“P-R”曲线,显示该曲线的图称为“P-R”图。

     所画的曲线为了方便和美观,所以显示出平滑单调曲线。但是现实任务中的P-R曲线是非单调,不平滑的。在很多局部都会出现波动。
    若一个学习器的“P-R”曲线被另外一个学习器的曲线完全”包住“,则可断言后者的性能优于前者;如果两个学习器的”P-R“曲线发生了交叉,难以一般性地断言孰优孰劣,只能在具体的查准率和查全率条件下进行比较。
    综上原因,故人们设计了一些综合考虑查准率和查全率的性能度量。
    “平衡点”(Break-Even Point,BEP)就是这样的度量,它是“查准率=查全率”时的取值。但是BEP还是太简单了,更常用的是F1度量。
    F1是基于查准率与查全率的调和平均定义的:

     然后得到:

     在一些应用中,对查准率和查重率的重视程度不同。所以我们使用F1度量的一般形式
    是加权调和平均:

     

     能让我们表达出对查准率/查全率的不同偏好。定义为:

     其中β>0度量了查全率对查准率的相对重要性。β=1时退化为标准的F1;β>1对查全率有更大影响;β<1时查准率有更大影响。

    ROC和AUC

    很多学习器是为测试样本产生一个实值或概率预测,然后将这个测试值与一个分类阈值(thresold)进行比较,若大于阈值则分为正类,否则为反类。
    ROC的全称是“受试者工作特征”(Receiver Operating Characteristic)曲线。我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测。每次计算出两个重要量的值,分别以横纵坐标作图,就得到了“ROC”曲线。ROC曲线的纵轴是”真正例率“(True Positive Rate 简称TPR),横轴是”假正例率“(False Positive Rate,简称FPR),两者分别定义为:

     进行学习器的比较时,若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则后者的性能优于前者;若两个学习器的ROC的曲线发生交叉,则难以判断。较为合理的判断依据是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)。
    形式化来看,AUC考虑的是样本预测的排序质量。给定 AUC可估算为:

    比较检验

    机器学习性能不能通过度量值直接比较。
    “统计假设检验”为学习器性能比较提供重要依据给出如下检验方法:

    假设检验

    “假设“是我们对学习器泛化错误率分布的猜想或判断。
    我们通过不同假设,基于假设检验结果可推断出学习器性能的比较。
    当我们做出多次重复留出法或交叉验证法进行训练/测试时,得出多个测试错误率:
    t检验

    交叉验证--t验证

    基本思想:若两个学习器的性能相同,则使用相同的训练/测试集得到的测试错误率应相同。
    假设检验的前提:测试错误率均为泛化错误率的独立采样。
    k折交叉验证产生的K对测试错误率:先对每对结果求差,若两个学习器性能相同则差值均值应为0。因此根据差值对“学习器AB性能相同”做t检验,计算差值的均值和方差,在显著度确定条件下,判断变量是否小于临界值,若小于则无显著差别,否则可判断平均错误率较小的学习器性能较优。
    因样本有限,加查验证不同轮次训练集有重叠,测试错误率实际上不独立,会导致过高估计假设成立的概率。
    5×2交叉验证法

    McNemar检验

    McNemar检验通过考虑变量,服从自由度为1的
    分布,即标准正态分布变量的平方。给定显著度α,当以上变量值小于临界值
    时,认为两学习器性能没有显著差别;否则性能有显著差别。且平均错误率较小的那个学习器性能较优。

    Friedman检验与Nemenyi后续检验

    定义:Friedman检验是利用秩实现对多个总体分布是否存在显著差异的非参数检验方法。
    原始前提:当多个配对样本来自的多个总体分布无显著差异时。
    基于算法排序的Friedman检验用于:一组数据集上对多个算法进行比较:
    假定数据集比较,由好到差排序,并赋予序值1,2,……
    Friedman检验判断这些算法是否性能相同:性能相同,平均序值应当相同。
    若”所有算法的性能相同”这个假设被拒绝,说明算法的性能显著不同。
    Nemenyi后续检验
    Nemenyi检验计算出平均序值差别的临界值域,若两个算法的平均序值之差超出了临界值域,则以相应的置信度拒绝”两个算法性能相同”这一假设。

    偏差和方差

    偏差-方差分解(bias-variance decomposition)就是用来解释学习算法泛化性能的一种工具,试图拆解期望泛化错误率。
    泛化误差可分解为偏差、方差与噪声之和。
    范化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。
    偏差和方差是有冲突的。
    训练不足时,拟合能力不强,由偏差主导泛化错误率;
    训练充足时,方差主导泛化错误率。

  • 相关阅读:
    [转]Java连接oracle数据库实例
    class.forname().newInstance()
    使用jdbc调用Oracle报错:ORA00911 无效字符
    使用HttpWebRequest需要设置Accept和UserAgent属性
    IIS应用程序池(进程池)假死问题解决办法
    windows调试工具集
    广东电信最新DNS更新了
    Web2.0样式
    一个开源的flash幻灯片展示源码文件
    Microsoft Visio2003 简体中文版 下载
  • 原文地址:https://www.cnblogs.com/zhuoning/p/11497812.html
Copyright © 2011-2022 走看看