《机器学习》 学习记录 - 第二章

news/2024/12/23 12:45:52/文章来源:https://www.cnblogs.com/xsRecord/p/18450865

好多看不懂的高数内容。。。

第2章 模型评估与选择

2.1 经验误差与过拟合

  • 错误率(error rate):分类错误的样本数占样本总数的比例。
    若在m个样本中有a个样本分类错误,则错误率\(E=a/m\);
    而常说的 精度 则等于\(1-a/m\),即 “精度=1-错误率” ,常写为百分比形式。

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

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

  • 过拟合(overfitting)/ 过配:学习器把训练样本学得“太好”,把训练样本自身的一些特点当作了潜在样本都会具有的一般性质的现象。是机器学习面临的关键障碍,无法彻底避免。

  • 欠拟合(underfitting)/ 欠配:学习器对训练样本的一般性质尚未学好的现象。该现象较容易克服。

学习器的学习能力是否“过于强大”,是由学习算法和数据内涵共同决定的。

2.2 评估方法

我们使用“测试集”(testing set)来测试学习器对新样本的判别能力,以测试集上的“测试误差”(testing error)作为泛化误差的近似。

通常假设测试样本也是从样本真实分布中独立同分布采样而得,且测试集应尽可能与训练集互斥。

对包含\(m\)个样例的数据集\(D\)进行适当的处理,从中产生出训练集\(S\)和测试集\(T\),有以下几种常见做法:

2.2.1 留出法

留出法(hold-out)直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集\(S\),另一个作为测试集\(T\)

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

  • 分层采样(stratified sampling):保留类别比例的采样方式。

另外需要注意,即便在给定训练/测试集的样本比例后,仍存在多种划分方式对初始数据集\(D\)进行分割。因此,单次使用留出法得到的估计结果往往不够稳定可靠。一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。

2.2.2 交叉验证法

交叉验证法(cross validation)先将数据集\(D\)划分为\(k\)个大小相似的互斥子集,每个子集$ D_{i} \(都尽可能保持数据分布的一致性,即从\)D\(中通过分层采样得到。然后,每次用k-1个子集的并集作为训练集,余下的那个自己作为测试集。这样就可获得\)k\(组训练/测试集来进行\)k\(次训练和测试,最终返回的是这\)k$个测试结果的均值。

由于交叉验证法评估结果的稳定性和保真性在很大程度上取决于\(k\)的取值,故交叉验证法也被称为“k折交叉验证”(k-fold cross validation)/ “k倍交叉验证”。

pAGYK3t.png

与留出法相似,将数据集\(D\)划分为\(k\)个子集存在多种划分方式。k折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这 p次k折交叉验证 结果的均值。

假定数据集\(D\)中包含\(m\)个样本,若令\(k=m\),则得到了特例“留一法”(简称\(LOO\))。

留一法的评估结果往往被认为比较准确,但它也有自己的缺陷:数据集较大时,训练\(m\)个模型计算开销可能太大。

2.2.3 自助法

自助法”(bootstrapping)直接以自助采样法为基础。它能够减少训练样本规模不同造成的影响,还能比较高效地进行实验估计。

