第二章 模型评估和选择

news2024/9/23 23:26:42

文章目录

  • 第二章 模型评估和选择
    • 2.1经验误差与过拟合
    • 2.2评估方法
      • 2.2.1留出法
      • 2.2.2交叉验证法
      • 2.2.3自助法
      • 2.2.4调参与最终模型
    • 2.3性能度量
      • 2.3.1错误率与精度
      • 2.3.2查准率、查全率和F1
      • 2.3.3ROC与AUC
      • 2.3.4代价敏感错误率与代价曲线

第二章 模型评估和选择

2.1经验误差与过拟合

通常我们把分类错误的样本数占样本总数的比例称为“错误率”(errorrate),即如果在m个样本中有α个样本分类错误,则错误率E= a/m;相应的,1 - a/m称为“精度”(accuracy),即“精度=1-错误率”.更一般地,我们把学习器的实际预测输出与样本的真实输出之间的差异称为“误差”(error),学习器在训练集上的误差称为“训练误差”(training error)或“经验误差”(empirical error),在新样本上的误差称为“泛化误差”(generalizationerror).显然,我们希望得到泛化误差小的学习器.然而,我们事先并不知道新样本是什么样,实际能做的是努力使经验误差最小化.在很多情况下,我们可以学得一个经验误差很小、在训练集上表现很好的学习器。

我们实际希望的,是在新样本上能表现得很好的学习器.为了达到这个目的,应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,这样才能在遇到新样本时做出正确的判别.然而,当学习器把训练样本学得“太好”了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降.这种现象在机器学习中称为“过拟合”(overfitting).与“过拟合”相对的是“欠拟合”(underfitting),这是指对训练样本的一般性质尚未学好。

2.2评估方法

将数据集D分为训练集S和测试集T。
要尽可能地保持数据分布地一致性

2.2.1留出法

将D分为互斥的两个数据集S和T。

2.2.2交叉验证法

将数据分为k个相似的互斥子集。其中,k-1个子集作为训练集,余下子集为测试集。共有k组训练/测试集,返回这k次的平均结果。

2.2.3自助法

给定包含m个样本的数据集D,我们对它进行采样产生数据集D’:每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D’,这就是自助采样的结果.显然,D中有一部分样本会在D’中多次出现,而另一部分样本不出现.可以做一个简单的估计,样本在m次采样中始终不被采到的概率是 ( 1 − 1 m ) m \left(1-\frac{1}{m}\right)^m (1m1)m, 取极限得到 lim ⁡ m → ∞ ( 1 − 1 m ) m ↦ 1 e ≈ 0.368 取极限得到\lim\limits_{m\to\infty}\left(1-\frac{1}{m}\right)^m\mapsto\frac{1}{e}\approx0.368 取极限得到mlim(1m1)me10.368
即通过自助采样,初始数据集D中约有36.8%的样本未出现在采样数据集D’中.于是我们可将D’用作训练集,D\D’用作测试集;这样,实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有数据总量约1/3的、没在训练集中出现的样本用于测试.这样的测试结果,亦称“包外估计”.
自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处.

2.2.4调参与最终模型

大多数学习算法都有些参数(parameter)需要设定,参数配置不同,学得模型的性能往往有显著差别.因此,在进行模型评估与选择时,除了要对适用学习算法进行选择,还需对算法参数进行设定,这就是通常所说的“参数调节”或简称“调参”(parameter tuning).

很多强大的学习算法有大量参数需设定;这将导致极大的调参工程量,以至于在不少应用任务中,参数调得好不好往往对最终模型性能有关键性影响.
给定包含m个样本的数据集D,在模型评估与选择过程中由于需要留出一部分数据进行评估测试,事实上我们只使用了一部分数据训练模型.因此,在模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练模型.这个模型在训练过程中使用了所有m个样本,这才是我们最终提交给用户的模型.

另外,需注意的是,我们通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为“验证集”(validation set).例如,在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参.

2.3性能度量

在预测任务中,给定样例集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } D=\{(x_1,y_1),(x_2, y_2),\dots ,(x_m,y_m)\} D={(x1,y1),(x2,y2),,(xmym)},其中 y i y_i yi是示例 x i x_i xi的真实标记.要评估学习器f的性能,就要把学习器预测结果 f ( x ) f(x) f(x)与真实标记 y y y进行比较.回归任务最常用的性能度量是“均方误差” E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=\frac{1}{m}\sum_{i=1}^m\left(f\left(\boldsymbol{x}_i\right)-y_i\right)^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;\mathcal{D})=\int_{\boldsymbol{x}\sim\mathcal{D}}\left(f\left(\boldsymbol{x}\right)-y\right)^2p(\boldsymbol{x})\text{d}\boldsymbol{x} E(f;D)=xD(f(x)y)2p(x)dx

2.3.1错误率与精度

