《机器学习》周志华(西瓜书)学习笔记 第二章 模型评估与选择

2023-11-07

机器学习 周志华 学习笔记

总目录

世上只有一种投资是只赚不赔的,那就是学习。
当你的的能力还驾驭不了你的目标时,
就应该沉下心来历练;
当你的才华撑不起你的野心时,
就应该静下心来学习

第二章 模型评估与选择

2.1 经验误差与过拟合

  • 错误率(Error Rate): 分类错误的样本数占样本总数的比例. 如果在m个样本中, 有a个样本分类错误, 则错误率 E = a m E=\frac{a}{m} E=ma.
  • 精度(Accuracy): 精度 = 1 - 错误率 ,
  • 误差(Error): 学习器的实际预测输出与样本的真实输出之间的差异.
  • 训练误差(training error):学习器在训练集上的误差,又称为经验误差(empirical error)
  • 泛化误差(generalization):学习器在新样本上的误差
  • 代价(cost):也称为损失,指将某种类别样本预测为另一种类别时付出的代价,与之相对应的计算损失的函数是代价函数(损失函数)
  • 经验风险:学习器在训练集上的风险。在实际训练学习器时,常见的做法是经验风险最小化(Empirical Risk Minimization,ERM)。
  • 过拟合(Overfitting): 学习器把训练样本学的太好, 很可能已经把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,所导致的泛化性能下降. 有很多种因素可能导致过拟合, 其中最常见的情况是由于学习能力过于强大,以至于把训练样本所包含的不太一般的特征都学到了. 过拟合是无法避免的, 我们所能做的只是’缓解’, 或者说减小风险.
  • 欠拟合(Underfitting): 指学习器对训练样本的一般性质尚未学好. 学习力低下.
  • 模型选择(Model Selection): 在解决现实问题时, 对不同算法模型的选择. 对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型.

2.2 评估方法

