机器学习西瓜书笔记(二)

news2024/11/14 20:32:14

机器学习西瓜书笔记二

  • 第二章(chapter 2) 模型评估与选择 (参考机器学习西瓜书)
    • 第一节(section 1)经验误差与过拟合
    • 第二节(section 2)评估方法
      • 留出法
      • 交叉验证法
      • 自助法
      • 调参与最终模型
    • 第三节(section 3)性能度量
      • 错误率与精度
      • 查准率与查全率
      • ROC与AUC
      • 代价敏感错误率与代价曲线
    • 第四节(section 4)比较检验
      • 假设检验

第二章(chapter 2) 模型评估与选择 (参考机器学习西瓜书)

第一节(section 1)经验误差与过拟合

  • 错误率(error rate):分类错误的样本数占样本总数的比例称为错误率。
  • 精度(accuracy):精度 = 1 - 错误率。

如果在m个样本中有a个样本分类错误,那么错误率 E = a/m,精度 = 1 - E。

更一般地,把模型的实际预测输出与样本的真实输出之间的差异称为误差(error)。在训练集上的误差称为训练误差,在新样本/测试集上的误差称为泛化/测试误差。实际所希望的,是在新样本上能表现得很好的模型,在这里引入两个重要概念:过拟合与欠拟合。

过拟合:模型把训练样本学习的太好了,已经把训练样本自身的特点当做了所有潜在样本会存在的一般性质,会导致泛化性能下降。
在这里插入图片描述

上图即为学习发现过拟合时候的情况,可以看到随着学习轮数的增加,训练误差一直在下降,然而泛化误差在经历一小段下降后却开始升高,此时便需要采用一些措施来缓解过拟合问题。

欠拟合:模型在训练集上表现不佳,泛化能力也不佳。
在这里插入图片描述

需要认识到,欠拟合通常是因为学习能力低下而导致的,这一点可以较容易克服,然而过拟合是无法彻底避免的,所能做的只有运用各种方法来缓解,常见的缓解过拟合的方法有正则化与dropout等。(建议参考吴恩达机器学习的调参手册)

第二节(section 2)评估方法

通常,使用一个测试集来测试学习器(模型)对新样本的判别能力,然后以测试集上的"测试误差"来作为泛化误差的近似。需要注意,测试集应与训练集互斥,即测试样本尽量不在训练集中出现或未在训练集中使用过。

很多时候,最初都会得到一个包含m个数据样本的数据集D,那么如何得到训练集S和测试集T呢?自然是选择合适的方法对D进行划分,产生出训练集S和测试集T。
以下介绍几种常见的划分方法:

留出法

直接将数据集D划分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T,保证S∩T=∅且S∪T=D。
注意:训练集与测试集的划分要尽可能保证数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。
如果从采样(sampling)的角度来看待数据集的划分过程,则保留类别比例的采样方法一般称为"分层采样"(stratified sampling)。
而单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值为留出法的评估结果。
例如:进行100次随机划分,每次产生一个训练集和测试集用于实验评估,100次会得到100个结果,而留出法的返回应当是这100个结果的平均。
常见分割数据比例大约为0.6~0.8,即每次取数据集中60%-80%作为训练集,剩下的作为测试集。

交叉验证法

将数据集D划分为k个大小相似的互斥子集,即D=D1∪D2∪…∪Dk,Di∩Dj=∅(i≠j)。每个子集Di都尽可能保持数据分布的一致性,即从D中分层采样得到。然后每次用k-1个子集的并集作为训练集,剩下的那个子集作为测试集,这样就可以得到k组训练/测试集,从而进行k次训练和测试,最终返回这k次测试的均值。
显然,交叉验证法评估结果的稳定性与保真性在很大程度上取决于k的取值,为了强调这一点,通常把交叉验证法称为k折交叉验证(k-fold cross validation)。k常取值:5,10,20。与留出法相似,将D划分为k个子集有多种方法,假设k折交叉验证要随机使用不同的划分重复p次,则最终评估结果是这p次k折交叉验证结果的均值,常见有10次10折交叉验证(训练100次)。

交叉验证法也存在第一个特例:留一法(Leave-One-Out,简称LOO):假定数据集D中有m个样本,令k=m,则会发现,m个样本只有唯一的划分方法来划分为m个子集——每个子集一个样本,所以留一法的训练集与数据集D相比只差一个样本,故留一法中被实际评测的模型与期望评估的用D训练出的模型很相似,因此,留一法的评估结果往往被认为较准确。但是在数据集很大的时候,训练m个模型的开销明显是难以忍受的。故NLF定理在这里也同样适用。

自助法