错误率: E ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) \begin{aligned} & \\ && E(f;D) && =\frac{1}{m}\sum_{i=1}^{m}\mathbb{I}\left(f\left(\boldsymbol{x}_{i}\right)\neq y_{i}\right) \end{aligned} E(f;D)=m1i=1mI(f(xi)=yi)
精度: acc ⁡ ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) = y i ) = 1 − E ( f ; D ) . \begin{aligned} \operatorname{acc}(f;D)& =\frac{1}{m}\sum_{i=1}^m\mathbb{I}\left(f\left(\boldsymbol{x}_i\right)=y_i\right) \\ &=1-E(f;D). \end{aligned} acc(f;D)=m1i=1mI(f(xi)=yi)=1E(f;D).

2.3.2查准率、查全率和F1

对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)四种情形,令TP、FP、TN、FN分别表示其对应的样例数,则显然有TP+FP+TN+FN = 样例总数.分类结果的“混淆矩阵”:

真实情况预测结果
正例反例
正例TP(真正例)FN(假反例)
反例FP(假正例)TN(真反例)

查准率P与查全率R分别定义为: P = T P T P + F P P={\frac{T P}{T P+F P}} P=TP+FPTP R = T P T P + F N R={\frac{T P}{T P+F N}} R=TP+FNTP
一般来说,两者矛盾:
在这里插入图片描述
基于平衡点(BEP)的比较,可认为A优于B。
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 β = ( 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
其中 β > 0 \beta>0 β>0度量了查全率对查准率的相对重要性. β = 1 \beta = 1 β=1时退化为标准的F1; β > 1 \beta>1 β>1时查全率有更大影响; β < 1 \beta <1 β<1时查准率有更大影响.
n个二位类混淆矩阵上综合考察查准率和查全率: m a c r o − P = 1 n ∑ i = 1 ∞ P i , m a c r o − R = 1 n ∑ i = 1 n R i , m a c r o − F 1 = 2 × m a c r o − P × m a c r o − R m a c r o − P + m a c r o − R . \begin{gathered} \mathrm{macro-}P=\frac{1}{n}\sum_{i=1}^{\infty}P_{i}, \\ \mathrm{macro-}R=\frac{1}{n}\sum_{i=1}^{n}R_{i}, \\ \mathrm{macro-}F1=\frac{2\times\mathrm{macro-}P\times\mathrm{macro-}R}{\mathrm{macro-}P+\mathrm{macro-}R}. \end{gathered} macroP=n1i=1Pi,macroR=n1i=1nRi,macroF1=macroP+macroR2×macroP×macroR.

2.3.3ROC与AUC

ROC全称是“受试者工作特征”(Receiver Operating Characteristic)曲线。根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以它们为横、纵坐标作图,就得到了“ROC曲线”.与P-R曲线使用查准率、查全率为纵、横轴不同, ROC曲线的纵轴是“真正例率”(True Positive Rate,简称TPR),横轴是“假正例率”(False PositiveRate,简称FPR),基于表2.1中的符号,两者分别定义为 T P R = T P T P + F N , F P R = F P T N + F P . \begin{gathered} {\mathrm{TPR}} ={\frac{T P}{T P+F N}}, \\ \mathop{\mathrm{FPR}} =\frac{F P}{T N+F P}. \end{gathered} TPR=TP+FNTP,FPR=TN+FPFP. 在这里插入图片描述
进行学习器的比较时,与P-R图相似,若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者;若两个学习器的ROC曲线发生交叉,则难以一般性地断言两者孰优孰劣.此时如果一定要进行比较,则较为合理的判据是比较ROC曲线下的面积,即 AUC (Area UnderROC Curve),如上图所示.AUC: AUC = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) \text{AUC}=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)\cdot(y_i+y_{i+1}) AUC=21i=1m1(xi+1xi)(yi+yi+1)

形式化地看,AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系.给定m+个正例和m-个反例,令D+和D-分别表示正、反例集合,则排序“损失”(loss)定义为 ℓ r a n k = 1 m + m − ∑ x + ∈ D + ∑ x − ∈ D − ( I ( f ( x + ) < f ( x − ) ) + 1 2 I ( f ( x + ) = f ( x − ) ) ) \ell_{rank}=\frac{1}{m^+m^-}\sum_{\boldsymbol{x}^+\in D^+}\sum\limits_{\boldsymbol{x}^-\in D^-}\left(\mathbb{I}\left(f(\boldsymbol{x}^+)<f(\boldsymbol{x}^-)\right)+\frac{1}{2}\mathbb{I}\left(f(\boldsymbol{x}^+)=f(\boldsymbol{x}^-)\right)\right) rank=m+m1x+D+xD(I(f(x+)<f(x))+21I(f(x+)=f(x)))
即考虑每一对正、反例,若正例的预测值小于反例,则记一个“罚分”,若相等,则记0.5个“罚分”.容易看出, ℓ r a n k \ell_{rank} rank对应的是ROC曲线之上的面积:若一个正例在ROC曲线上对应标记点的坐标为 ( x , y ) (x, y) (x,y),则x恰是排序在其之前的反例所占的比例,即假正例率.因此有 AUC = 1 − ℓ r a n k \text {AUC} =1- \ell_{rank} AUC=1rank