本节介绍了三种模型评估方法:留出法、交叉验证法、自助法(也称 bootstrap

测试集(Testing Set): 用于测试学习器对新样本的判别能力, 然后以测试集上的’测试误差’(Testing Error)作为泛化误差的近似. 通常假设测试样本也是从样本真实分布中独立分布采样而得. 单需注意的是, 测试集应该尽可能与训练集互斥, 即测试样本尽量不在训练集中出现, 未在训练过程中使用过.

2.2.1 留出法 (hold-out)
  1. 留出法(Hold-Out): 直接将数据集D划分为两个互斥的集合, 其中一个集合作为训练集S, 另一个作为测试集T, 即 , ,
    在S上训练出模型后, 用T来评估其测试误差, 作为对泛化误差的估计. 需要注意的是, 训练/测试集的划分要尽可能保持数据分布的一致性,
    避免因数据划分过程引入额外的偏差而对最终结果产生影响, 例如在分类任务中至少要保持样本的类别比例相似.
  2. 分层采样(Stratified Sampling): 如果从采样(Sampling)的角度来看待数据集的划分过程,
    则保留类别比例的采样方式通常称为’分层采样’(Stratified Sampling).
  3. 在使用留出法时, 一般要采用若干次随机划分, 重复进行实验评估后取均值做为留出法的评估结果.
  4. 我们希望评估的是用D训练出的模型的性能, 但留出法需划分训练/测试集, 这样就会导致一个窘境: 若令训练集S包含绝大多数样本,则训练出的模型可能更接近于用D训练出的模型, 但由于T比较小, 评估结果可能不够稳定准确; 若令测试集T多包含一些样本,则训练集S与D差别更大了, 被评估的模型与用D训练出的模型相比可能有比较大的差别, 从而降低了评估结果的保真性(Fidelity).这个问题没有完美的解决方案, 常见做法是将大约 的样本用于训练, 剩余样本用于测试.
2.2.2 交叉验证法

交叉验证法(cross validation)先将数据集 D 划分为 k 个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,即从 D 中通过分层采样得到. 然后,每次用 k-1 个子集的并集作为训练集,余下的那个子集作为测试集,这样就可获得 k 组训练/测试集,从而可进行 k 次训练和测试,最终返回的是这 k 个测试结果的均值。交叉验证法评估结果的稳定性和保真性在很大程度上取决于 k 的取值,为强调这一点,通常把交叉验证法称为 " k 折交叉验证"
假定数据集 D 中包含 m 个样本,若令 k=m , 则得到了交叉验证法的一个特例:留一法(Leave-One-Out,简称 LOO). .留一法受训练样本规模变化的影响较小,但计算复杂度又太高了。
为了减少因样本划分不同引入的误差,k折交叉验证通常要随机使用不同的划分重复P次,最终评估结果是这P次k折交叉验证结果的均值,列“10次10折交叉验证”,与“100次留出法”,都是进行100次训练。
在这里插入图片描述

2.2.3 自助法

自助法”,直接用自主采样法为基础,在给定包含m个样本的数据集D,每次随机从D中取一个样本,放在D’中,然后将样本放回原有的样本中,进行重复取样(执行m次),也就是又放回的取样,最后得到D’,这就是自主采样的结果,而在D’中包含D中的元素多次出现,而另一部分不会出现,样本在m次采样中始终不被采到的概率是 [公式] ,取极限:
在这里插入图片描述

初始的数据集D中约有36.8%的样本为被采集到数据集D’。于是用D’做训练集,D-D’做测试集(也就是未采集的36.8%部分元素)。自助法对于数据集较小,难以划分为训练/测试集是很有用。

自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此,在初始数据量足够时,留出法和交叉验证法更常用一些。

每个算法按某组参数配置训练之后都会得到一个模型。 算法本身的一些参数,例如 k 近邻的近邻个数 k、支持向量机的参数 C,就是这里提到的算法参数,亦称超参数。
算法训练后会得到一个模型,例如支持向量机最终会得到 w 和 b 具体的值,这就是模型参数。用模型参数就可以对未见样本做预测了。

有时算法需要从候选超参数中选择使用其一,例如支持向量机的参数 C;这时需要先将训练集继续划分为两部分,其中一部分(暂称为小训练集)用于训练使用了不同候选超参数的模型,然后将剩余部分(即验证集)用于测试,进 而基于验证集测试结果选出较好的超参数;然后,再以此超参数为准,在整个训练集上重新训练,再用测试集进行测试其性能。

2.3 性能度量

回归任务最常用的性能度量是"均方误差" (mean squared error):
E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=\frac{1}{m}\sum_{i=1}^m(f(\bm{x_i})-y_i)^2 E(f;D)=m1i=1m(f(xi)yi)2

对于连续函数,数据分布 D 和概率密度函数 p(.), 均方误差可描述为:
E ( f ; D ) = ∫ x ∼ D ( f ( x ) − y ) 2 p ( x ) d x E(f;D)=\int_{\bm{x}\sim D}(f(\bm{x})-y)^2p(\bm{x})dx E(f;D)=xD(f(x)y)2p(x)dx

分类错误率定义为:
E ( f ; D ) = 1 m ∑ i = 1 m II ( f ( x i ) = ̸ y i ) E(f;D)=\frac{1}{m}\sum_{i=1}^m\textrm{II}(f(\bm{x_i}) =\not y_i) E(f;D)=m1i=1mII(f(xi)≠yi)

精度则定义为:
a c c ( f ; D ) = 1 m ∑ i = 1 m II ( f ( x i ) = y i ) = 1 − E ( f ; D ) acc(f;D)=\frac{1}{m}\sum_{i=1}^m\textrm{II}(f(\bm{x_i}) = y_i)\\ =1-E(f;D) acc(f;D)=m1i=1mII(f(xi)=yi)=1E(f;D)

对于连续函数,数据分布 D 和概率密度函数 p(.), 错误率与精度可分别描述为:
E ( f ; D ) = ∫ x ∼ D II ( f ( x ) = ̸ y ) p ( x ) d x E(f;D)=\int_{\bm{x}\sim D}\textrm{II}(f(\bm{x})=\not y)p(\bm{x})dx E(f;D)=xDII(f(x)≠y)p(x)dx
a c c ( f ; D ) = ∫ x ∼ D II ( f ( x ) = y ) p ( x ) d x = 1 − E ( f ; D ) acc(f;D)=\int_{\bm{x}\sim D}\textrm{II}(f(\bm{x})= y)p(\bm{x})dx\\ =1-E(f;D) acc(f;D)=xDII(f(x)=y)p(x)dx=1E(f;D)
查准率 P(也称准确率) 与查全率 R(也称召回率) 分别定义为:
在这里插入图片描述
P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP

查准率和查全率是一对矛盾的度量.一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。在这里插入图片描述
P-R 图直观地显示出学习器在样本总体上的查全率、 查准率。在进行比较时,若一个学习器的 P-R 曲线被另一个学习器的曲线完全"包住" , 则可断言后者的性能优于前者。 例如图中学习器 A 的性能优于学习器 C; 如果两个 学习器的 P-R 曲线发生了交叉,例如图中的 A 与 B ,则难以一般性地断言 两者孰优孰劣。只能在具体的查准率或查全率条件下进行比较然而,在很多情形下,人们往往仍希望把学习器 A 与 B 比出个高低. 这时一个比较合理的判据是比较 P-R 曲线节面积的大小。
"平衡点 " (Break-Event Point,简称 BEP)就是这样一个度量,它是"查准率=查全率"时的取值,例如图中学习器 C 的 BEP 是 0.64,而基于 BEP 的比较,可认为学习器 A 优于 B .但 BEP 还是过于简化了些,更常用的是 F1 度量:
F 1 = 2 × P × R P + R = 2 × T P 样 例 总 数 + T P − T N F1=\frac{2\times P \times R}{P+R}=\frac{2\times TP}{样例总数+TP-TN} F1=P+R2×P×R=+TPTN2×TP

在一些应用中,对查准率和查全率的重视程度有所不同。例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容确是用户感兴趣的,此时查准率更重要;而在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时查全率更重要。 F1 度量的一般形式 − F β -F_\beta Fβ 能让我们表达出对查准率/查全率的不同偏好,它定义为:

F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_\beta=\frac{(1+\beta^2)\times P \times R}{(\beta^2 \times P)+R} Fβ=(β2×P)+R(1+β2)×P×R
ß> 1 时查全率有更大影响; ß < 1 时查准率有更大影响。
为权衡不同类型错误所造成的不同损失,可为错误赋予"非均等代价" (unequa1 cost). .在非均等代价下,我们所希望的不再是简单地最小化错误次数,而是希望最小化"总体代价" (total cost).

2.4 比较检验

机器学习中性能比较涉及几个重要因素:首先,我们希望比较的是泛化性能,然而通过实验评估方法我们获得的是测试集上的性能,两者的对比结果可能未必相同;第二,测试 集上的性能与测试集本身的选择有很大关系,且不论使用不同大小的测试集会得到不同的结果,即使用相同大小的测试集,若包含的测试样例不同,测试结果也会有不同;第三,很多机器学习算法本身有一定的随机性,即便用相同的参数设置在同一个测试集上多次运行,其结果也会有不同。统计假设检验(hypothesis test)为我们进行学习器t性能比较提供了重要依据。
假设检验中的"假设"是对学习器泛化错误率分布的某种判断或猜想,例如 “ε= ε0”. 现实任务中我们并不知道学习器的泛化错误率,只能获知其测试错误率。泛化错误率与测试错误率未必相同,但直观上二者接近的可能性应比较大,相差很远的可能性比较小。因此,可根据测试错误率估计出泛化错误率的分布。
泛化错误率为 ε 的学习器在一个样本上犯错的概率是 ε; 则在 m 个测试样本中,泛化错误率为 ε 的学习器被测得测试错误率为 ε 的概率:
P ( ϵ ^ , ϵ ) = { m ϵ ^ × m } ϵ ϵ ^ × m ( 1 − ϵ ) m − ϵ ^ × m P(\hat{\epsilon},\epsilon)= \left\{ \begin{matrix} m\\ \hat{\epsilon}\times m \end{matrix} \right\}\epsilon^{\hat{\epsilon}\times m}(1-\epsilon)^{m-\hat{\epsilon}\times m} P(ϵ^,ϵ)={mϵ^×m}ϵϵ^×m(1ϵ)mϵ^×m
∂ P ( ϵ ^ ; ϵ ) ∂ ϵ = 0 \frac{\partial P(\hat{\epsilon};\epsilon)}{\partial \epsilon}=0 ϵP(ϵ^;ϵ)=0
若欲求最大似然估计,只需令 :
ϵ = ϵ ^ \epsilon=\hat{\epsilon} ϵ=ϵ^

2.5 偏差和方差

不考虑噪声,偏差很大可以认为是由模型欠拟合引起的,方差很大可以认为是由模型过拟合引起的。
学习算法的期望预测为:
f ‾ ( x ) = E D [ f ( x ; D ) ] \overline{f}(\bm{x})=E_D[f(\bm{x};D)] f(x)=ED[f(x;D)]
使用样本数相同的不同训练集产生的方差为:
v a r ( x ) = E D [ ( f ( x ; D ) − f ‾ ( x ) ) 2 ] var(\bm{x})=E_D[(f(\bm{x};D)-\overline{f}(\bm{x}))^2] var(x)=ED[(f(x;D)f(x))2]
噪声为:
ε 2 = E D [ ( y D − y ) 2 ] \varepsilon^2=E_D[(y_D-y)^2] ε2=ED[(yDy)2]
期望输出与真实标记的差别称为偏差(bias),即:
b i a s 2 ( x ) = ( ( ‾ f ) ( x ) − y ) 2 bias^2(\bm{x})=(\overline(f)(\bm{x})-y)^2 bias2(x)=((f)(x)y)2

为便于讨论,假定噪声期望为0,即 E[yD -y] =0. 通过简单的多项式展开合并,可对算法的期望泛化误差进行分解:
在这里插入图片描述
E ( f ; D ) = b i a s 2 ( x ) + v a r ( x ) + ε 2 E(f;D)=bias^2(\bm{x})+var(\bm{x})+\varepsilon^2 E(f;D)=bias2(x)+var(x)+ε2
即泛化误差可分解为偏差、方差与噪声之和。
回顾偏差、方差、噪声的含义:偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。偏差一方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。
一般来说,偏差与方差是有冲突的。在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率;随着训练程度的加深, 学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,方差 逐渐主导了泛化错误率;在训练程度充足后,学习器的拟合能力已非常强,训练数据发生的轻微扰动都会导致学习器发生显著变化,若训练数据自身的、非全局的特性被学习器学到了,则将发生过拟合。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《机器学习》周志华(西瓜书)学习笔记 第二章 模型评估与选择 的相关文章

  • linux svn 用户名存储,Linux下SVN账户密码保存设置

    Linux下用SVN进行更新等操作时 总是提示输入用户名和密码 很不方便 因此搜了下解决办法 总结如下 Linux下用SVN进行更新等操作时 总是提示输入用户名和密码 很不方便 因此搜了下解决办法 总结如下 打开SVN配置文件 vim ho

随机推荐

  • SQL注入(2)——各种注入

    本专栏是笔者的网络安全学习笔记 一面分享 同时作为笔记 前文链接 WAMP DVWA sqli labs 搭建 burpsuite工具抓包及Intruder暴力破解的使用 目录扫描 请求重发 漏洞扫描等工具的使用 网站信息收集及nmap的下
  • 亲密关系沟通-【独特性】尊重与探索他人

    忽视自己是逃避 忽视对方也是逃避 故事 理发师抱怨老婆不换空调 你有没有问过她 为什么不愿意换 谁知道她怎么想的 你承认对方的独特性 就不用做任何改变 叙述测试 你讲述经历里的别人有ta的想法吗 如何把对方从一个活生生的人变成ta就是那样的
  • HTTPS为什么安全 &分析 HTTPS 连接建立全过程

    本文将分两个专题去理解HTTPS 专题一 HTTPS为什么安全 1 http为什么不安全 http协议属于明文传输协议 交互过程以及数据传输都没有进行加密 通信双方也没有进行任何认证 通信过程非常容易遭遇劫持 监听 篡改 严重情况下 会造成
  • WSL无法保存文件(权限不足)

    sudo chown R username 其中username是你的用户名
  • windows vscode 安装+配置go环境

    一下载 go语言官方下载地址 https golang org dl 找到适合你系统的版本下载 本人下载的是windows版本 也可以下载Source自己更深层次研究go语言 二安装 一路next 三 安装后目录 Go语言安装之后 C Go
  • WebApi 打个Attribute 统一处理异常

    我们处理异常的时候通常都要写形如以下的代码 try xxxxx catch Exception ex log write ex Message 前一段时间看杨中科的视频 其中吐糟了 mvc 的管道机制 当然用在web ui 的渲染上这个还不
  • Buck电路基础知识

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net weixin 42005993 article details 120144144 这
  • Windows下libmodbus库的编译和使用

    一 前言 最近要搞一个PC端Qt上位机控制机械手的移动 需要用到串口io卡 控制的话需要使用libmodbus库 就想着自己编译一下libmodbus库 过程如下 二 编译过程 2 1 libmodbus的下载和安装 下载地址 https
  • pytorch7-可视化训练过程(过程中显示)

    import torch import torch nn as nn import torchvision import torchvision utils as vutils from torch optim import SGD imp
  • 安全连载——CSDN区块链大本营出品

    史上杀伤力最大的溢出型漏洞到底是什么 看这一篇就够了 第1期 4月发生的BEC事件以及SMT事件已经沉淀一段时间了 具体的情况也被多方媒体所报道 相关的漏洞根源问题也有很多大神团队的分析和指正 近日 有安全团队将各种已经发生或可能发生的类似
  • Marshaller和Unmarshaller用法示例

    import java io FileNotFoundException import java io FileOutputStream import java io OutputStream import javax xml bind J
  • Qt之QDialog禁用右上角关闭按钮

    setWindowFlags windowFlags Qt WindowCloseButtonHint
  • 【深度学习】笔记12:win10下的VS2013编辑代码的时候,非常卡顿,怎么样解决?

    给新电脑连续配置了三天环境 双系统下的caffe和NVIDIA环境配置好之后 终于可以看代码了 结果在vs2013下对代码进行注释的时候 代码编辑器用起来非常卡顿 这个问题的解决方法如下所示 1 首先确定是不是硬件和系统的问题 据说win8
  • 2.4.1 C# 和 F# 中的类型推断

    2 4 1 C 和 F 中的类型推断 大多数的类型有简称 例如 int 或 Random 只有很少一部分需要类型推断 因为手写类型名称并不困难 C 2 0 支持泛型 因此 可以构造更复杂的类型 在函数语言中的类型 像 F 是相当复杂的 尤其
  • R语言legend函数参数详解

    legend x y NULL legend fill NULL col par col border black lty lwd pch angle 45 density NULL bty o bg par bg box lwd par
  • Scala学习系列(二)——环境安装配置

    Scala下载地址 https www scala lang org download 一 安装JDK 首先 因为Scala是运行在JVM平台上的 所以安装Scala之前要安装JDK 二 二进制安装方式 我们可以直接用二进制安装Scala
  • 合并BPL包图文教程

    Delphi IDE 本身就是一个插件模式的工具 插件的好处不用多说 运行包的BPL 其实就是众多单元的集合 因此可以再次重新组合 只要你将各个BPL包用到的单元再组合一次 本文以 http code google com p tangra
  • libuv源码分析(1)事件循环分析

    前言 libuv总是报出一些让人难以理解的错误 作为一个C的项目 不具有Java JavaScript php那样的人气 很难百度到一些问题的答案 甚至google也不行 为了用好libuv 也为了学习吧 我开始看libuv的源码 不知道自
  • 【正点原子STM32连载】 第三十一章 睡眠模式实验 摘自【正点原子】APM32F407最小系统板使用指南

    1 实验平台 正点原子stm32f103战舰开发板V4 2 平台购买地址 https detail tmall com item htm id 609294757420 3 全套实验源码 手册 视频下载地址 http www openedv
  • 《机器学习》周志华(西瓜书)学习笔记 第二章 模型评估与选择

    机器学习 周志华 学习笔记 总目录 世上只有一种投资是只赚不赔的 那就是学习 当你的的能力还驾驭不了你的目标时 就应该沉下心来历练 当你的才华撑不起你的野心时 就应该静下心来学习 第二章 模型评估与选择 2 1 经验误差与过拟合 错误率 E