【机器学习西瓜书阅读笔记】(二)模型评估与选择

目录

    • 思维导图
    • 为什么要模型评估
      • 经验误差与泛化误差
      • 过拟合与欠拟合
    • 什么是模型评估
      • 评估方法
      • 调参与最终模型
      • 性能度量
        • 精度与错误率
        • 查准率、查全率与F1
        • ROC与AUC
        • 代价敏感错误率
      • 比较检验
        • 假设检验
        • 交叉验证t检验
        • McNemar检验
    • 偏差与方差
    • 参考文献

PS:由于能力有限,本篇阅读笔记可能会有许多理解不够深入的地方,如有错误,还望指正!

思维导图

【机器学习西瓜书阅读笔记】(二)模型评估与选择_第1张图片

为什么要模型评估

经验误差与泛化误差

  • 误差(error):指误差期望,把学习器的实际预测输出与样本的真实输出之间的差异称为误差
  • 经验误差(训练误差):学习器在训练集上的误差(PS:已经做过的题还做错
  • 泛化误差:在新样本上的误差(PS:新题目上做错

所以我们做的一切都是希望得到泛化误差小的学习器

过拟合与欠拟合

两种极端情况

  • 过拟合:学习能力过强
  • 欠拟合 :学习能力低下

下图是书上关于两种情况的类比图
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第2张图片


什么是模型评估

评估方法

评估方法的目的:怎样从一堆数据中拿出测试集才公平合理
评估方法的注意点:测试集尽可能与训练集互斥

几种具体方法

  • 留出法
    1、直接将数据D划分为两个互斥的集合,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计
    在这里插入图片描述
    2、注意点:训练/测试集的划分要尽可能保持数据分布的一致性(PS:试卷和平常作业中的知识点要一样)所以在切分数据之前,先把数据打乱!

    3、例子:在分类任务中至少要保持样本的类别比例相似(PS:至少保证训练集中好瓜 : 坏瓜=1:2,那么测试集中也要1:2

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

    5、关于测试集和训练集的数量关系问题,书上写最常见做法大约2/3~4/5的样本用于训练,剩余样本用于测试

    6、总结:留出法关键在于1、分布一致 2、多次划分

  • 交叉验证法
    1、将数据集D划分为k个大小相似的互斥子集,每个子集Di都尽可能保持数据分布一致性,然后每次用k-1个子集作为训练集,余下的那个子集作为测试集,这样就会获得k组训练/测试集(PS:每个数据都有机会作为测试集
    在这里插入图片描述
    2、通常又称k折交叉验证,k最常用的取值是10(10折交叉验证)。当然,为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终结果为p次k折交叉验证结果的均值,例如10次10折交叉验证得进行100次训练/测试
    【机器学习西瓜书阅读笔记】(二)模型评估与选择_第3张图片
    3、特例:留一法(Leave-One-Out) :即当k=m,它不存在随机划分,因为k=m,m个样本只有唯一的方式划分为m个子集(一个样本一个子集)。但它有缺陷:m过大,计算量会很大(一百万个样本,需要训练一百万个模型)

  • 自助法
    1、每次随机从D中挑选一个样本,将其拷贝放入D‘,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍可能被采到。重复m次,得到包含m个样本的数据集D‘(D中一部分样本会在D’中多次出现,而另一部分样本不出现)。
    2、样本在m次采样中始终不被采到的概率是(1-1/m)^m,去极限得到:
    【机器学习西瓜书阅读笔记】(二)模型评估与选择_第4张图片

    • 1/m :一次采样,某样本被采到的概率
    • 1-1/m:没有被采到的概率
    • (1-1/m)^m:总共取样m次
    • 也就是说初始数据集D中约36.8%的样本未出现在采样数据集D‘中
    • 所以D’作为训练集,D-D‘作为测试集

    3、总结:自助法在数据集较小、难以有效划分训练/测试集时很有用(它也能从初始数据集中产生多个不同的训练集),但是自助法产生的数据集改变了初始数据集分布,会引入估计偏差。所以初始数据量足够时,留出法和交叉验证更常用。

调参与最终模型

引入了验证集的概念,以下深度之眼官方的一幅图,很好理解验证集的作用
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第5张图片
所以验证集的作用就是进行模型选择和调参(PS:改善模型,查漏补缺

性能度量

性能度量(performance measure):衡量模型泛化能力的评价标准。

1、性能度量反映了任务需求,对比不同模型的能力时,使用不同的性能度量往往导致不同的评判结果,所以模型的好坏是相对的,什么样的模型是好的,不仅取决于算法、数据。还决定于任务需求

2、例子:“均方误差”——回归任务最常用的性能度量
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第6张图片

  • E:Error(计算测试集误差的平均值)
  • f:模型
  • D:测试集
  • (f(xi)-yi)^2: (模型的输出-样本真实输出)^2(PS:平方的意义:误差有正负

以上是具体的实现,而下面是抽象的实现

【机器学习西瓜书阅读笔记】(二)模型评估与选择_第7张图片

  • E:泛化误差
  • 等号后面的表达式:(f(x)-y)^2的数学期望,随机变量是p(x)==>p(x)是概率密度函数(PS:有的瓜出现概率大,则对数学期望贡献就大

精度与错误率

  • 错误率(error rate):分类错误的样本数占样本总数的比例 (E = a / m)
  • 精度(正确率):1-E

查准率、查全率与F1

  • 查准率(P):我认为我挑出来的是好瓜里面真的是好瓜的比例
  • 查全率(R):真的是好瓜中有百分之多少被我挑出来
  • F1:基于查准率与查全率的调和平均

对于二分类问题会引入一个分类结果的混淆矩阵【根据真实类别与学习器预测类别的组合划分】,如下图
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第8张图片

  • P/N代表预测的正/反(P:positive ,N:negative)
  • T/F代表有没有预测对

所以查准率(P)和查全率(R)的定义式如下
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第9张图片

  • TP:真好瓜
  • TP+FP:所有我认为是好瓜
    【机器学习西瓜书阅读笔记】(二)模型评估与选择_第10张图片
  • TP:真好瓜(PS:我找出来的
  • TP+FN:所有真好瓜

查准率和查全率是一对矛盾的度量,但我们希望两个都越高越好,所以会出现一个平衡点,所以出现了PR曲线
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第11张图片

  • 可以看出A的性能优于C(前提:假设A把C完全包住,则A性能优于C)
  • 但A和B不一定,所以就是需要前面提到的**平衡点(Break-Even Point,BEP)**它是“查准率=查全率”时的取值。所以根据平衡点理论,性能:A>B>C
  • BEP还是过于简单,更常用的是F1度量
    在这里插入图片描述
    在许多应用中,对P和R的重视程度不同,例如商品推荐,希望少打扰用户,尽可能推荐内容确实是用户喜欢的,此时查准率更重要。又比如抓逃犯,查全率更重要,所以此时需要引入 β \beta β,定义式如下
    【机器学习西瓜书阅读笔记】(二)模型评估与选择_第12张图片
    很多是好需要进行多次训练/测试,每次得到一个混淆矩阵,就出现了以下两种类型的结果
    1、宏查准率、宏查全率、宏F1(macro-xx)(PS:先算P、R,再算平均值
    (P1,R1),(P2,R2)…
    【机器学习西瓜书阅读笔记】(二)模型评估与选择_第13张图片
    2、微查准率、微查全率、微F1(micro-xx)(PS:先算平均值,再算P、R
    先混淆矩阵对应元素的到平均值在这里插入图片描述
    【机器学习西瓜书阅读笔记】(二)模型评估与选择_第14张图片

ROC与AUC

先引入一个“截断点”的思想:分类过程中截断点将样本分为两部分,前一部分判做正例,后一部分则作反例(前提可以是将样本进行排序,“最可能”在前面,“最不可能”在后面)
ROC曲线就是从这个角度出发来研究学习器的泛化性能的有力工具

ROC曲线的纵轴是“真正例率”(True Positive Rate,TPR),横轴是“假正例率”(False Positive Rate,FPR),定义如下
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第15张图片
TPR往上走–》好瓜
FPR往右走–》坏瓜

【机器学习西瓜书阅读笔记】(二)模型评估与选择_第16张图片
比较两个学习器的性能,就需要引入AUC,即ROC曲线下面的面积,面积AUC越大越好!
假设ROC曲线是由坐标为{(x1,y1),(x2,y2)…(xm,ym)}点连接形成,则AUC可估算如下

【机器学习西瓜书阅读笔记】(二)模型评估与选择_第17张图片
(PS:其实就是面积公式,可以直接用几何法,x,y是坐标点

因为ROC是从排序角度出发,所以AUC考虑的是样本预测的排序质量,所以就存在排序误差,排序“损失”定义如下:
在这里插入图片描述

  • m+m-:正例个数*反例个数
  • D+、D-:表示正反例集合
  • 举个例子:
    例如小于0.5 -->x+ , 大于0.5–>x-
    若f(x+) ∏ \prod (…)=1

因此AUC=1- ζ \zeta ζrank

代价敏感错误率

如图是二分类代价矩阵
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第18张图片

  • 认错才有代价,认对代价为0
  • 代价都不一样

代价敏感错误率:与代价相关的错误率
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第19张图片

  • f(xi)不等于yi:模型与真实不一样
  • D+代表正例
  • D-代表负例

比较检验

比较检验目的:先使用某种实验评估方法测得学习器的某个性能度量结果,然后对这些结果进行比较,而这个比较就是比较检验的目的

PS:关于这一节所有的方法主要都是围绕一个思想:构造一个随机变量,看某次实验结果会不会落在假设的小概率区间内

机器学习性能比较的几个重要因素

  • 我们希望比较的是泛化性能,但是通过实验评估方法得到的是测试集上的性能,两者结果未必相同
  • 测试集上的性能与测试集本身的选择有很大的关系
  • 算法本身有一定的随机性

假设检验

1、“假设”:是对学习器泛化错误率分布的某种判断或猜想(PS:因为现实中我们不知道泛化错误率,只能获取测试错误率,但两者接近的可能性大,所以可以根据测试错误率估推出泛化错误率)
2、泛化错误率为 ϵ \epsilon ϵ的学习器被测得测试错误率为 ϵ ^ \widehat{\epsilon} ϵ 的概率如下
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第20张图片

  • 其实括号里的就是组合数C(m ϵ ^ \widehat{\epsilon} ϵ *m)
  • m:测试样本个数
  • ϵ \epsilon ϵ^ ϵ ^ \widehat{\epsilon} ϵ *m:做错的个数
  • (1- ϵ \epsilon ϵ)^ ϵ ^ \widehat{\epsilon} ϵ *m:做对的个数
    (关于其他假设检验部分可参考周志华老师的书)

交叉验证t检验

对k折交叉验证产生的k对测试错误率:

  • 1、先对每个结果求差(若两个学习器性能相同,差值均值应为0)
    在这里插入图片描述
  • 2、根据差值 △ \bigtriangleup 1, △ \bigtriangleup 2… △ \bigtriangleup k来对“学习器A与B性能相同”这个假设做t检验,计算出差值的均值 μ \mu μ和方差 σ \sigma σ^2,在显著度 α \alpha α如果变量Tt小于临界值则假设不能被拒绝,即认为两个学习器性能没有显著差别。
    均值和方差公式如下:
    【机器学习西瓜书阅读笔记】(二)模型评估与选择_第21张图片
    变量Tt公式如下:
    【机器学习西瓜书阅读笔记】(二)模型评估与选择_第22张图片
    也可以改写如下:
    【机器学习西瓜书阅读笔记】(二)模型评估与选择_第23张图片

McNemar检验

1、引入列联表,下图是两学习器分类差别列联表
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第24张图片

  • e00:俩学习器都判断对
  • e11:都判断错
  • e10大,e01小:A学习器好
  • e10小,e01大:B学习器好

2、引入卡方分布(McNemar检验考虑的变量),公式如下
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第25张图片
(PS:其实就是通过反对角线上的数值差的大小来判断)

3、关于McNemar检验思想总结

  • 假设A、B性能相同
  • 若e10和e01在某次差异非常大
  • 则拒绝假设

偏差与方差

PS:讨论什么样原因造成泛化误差
以回归任务为例(实数域上连续的值),学习算法的期望预测(也可以简单理解成多次训练结果的平均值):
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第26张图片
使用样本数相同的不同训练集产生的方差如下:
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第27张图片

  • var(x):方差
  • 伪E:数学期望
  • D:不同的训练集
  • f(x;D):某一个训练结果

噪声公式如下:
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第28张图片

  • D:测试集
  • yD:为x在测试集中的标记(可能对可能错)
  • y:为x的真实标记(一定对)

偏差:期望输出与真实标记的差别(模型选择不当所产生的值)
在这里插入图片描述

  • 数学期望输出-真实标记

假定噪声期望为0,那么算法的期望泛化误差可如下分解:
【机器学习西瓜书阅读笔记】(二)模型评估与选择_第29张图片

  • E(f;D):某模型的误差
  • 因为f具有随机性,所以分解式中有数学期望
  • D为训练集

所以得出泛化误差=偏差+方差+噪声
在这里插入图片描述

所以决定泛化性能由如下三点:

  • 偏差:刻画学习算法的能力(PS:度量学习算法的期望预测和真实结果的偏差
  • 方差:刻画数据的充分性(PS:度量同样大小的训练集的变动所导致的学习性能的变化
  • 噪声:学习任务本身的难度

即好的泛化性能,需要使偏差较小(能够充分拟合数据),方差较小(能够使得数据扰动产生的影响小),如下图

【机器学习西瓜书阅读笔记】(二)模型评估与选择_第30张图片

  • 从左到右:模型简单–>模型复杂(PS:从欠拟合–>过拟合)的过程
  • 所以要选一个适当拟合的点

参考文献

《机器学习》周志华著

你可能感兴趣的:(#,周志华《机器学习》阅读笔记,机器学习,西瓜书)