2.3.4代价敏感错误率与代价曲线

二分类代价矩阵
真实类别预测类别
第0类第1类
第0类0cost_01
第1类cost_100

cost为错误的代价,不同错误可造成不同的代价。
“代价敏感”错误率为: E ( f ; D ; c o s t ) = 1 m ( ∑ x i ∈ D + I ( f ( x i ) ≠ y i ) × c o s t 01 + ∑ x i ∈ D − I ( f ( x i ) ≠ y i ) × c o s t 10 ) E(f;D;c o s t)=\frac{1}{m}\left(\sum_{\boldsymbol{x}_{i}\in D^{+}}\mathbb{I}\left(f\left(\boldsymbol{x}_{i}\right)\neq y_{i}\right)\times cost_{01} +\sum\limits_{\boldsymbol{x}_i\in D^-}\mathbb{I}\left(f\left(\boldsymbol{x}_i\right)\neq y_i\right)\times {cost}_{10} \right) E(f;D;cost)=m1(xiD+I(f(xi)=yi)×cost01+xiDI(f(xi)=yi)×cost10)
在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线”(cost curve)则可达到该目的.代价曲线图的横轴是取值为[0,1]的正例概率代价 P ( + ) c o s t = p × c o s t 01 p × c o s t 01 + ( 1 − p ) × c o s t 10 P(+)cost=\frac{p\times cost_{01}}{p\times cost_{01}+(1-p)\times cost_{10}} P(+)cost=p×cost01+(1p)×cost10p×cost01
其中p是样例为正例的概率;纵轴是取值为[0,1]的归一化代价: c o s t n o r m = F N R × p × c o s t 01 + F P R × ( 1 − p ) × c o s t 10 p × c o s t 01 + ( 1 − p ) × c o s t 10 c o s t_{n o r m}={\frac{\mathrm{FNR}\times p\times c o s t_{01}+\mathrm{FPR}\times(1-p)\times c o s t_{10}}{p\times c o s t_{01}+(1-p)\times c o s t_{10}}} costnorm=p×cost01+(1p)×cost10FNR×p×cost01+FPR×(1p)×cost10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/732289.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity-3d小游戏开发-----走迷宫

本人是在学习完c&#xff0c;c&#xff0c;数据结构算法&#xff0c;操作系统网络这些基础的课程之后&#xff0c;打算学习自己喜欢的游戏开发方向的东西&#xff0c;然后在B站上自学了几天unity&#xff0c;用到unity的触发器&#xff0c;碰撞&#xff0c;刚体&#xff0c;以及…

图像处理入门教程:从Python到Opencv

Python编程 这里主要针对有一定基础的读者&#xff0c;在Python编程中&#xff0c;掌握基础语法和数据类型是非常重要的。它们是构建程序的基石&#xff0c;是提供解决问题和开发应用的工具。在这里&#xff0c;我将简单介绍一些常用的语法和数据类型。 一、环境搭建 详细请…

14 - 信号优先级与安全性

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录 1. 信号优先级1.1 问题1.2 信号优先级的概念1.3 信号优先级实验设计1.3.1 发送端1.3.2 接收端1.3.3 编程实验&#xff1a;信号优先级实验 …

普通索引VS唯一索引

查询性能 假设 我们有一列int 类型的value 对它进行查询 (VALUE无重复字段) SELECT value FROM table where value 8; 如过是普通索引 找到value 8 的记录后还会继续找&#xff0c;直到碰到第一个不满足 k5 条件的记录。 如过是唯一索引 找到value 8这条记录就不会往下找…

百望股份高级PMO专家赵雅婧受邀为第十二届中国PMO大会演讲嘉宾

百望股份有限公司项目管理部高级PMO专家赵雅婧女士受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;PMO的组织建设与持续运营。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 众所周知&#xff…

图像全景拼接

TODO: 实现图片的全景拼接 流程&#xff1a; &#xff08;1&#xff09;检测左右2图片的SIFT关键特征点&#xff0c;并计算特征描述 &#xff08;2&#xff09;使用KNN检测来自左右2图的SIFT特征&#xff0c;进行匹配 &#xff08;3&#xff09;计算视角变换矩阵H&#xff0c…

目标跟踪基础:距离度量