给定包含\(m\)个样本的数据集\(D\),对其采样产生数据集\(D^{'}\):每次随机从\(D\)中挑选一个样本,将其拷贝放入\(D^{'}\),然后再将该样本放回初始数据集\(D\)中,使该样本下次采样时仍可能被采到。这个过程重复执行\(m\)次后,即可得到包含\(m\)个样本的数据集\(D^{'}\)

我们将\(D^{'}\)用作训练集,\(D\) \ \(D^{'}\)用作测试集。

  • 包外估计(out-of-bag estimate):实际评估的模型与期望评估的模型都使用\(m\)个训练样本,但仍有部分没在训练集中出现的样本用于测试。

自助法在数据集较小、难以有效划分训练/测试集时很好用。且能从初始数据集中产生多个不同的训练集,对集成学习等方法有很大好处。但自助法产生的数据集改变了初始数据集的分布,这将会引入估计偏差
所以,在初始数据量足够时,留出法和交叉验证法更常用一些。

2.2.4 调参与最终模型

  • 调参(parameter tuning)/ 参数调节:对算法参数(parameter)进行设定。

我们通常将学得模型在实际使用中遇到的数据称为测试数据
模型评估与选择中用于评估测试的数据集常称为“验证集”(validation set)。也就是说,训练的数据集将被划分为训练集验证集测试集是指实际使用时遇到的数据。

模型选择和调参是基于验证集上的性能进行的。

2.3 性能度量

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

在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果。即模型的“好坏”是相对的。

  • 预测任务中,评估学习器\(f\)的性能,即把学习器预测结果\(f(x)\)与真实标记\(y\)进行比较。
  • 回归任务中,使用均方误差(mean squared error)进行性能度量。
  • 分类任务中,性能度量的方式更多:
    • 错误率与精度
    • 查准率、查全率与\(F1\)
    • ROC与AUC
    • 代价敏感错误率与代价曲线

2.4 比较检验

统计假设检验(hypothesis test)为我们进行学习器性能比较提供了重要依据。

有几种常用的机器学习性能比较方法:

  • 假设检验
  • 交叉验证\(t\)检验
  • McNemar 检验
  • Friedman 检验 与 Nemenyi 后续检验

2.5 偏差与方差

"偏差-方差分解"(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具。

泛化误差可分解为偏差方差噪声之和。

  • 偏差:度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力
  • 方差:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响
  • 噪声:表达了当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度

泛化性能是由学习算法的能力数据的充分性以及学习任务本身的难度共同决定的。

但是,偏差与方差之间有着冲突,这称为偏差-方差窘境(bias-variance dilemma)。
学习器训练不足时,偏差主导泛化错误率;随着训练程度加深,方差会逐渐主导泛化错误率。

pAGYMgP.png

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git push代码失败,鉴权失败

github 无法push 代码 1、确保设置了用户名和邮箱 git config --global user.name "mars" git config --global user.email "mars3603@163.com" 2、修改 .git/config 中的URL,将https的方式修改为 ssh https方式:url = https://github.com/Mars3603/grpc…

织物图像的配准和拼接算法的MATLAB仿真,对比SIFT,SURF以及KAZE

1.算法运行效果图预览 (完整程序运行后无水印)SIFT: surf:kaze: 2.算法运行软件版本 MATLAB2022a3.部分核心程序 (完整版代码包含注释和操作步骤视频)img1 = imread(Images\F1.jpg); img2 = imread(Images\F2.jpg); figure; subplot(121); imshow(img1); title(原始图片1)…

06.OpenFeign接口调用

1.提问 1.1 已经有RestTemplate + LoadBalancer的方式进行服务的调用,为什么还要有OpenFeign? 因为OpenFeign的功能更强大,和使用更便携。 1.2 使用那个? 推荐使用OpenFeign 2.OpenFeign是什么 2.1 官网翻译 https://docs.spring.io/spring-cloud-openfeign/reference/spri…

Hadoop单机模式

1.安装JDK 1.1 下载解压 tar zxf jdk-8u151-linux-x64.tar.gz -C /usr/local/src mv jdk-8u151-linux-x64 java1.2 添加环境变量 export JAVA_HOME=/usr/local/src/java export PATH=$PATH:$JAVA_HOME/binsource /etc/prifile java -version2.安装Hadoop 1.1 下载解压 tar zxf …

mysql读写分离的最佳实践

一. 传统的读写分离方式 在 MySQL 中实现读写分离可以通过以下几种方式来达到目的: 1. 主从复制 使用主从复制(Master-Slave Replication)是实现读写分离的常见方式。主库:处理所有的写入操作(INSERT、UPDATE、DELETE)。 从库:负责处理读操作(SELECT)。步骤:设置主从…

《机器学习初步》笔记 第一章

第一章 绪论 1.1 引言 机器学习的经典定义:利用经验(数据)改善系统自身的性能 经典的机器学习过程:机器学习最重要的理论模型:PAC(概览近似正确)1.2 基本术语 数据集:一组记录的集合 学习/训练:通过执行某个学习算法,得到模型,学的的模型对应数据的某种潜在规律 示例…

XTimer定时微服务项目

定时微服务项目,分布式架构下的定时器Xtimer定时微服务 项目背景 在学校社团中,有给社团成员发送活动通知的任务需求 有定期执行某项任务的需求,比如每周末举办一次线下活动,每个月举行一次团建 再比如,我有一个任务需要设置定时发布 定时微服务调研对比方案 不足点JavaTi…

集合竞价如何看强弱?

买股票前先把集合竞价搞懂 一、集合竞价介绍 1. 什么是集合竞价 所谓集合竞价是指在股票每个交易日上午9:15—9:25,由投资者按照自己所能接受的心理价格自由地进行买卖申请。详情可参考下图:注:严谨的集合竞价时间为9:15-9:25,下文在聊到集合竞价时候我会把9:25-9:30时间…

ECS云服务器搭建Mysql,并提供公网连接

搭建mysql8.0参考:https://blog.csdn.net/ShockChen7/article/details/126965940 搭建完成之后,使用navicat发现连接不上,发现是因为安全组没有设置:安全组需要开放3306端口。 百度参考: 然后我改了下安全组就可以供外部连接了。

清单文件 AndroidManifest.xml

每个应用的根目录中都必须包含一个 AndroidManifest.xml,并且文件名必须一模一样。 这个文件中包含了APP的配置信息,系统需要根据里面的内容运行APP的代码,显示界面。

20222420 2024-2025-1 《网络与系统攻防技术》实验一实验报告

1.实验内容 1.1 学习内容总结 1.1.1 初步了解缓冲区溢出漏洞 首先学习了安全漏洞的相关概念,然后聚焦在其中的缓冲区溢出漏洞上。学习了缓冲区溢出漏洞相关的定义和发生的原因,并了解了缓冲区溢出发展历史上的经典攻击,如红色代码蠕虫、冲击波病毒、震荡波病毒、心脏出血、乌…