在留出法和交叉验证法中,由于保留了部分样本作为测试,所以实际评估的模型中所使用的训练集比D小,而希望评估的是D训练出的模型,所以这必然会引入一些因训练样本规模不同而导致的估计偏差。自助法(bootstrapping)就是来解决这个问题。自助法以自助采样(bootstrap sampling)为基础(自助采样也叫"可重复采样"与"有放回采样"):给定包含m个样本的数据集D,对它进行采样产生数据集D’:每次从D中随机选一个样本,将其拷贝到D’中,再将其放回D中,重复m次,那么就可以得到包含m个样本的数据集D’。显然D中一部分样本会在D’中多次出现,而另一部分不出现,由一个简单的估计可以得到样本在m次采样中不被采到的概率如下:0.368。于是可以把D’当做训练集,D-D’作为测试集,这样,实际评估模型与期望评估模型都有m个训练样本,而仍然有数据总量1/3的样本用于测试,这样的测试结果,称为"包外估计"。

  • 注意:自助法在数据量较少,难以有效划分训练集和测试集的时候很有用,然而自助法改变了初始数据分布,引入了估计偏差,故在数据量足够的时候,留出法和交叉验证法更常用一些。

调参与最终模型

给定包含m个样本的数据集D,在模型评估与选择过程中由于需要留出一部分数据进行评估测试,事实上只使用了一部分数据训练模型。需要注意的是,通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集称为验证集。例如,在研究对比不同算法的泛化性能时,用测试集上的判别效果来估计泛化性能,而把训练数据另外划分为测试集和验证集,基于验证集上的性能来进行模型选择和调参。

训练集:用于模型训练。
验证集:用于模型训练过程中用于评估、调参等数据。
测试集:用于验证模型泛化能力。

第三节(section 3)性能度量

对学习器的泛化能力进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量(performance measure)。要评估学习器f的性能,就需要把学习器预测结果f(x)同真实标记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}(f(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)=∫_{x\sim D}(f(x)-y)^2p(x)dx E(f,D)=xD(f(x)y)2p(x)dx

错误率与精度

分类任务的性能度量:一般连续空间的度量公式为积分形式,由于实际应用通常为离散样本,故此后度量公式仅给出了离散情况的公式

  • 错误率:分类错误的样本数占样本总数的比例。 E ( f , D ) = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) E(f,D)=\frac{1}{m} \sum_{i=1}^{m} \mathcal{I}(f(x_i) \neq y_i) E(f,D)=m1i=1mI(f(xi)=yi),注 I \mathcal{I} I表示指示函数,函数括号内逻辑为真取1,否则取0。
  • 精度:分类正确的样本数占样本总数的比例。 a c c ( f , D ) = 1 − E ( f , D ) acc(f,D)=1-E(f,D) acc(f,D)=1E(f,D)

查准率与查全率

对于查准率和查全率的定义,书中有一个形象的例子:信息检索中,经常会关心"检索出的信息中有多少比例是用户感兴趣的" 、“用户感兴趣的信息中有多少被检索出来了”,“查准率”(precision)与"查全率" (recall) 是更为适用于此类需求的性能度量。对于二分类任务,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)与假反例(false negative)四种情形。分别对应为TP、FP、TN、FN。分类结果的"混淆矩阵"如下定义:

在这里插入图片描述

  • TP:被模型预测为正类的正样本(实际为正,预测也为正)。
  • TN:被模型预测为负类的负样本(实际为负,预测也为负)。
  • FP:被模型预测为正类的负样本(实际为负,预测为正)。
  • FN:被模型预测为负类的正样本(实际为正,预测为负)。

查准率P(准确率)与查全率R(召回率)分别定义为:

  • 查准率 $P = \frac{TP}{TP+FP} $
  • 查全率 R = T

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

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

相关文章

软件测试之白盒测试与黑盒测试详解

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、软件测试基本分类 一般地,我们将软件测试活动分为以下几类:黑盒测试…

【BUG】已解决:IndexError: list index out of range

已解决:IndexError: list index out of range 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开发者社区主…

NFS存储、API资源对象StorageClass、Ceph存储-搭建ceph集群和Ceph存储-在k8s里使用ceph(2024-07-16)

一、NFS存储 注意:在做本章节示例时,需要拿单独一台机器来部署NFS,具体步骤略。NFS作为常用的网络文件系统,在多机之间共享文件的场景下用途广泛,毕竟NFS配置方 便,而且稳定可靠。NFS同样也有一些缺点&…

TaD+RAG-缓解大模型“幻觉”的组合新疗法