本文来自公众号“AI大道理” —————— 距离度量在CV 、NLP以及数据分析等领域都有众多的应用。 距离度量可以当做某种相似度&#xff0c;距离越近&#xff0c;越相似。 在目标跟踪领域中&#xff0c;需要判断目标之间的距离或相似度&#xff0c;从而判断前后帧的目标是否…

Redis实战案例13-集群下的并发安全问题

在解决一人一单的问题上面&#xff0c;采用了悲观锁的方案&#xff0c;但是这种方案只适合单机情况&#xff0c;在集群的模式下就不适用了&#xff1b; 覆盖yaml文件中的端口号 修改nginx中conf&#xff0c;这样就可以反向代理到两个节点上去&#xff0c;轮询的负载均衡规则&am…

git bash---打开当前路径所在文件夹

0 Preface/Foreword 在Windows操作系统中使用git bash时&#xff0c;可以通过命令直接打开当前路径下的文件夹&#xff0c;命令如下 explorer .

MS17-010漏洞复现

官方描述&#xff1a;Microsoft Security Bulletin MS17-010 - Critical | Microsoft Learn漏洞描述&#xff1a; Microsoft Windows SMB Server远程代码执行漏洞&#xff0c;Microsoft Server Message Block 1.0 (SMBv1)服务器处理某些请求时&#xff0c;在实现上存在远程代码…

Mockplus Cloud - June 2023crack

Mockplus Cloud - June 2023crack 添加便签以澄清情节提要上的任何设计概念。 新的流程图工具直接在情节提要上可视化任何设计流程和过程。 添加了在发布到Mockplus Cloud时删除RP页面的功能。 添加设计注释时包括图像和链接。 添加了一个新的提示&#xff0c;用于在断开互联网…

MySQL练习题(1)

1,创建如下学生表 mysql> create table student( -> id int, -> name varchar(20), -> gender varchar(20), -> chinese int, -> math int, -> english int -> ); 插入如图数据 1-- 查询表中所有学生的信息 select *from student;2-- 查询表中所有学…

mysql语句练习题,创建表,枚举中文字符集设置,修改(update)

作业&#xff1a; 1.创建表&#xff1a; 创建员工表employee&#xff0c;字段如下&#xff1a; id&#xff08;员工编号&#xff09;&#xff0c;name&#xff08;员工名字&#xff09;&#xff0c;gender&#xff08;员工性别&#xff09;&#xff0c;salary&#xff08;员工薪…

厄尔尼诺,“烤热”新能源汽车市场?

在高温极端天气中&#xff0c;买新能源汽车的人变多了还是变少了&#xff1f; 7月4日&#xff0c;世界气象组织宣布&#xff0c;热带太平洋七年来首次形成厄尔尼诺条件&#xff0c;这可能导致全球气温飙升、破坏性天气和气候模式的出现。 注&#xff1a;1月底至6月初&#xff…

【离散数学】实践二 Floyd– Warshall算法

文章目录 目标原理设计与实现&#xff08;代码快照以及代码&#xff09;运行界面和结果截图结语 目标 给定一个距离矩阵&#xff0c;利用 Floyd– Warshall 算法编程&#xff08;C语言&#xff09;求任意两点之间的最短距离。 原理 求取多源最短路径常用Floyd算法&#xff0c…

支持向量机SVM代码详解——多分类/降维可视化/参数优化【python】

篇1&#xff1a;SVM原理及多分类python代码实例讲解&#xff08;鸢尾花数据&#xff09; SVM原理 支持向量机&#xff08;Support Vector Machine,SVM&#xff09;&#xff0c;主要用于小样本下的二分类、多分类以及回归分析&#xff0c;是一种有监督学习的算法。基本思想是寻…

腾讯云对象存储的创建和S3 Browser的使用

简述 想想第一次接触对象存储的时候还是很兴奋的&#xff0c;同时也是一脸懵逼&#xff1b;然后开始网上疯狂的找资料&#xff0c;但因为客户当时给的文档写的是关于Amazon S3之类的&#xff0c;所以自以为的就只有Amazon S3这一家&#xff0c;接着开始查资料&#xff0c;经过一…

Spark学习---2、SparkCore(RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))

1、RDD概述 1.1 什么是RDD RDD(Resilient Distributed Dataset)叫弹性分布式数据集&#xff0c;是Spark中对于分布式数据集的抽象。代码中是一个抽象类&#xff0c;它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。 1.2 RDD五大特性 1、一组分区&#xff0…

Pyecharts 绘制各种统计图的案例

Pyecharts 绘制各种统计图的案例 基础使用 from pyecharts import options as opts from pyecharts.charts import Bar, Line, Pie, Scatter from pyecharts.faker import Faker# 柱状图示例 def bar_chart():x_data Faker.choose()y_data Faker.values()bar (Bar().add_xa…

simulink实战 建模 简单车辆动力学模型

Gmg Discrete-TimeIntegrator 离散时间积分器