模型评估与选择

100 阅读8分钟

模型的选择

误差

  • 误差:(Error): 是模型的预测输出值与其真实值之间的差异
  • 训练(Training): 通过已知的样本数据进行学习, 从而得到模型的过程
  • 训练误差(Training Error): 模型作用于训练集的误差
  • 泛化(Generalize): 由具体的, 个别的扩大为一般的, 即从特殊都一般, 称为泛化. 对机器学习的模型来讲, 泛化是指模型作用于新的样本数据(非训练集)
  • 泛化误差(Generalization Error): 模型作用于新样本数据时候的误差 误差

欠拟合和过拟合

  • 模型容量(Model Capacity): 是指其拟合各种模型的能力
  • 过拟合(Overfitting): 是某个模型在训练集上表现的很好, 但是在新样本上表现的很差. 模型将训练集的特征学习的太好, 导致一些非普遍规律被模型接纳和提现, 从而在训练集上表现的好, 在新样本上表现的很差.
    • eg. 例题做的很好, 但是做类似的题, 换个数字就不会做了
  • 欠拟合:(Underfitting): 即模型对训练集的一般性质学习表现的很差, 模型作用于训练集的时表现不好, 与**过拟合(Overfitting)**相反
    • eg. 连例题都没做好, 别说别的题了 三种拟合

模型选择

  • 模型选择(Model Selection): 针对某个具体的任务, 通常会有多种模型可供选择, 对同一个模型也会有多组参数, 可以通过分析, 评估模型的泛化误差, 选择泛化误差最小的模型 红线是最佳模型选择

模型的评估方法

  • 评估思路: 通过实验测试, 对模型的泛化误差进行评估, 选出泛化差最小的模型, 待测试数据集全集未知, 使用测试集进行泛化测试, 测试误差(Testing Error)即为泛化误差的近似. 将已知的数据集分为两个部分:训练集(80%), 测试集(20%)

    • 训练集测试集尽可能互斥(测试集和训练集尽量不一样)
    • 训练集测试集独立同分布(eg. 训练集和测试集没有关系, 彼此独立, 预测身高的时候要都来自中国, 不能训练集是中国人的数据, 而测试集是冰岛人)
  • 留出法(Hold-out): 将已知数据集分成两个互斥的部分, 其中一部分用来训练模型, 另一部分用来测试模型, 评估其误差, 作为泛化差的估计

    • 两个数据集的划分尽可能保持数据分布一致性, 避免因数据划分过程引入人为的偏差
    • 数据分割存在多种形式会导致不同的训练集, 测试机划分, 单次留出法结果往往存在偶然性, 其稳定性较差, 通常会进行若干次随机划分, 重复实现评估取平均值作为评估结果
    • 数据集拆分成两部分, 每部分的规模设置会影响评估结果, 测试, 训练的比例一般是2:8, 3:7等
    • 数据划分一般使用分层法, 比如一个训练集里分男人和女人, 那么按照男人和女人来划分数据
  • 交叉验证法(Cross Validation): 将数据集划分为k个大小相似的互斥的数据子集, 子集数据尽可能保证数据分布的一致性

  • 留一法(Leave-One-Out. LOO):是k折交叉验证的特殊形式, 将数据集分成两个, 其中一个数据集记录条数为1, 作为测试集使用, 其余记录作为训练集训练模型, 训练出的模型和使用全部数据集训练得到的模型接近, 其评估结果比较准确, 缺点是当数据集比较大的时候, 训练次数和计算规模比较大.

  • 自助法(Bootstrapping):是一种产生样本的抽样方法, 其实质是有放回的随机抽样, 即从已知数据集中随机抽取一条记录, 然后将该记录放入测试集同时放回原数据集, 继续下一次抽样, 直到测试集中的数据条数满足要求. 通过有放回的抽样获得的训练集去训练模型, 不在训练集中的数据(约总数量的1/3)去用于测试, 这样的测试结果被称为包外估计(Out-of-Bag Estimate, OOB)

几种方法的适用场景

  • 留出法

    • 优点
      • 实现简单, 方便, 在一定程度上能够评估泛化误差
      • 测试集和训练集分开, 缓解了过拟合
    • 缺点
      • 一次划分, 苹果结果偶然性大
      • 数据被拆分以后, 用于训练, 测试的数据更少了
  • 交叉验证法

    • 优点
      • K可以根据实际情况设置, 充分利用了所有样本
      • 多次划分, 评估结果相对稳定
    • 缺点
      • 计算比较繁琐, 需要进行k次训练和评估
  • 自助法

    • 优点
      • 样本量比较小的时候可以通过自助法产生多个自助样本集, 且有约36.8%的测试样本
      • 对于总体的理论分布没有要求
    • 缺点
      • 无放回抽样引起额外的偏差

几种方法的选择

  • 已知数据集梳理充足时, 通常采用留出法或者K折交叉验证法
  • 对于已知数据集比较小且难以有效划分训练集/测试集的时候, 采用自助法
  • 对于已知数据集比较小且可以有效划分训练集/测试集的时候, 采用留一法

性能度量

  • 性能度量(Performance Measure):评价模型泛化能力的标准, 对于不同的模型, 有不同的评价标准, 不同的评价标准将导致不同的评价结果, 模型的好坏是相对的, 取决于对于当前任务需求的完成情况.

  • 回归模型的性能度量通常选用均方误差

  • 均方误差计算举例 均方误差计算

分类算法的常用性能度量

分类算法的常用性能度量

聚类算法的常用性能度量

聚类算法的常用性能度量

模型比较

选择合适的评估方法和相应的性能度量, 计算出性能度量后直接比较 存在以下问题

  • 模型评估得到的是测试集上的性能, 并非严格意义上的泛化性能, 两者并不完全相同
  • 测试集上的性能与样本选取关系不大, 不同的划分, 测试结果会不同, 比较缺乏稳定性
  • 很多模型本身具有随机性, 及时参数和数据集相同, 其运行结果也存在差异

把上述问题按照统计学的知识描述一下:

  • 已知两个模型F1和F2, 两者的泛化性能在测试集上的表现不同, F1好于F2. 请检验在统计意义上F1是否好于F2? 这个把握有多大?

小概率事件 一般认为当几率小于5%的时候, 基本是小概率事件

  • 假设检验

  • 统计假设检验(Hypothesis Test): 事先对总体的参数或者分布做一个假设, 然后基于已有的样本数据去判断这个假设是否合理, 即样本和总体假设之间的不同是纯属机会变异(因为随机性误差导致的不同), 还是两者确实不同. 常用的假设检验方法有t-检验法, 卡方检验, F-检验法等

  • 基本思想

    • 从样本推断整体
    • 通过反证法推断假设是否成立
    • 小概率时间再一次实验中基本不会发生
    • 不轻易拒绝原假设
    • 通过显著性水平定义小概率事件不可能发生的概率
    • 全称命题只能被否定而不能被证明
  • 假设检验步骤 假设检测步骤

假设检验的例子

二项式检验

T检验(固定公式)

假设检验在模型比较重的应用

应用

偏差, 方差与噪声

  • 偏差(Bias): 描述的是根据样本拟合出的模型的输出预测结果的期望与样本真实结果的差距, 即在样本上拟合的好不好.
  • 方差(Variance): 模型每一次输出结果与模型输出期望之间的误差, 即模型的稳定性
  • 噪声(Noise): 为真实标记与数据集中的实际标记间的偏差, 通常由多种因素综合影响造成, 不可去除.
  • 偏差度量了学习算法的期望预测与真是结果的偏离程度, 刻画了学习算法本身的拟合能力