TaD:任务感知解码技术(Task-aware Decoding,简称TaD),京东联合清华大学针对大语言模型幻觉问题提出的一项技术,成果收录于IJCAI2024。 RAG:检索增强生成技术(Retrieval-augmented G…

《昇思25天学习打卡营第25天|第14天》

今天是打卡的第十四天,今天学习的是应用实践中的热门LLM及其他AI应用的K近邻算法实现红酒分类篇。这一片主要介绍使用MindSpore在部分wine数据集上进行KNN实验,对实验的步骤的介绍:K近邻算法原理介绍(分类问题、回归问题和距离的定…

电商库存API设计与实现详解

库存管理在电商运营中非常重要,因为这影响到电商交易是否能够顺利进行。很多从线下零售发展到电商渠道的朋友了解到了电商库存接口能够高效管理库存,但不知道自己想要应用的场景是否仅通过电商库存接口就能实现,那不妨先了解一下电商库存接口…

最新开源的PDF版面分析工具 PDF-Extract-Kit

最近有一个新开源的版面分析的模型,做PDF版面分析效果非常好。而且对公式的解析效果比较好。虽然现在star数量不高,但是绝对会涨起来的。我们调研对比过很多开源的工具,效果都强差人意,这个是我看到的最满意的一个。甚至要比我们生…

牛客TOP101:判断链表中是否有环

文章目录 1. 题目描述2. 解题思路3. 代码思路 1. 题目描述 2. 解题思路 快慢指针,原理就是快指针一次走两步,慢指针一次走一步,快指针会先进入到环中进行循环,慢指针后进行。以相对来看,快指针是比慢指针多走一步&…

构建自定义bootos

1 构建自定义bootos BootOS (也称 ramos ),是一个基于内存的操作系统,系统启动后全部加载到内存中运行,不依赖磁盘存储设备,因此可以对硬件层级进行一系列的操作。主要分为两部分内核和文件系统。 1.1 构建vmlinuz内核文件 1.1.1 从现有系统获取 从系统iso镜像获…

使用Python Turtle绘制圣诞树和装饰

简介(❤ ω ❤) 在这篇文章中,我们将探索如何使用Python的Turtle模块来绘制一个充满节日气氛的圣诞树,以及一些可爱的装饰品。Turtle是一个受Logo语言启发的图形库,非常适合初学者学习编程和创建图形。 码农不是吗喽(大学生版&…

VulnHub:CK00

靶场搭建 靶机下载地址:CK: 00 ~ VulnHub 下载后,在vmware中打开靶机。 修改网络配置为NAT 处理器修改为2 启动靶机 靶机ip扫描不到的解决办法 靶机开机时一直按shift或者esc直到进入GRUB界面。 按e进入编辑模式,找到ro,修…

Linux(CentOS7)离线安装Redis6

版本 CentOS-7、redis-6 1、下载redis离线包 下载地址:http://download.redis.io/releases/ 2、选择安装包 redis-6.2.5.tar.gz 3、上传安装包至服务器 cd /usr/local/redis #进入目录,没有redis目录则自行创建 tar -zxvf redis-6.2.5.tar.gz #…

拓扑排序(练习题)

文章目录 拓扑排序[P1113 杂务](https://www.luogu.com.cn/problem/P1113)题目描述输入格式输出格式代码(BFS) [P4017 最大食物链计数](https://www.luogu.com.cn/problem/P4017)题目描述输入格式输出格式代码(BFS)代码&#xff0…

Python实战MySQL之数据库操作全流程详解

概要 MySQL是一种广泛使用的关系型数据库管理系统,Python可以通过多种方式与MySQL进行交互。本文将详细介绍如何使用Python操作MySQL数据库,包括安装必要的库、连接数据库、执行基本的CRUD(创建、读取、更新、删除)操作,并包含具体的示例代码,帮助全面掌握这一过程。 准…

基于天地图使用Leaflet.js进行WebGIS开发实战

目录 前言 一、天地图的key 1、创建应用 2、调用限制策略 注: (1)日服务调用超量会暂时拒绝访问,次日自动开启; (2)如果服务调用过程中存在数据爬取或者下载行为,服务调用会被自…

UE4-系统默认天空球的使用

当我们在调整平行光的时候,会发现场景中的光照改变了,但是太阳的位置并没有改变,此时就需要用到系统默认的天空球中的: 但是只有在选中是由平行光的改变而改变的情况下才会发生改变,如果没有选择或者选择其他的光源&am…

爬虫(一)——爬取快手无水印视频

前言 最近对爬虫比较感兴趣,于是浅浅学习了一些关于爬虫的知识。爬虫可以实现很多功能,非常有意思,在这里也分享给大家。由于爬虫能实现的功能太多,而且具体的实现方式也有所不同,所以这里开辟了一个新的系列——爬虫…

MySQL(6)内置函数,复合查询.

目录 1.内置函数; 2.复合查询; 1.内置函数: 1.1 日期函数: 时分秒: 时间戳: 基本日期上加日期: 基本日期减去日期: 日期相差天数: 🌰 创建一张表,记录生日: 创建一个留言表: 显示所有留言信息,发布日期只显示日期,不用显示时间: …

【数据结构】Splay详解

Splay 引入 Splay旋转操作splay操作插入操作查询x排名查询排名为x删除操作查询前驱/后继模板Splay时间复杂度分析 进阶操作截取区间区间加,区间赋值,区间查询,区间最值区间翻转原序列整体插入指定位置插入整体插入末尾区间最大子段和 一些好题…

自动驾驶系列—智能巡航辅助功能中的横向避让功能介绍

文章目录 1. 背景介绍2. 功能定义3. 功能原理4. 传感器架构5. 实际应用案例5.1 典型场景1:前方车辆压线5.2 典型场景2:相邻车道有大型车辆5.3 典型场景3:它车近距离cut in 6. 总结与展望 1. 背景介绍 随着汽车技术的发展,智能巡航…