《机器学习》二刷超详细笔记

2023-11-19

博主在4月学完西瓜书时,一头雾水,觉得还是一知半解。9月开学后上完了必修的《machine learning》课程,并且自己编程实现了多种机器学习算法和论文复现后,才对机器学习有一点了解,现在再次翻阅西瓜书,很多知识点看到都豁然开朗。所以出这一系列文章,对机器学习进行回顾,总结和记录!为大家揭开机器学习的神秘面纱!

1、经验误差与过拟合

通常我们把分类错误的样本数占样本总数的比例称为“错误率”(error rate),即如果在m个样本中有a个样本分类错误,则错误率E=a/m;相应的1-a/m就是“精度”(accuracy),即“精度=1-错误率”。

我们把学习器的实际预测输出与样本的真实输出之间的差异称为“误差”(error),学习器在训练集上的误差称为 “训练误差” 或 “经验误差”,在新样本上的误差称为“泛化误差”。

  • 过拟合:学习器把训练样本学的“太好了”,已经把训练样本自身的一些特点当作了所有潜在样本都具有的一般性质,这样就会导致泛化性能下降。

  • 欠拟合:对训练样本的一般性质尚未学好。

有多种因素导致过拟合,其中最常见的就是学习能力过于强大,以至于把训练样本所包含的不太一般的特性都学到了,欠拟合是由于学习能力底下低下造成的。欠拟合比较容易克服,例如在决策树中扩展分支、在神经网络学习中增加训练轮次等;而过拟合很难解决,而且是无法彻底避免的,我们所能做的只是“缓解”,或者说减小其风险。
在这里插入图片描述

2、评估方法

在讲评估方法前,我们先来回顾一下训练集和测试集的概念。

大家从小到大肯定经过无数次期末考试了,对考试一定不会陌生。假设这样一个场景:在考试前,老师发给大家历年的试卷(训练集),让大家回去复习,然后考试时的试卷(测试集)上的题目全部是原题。

训练样本相当于老师给同学们练习的习题,测试过程相当于考试。显示,如果测试样本被用来训练了,那得到的将是过于“乐观”的估计结果,人均90不是梦。(像极了本科的期末考试

在这里插入图片描述

2.1、留出法

留出法直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即S∪T=D,S ∩ T=∅。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。

以二分类任务为例,假定D包含1000个样本,将其划分为S包含700个样本,T包含300个样本,用S进行训练后,如果模型在T上有90个样本分类错误,则错误率为(90/300) x 100%=30%,相应的,精度为1-30%=70%。所以我们可以说这个模型的精度为70%,不能说成准确率哦,后面会谈到准确率。

2.2、交叉验证法

它的思想就是将数据集D分成k个大小相似的互斥子集,即D=D1∪D2∪…U Dk,其中每个子集的交集都为∅。然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,这样就得到了k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。

交叉验证法评估结果的稳定性和真实性很大程度上取决于k的取值,所以通常把交叉验证法称为“k折交叉验证”,k的常用取值是10,此时称为10折交叉验证。
在这里插入图片描述

2.3、自助法

给定包含m个样本的数据集D,我们对它进行采样产生数据集D’:每次随机从D中选出一个样本,拷贝到D’中,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次,我们就得到了包含m个样本的数据集D’,这就是自助采样。

如果训练集中的样本没有在测试集中出现过,那么这样的测试结果称为“包外估计”。

2.4、调参与最终模型

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

我们已经知道训练集和测试集的概念了,下面来介绍下验证集。

模型评估与选择中用于评估测试的数据集称为“验证集”,也就是说在调参过程中,用来测试模型性能的数据集就叫做验证集,换句话说,验证集就是用来调参和模型选择的。

3、性能度量

要评估学习器 f 的性能,就要把学习器预测结果f(x)与真实标记y进行比较。
这一节大家掌握混淆矩阵就可以了,关于ROC、AUC和代价曲线等,稍微了解即可。

查准率(precision):又称“准确率”,用P表示,关心我们选出的西瓜中有多少是好瓜。
查全率(recall):又称“召回率”,用R表示,关心所有好瓜中有多少好瓜被我们挑了出来。

对于二分类问题,可将样例根据其真实学习类别与学习器预测类别的组合划分为真正例,假真例,真反例,假反例四种情形,令TP、FP、TN、FN表示其对应的样例数,显然有TP+FP+TN+FN=样例总数。分类结果的混淆矩阵如下:
在这里插入图片描述
这里的T和F是True和False的缩写,后面的P和N是Positive和Negative的缩写。

*****************记忆秘诀****************
所谓的真和假是根据真实情况和预测结果进行同或,
相同则为1(真),不同为0(假);
所谓的正例和反例是根据预测结果来定。

查准率P和查全率R分别定义为:
在这里插入图片描述
查准率和查全率是一对矛盾的度量,一般来说,查准率高时,查全率往往偏低,而查全率高时,查准率往往偏低,从书上的P-R曲线可以明显看出来。

4、比较检验

机器学习中性能比较比大家想象的复杂的多,有几点原因:

  1. 首先,我们希望比较的是泛化性能,然而评估获取到的只是测试集上的性能,二者对比结果未必相同。
  2. 测试集上的性能与测试集本身的选择有很大关系。
  3. 很多机器学习算法本身有一定的随机性,即便用相同的参数设置在同一个测试集上多次运行,其结果也会不同。

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

5、偏差与方差

方差和偏差是用来研究学习器为什么具有这样的性能的工具。

偏差:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据,如下图第二行所示。

方差:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散,如下图右列所示。
在这里插入图片描述

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

《机器学习》二刷超详细笔记 的相关文章

随机推荐

  • 美创科技发布“韧性”数据安全防护体系框架

    4月13日 美创科技数据安全产品架构升级发布会顺利举办 会上 美创重磅发布 韧性 数据安全防护体系框架 全新数据安全框架 以 资产 为中心 由内而外 以 看见 基石 旨在通过构建 弹性和韧性 可见性 适应性进化 的数据安全防护能力 帮助用户
  • Python打印输出数组中全部元素的方法

    学习Python的人都知道数组是最常用的的数据类型 为了保证程序的正确性 需要调试程序 因此 需要在程序中控制台中打印数组的全部元素 如果数组的容量较小 例如 只含有10个元素 采用print命令或print函数可以答应出数组中的每个元素
  • 记一次挖矿病毒应急处置全过程&挖矿处置基本操作

    记一次挖矿病毒应急处置全过程 挖矿处置基本操作 一 处置过程 1 查看第一位的pid号 32535 2 进入 tmp X11 unix 目录 其中 11 文件中写的是32535 01 文件中写的是守护进程pid号10092 目录里的文件不一
  • 【Vue】Vue基础自用笔记&Day03_①Vue生命周期②Vue网络请求③Vue动画

    Vue基础 Day03 1 Vue生命周期 this nextTick 方法 2 Vue网络请求 vue resource Axios 3 Vue动画 使用CSS创建动画 或者使用第三方动画库 animate css 使用JS创建动画 使用
  • var 的变量提升

    var 的变量提升 var 定义的变量的定义时存在变量提升现象 console log a undefined var a 10 console log a 10 原理 js 引擎在渲染代码时 将变量声明部分和函数声明部分提升到函数的顶部
  • An error occurred in the current transaction. You can‘t execute queries until the end of the ‘atomic

    问题 如图所示 错误返回结果是An error occurred in the current transaction You can t execute queries until the end of the atomic block
  • PythonML-Day02: k-近邻、朴素贝叶斯、决策树、随机森林、交叉验证、网格搜索

    ML Day02 k 近邻 朴素贝叶斯 决策树 随机森林 交叉验证 网格搜索 1 数据分类 离散型数据 可以列举出 连续型数据 在区间内可任意划分 不可一一列举 2 机器学习算法分类 监督学习 预测 有特征值和目标值 有标准答案 分类 离散
  • BeanUtils.copyProperties的使用(浅拷贝)

    BeanUtils copyProperties的使用场景 将一个 Java 对象的属性值复制到另一个对象中 解决方法通常有2种方法 一个一个set 用BeanUtils copyProperties 很显然BeanUtils更加方便 代码
  • python中permute_PyTorch中permute的用法详解

    permute dims 将tensor的维度换位 参数 参数是一系列的整数 代表原来张量的维度 比如三维就有0 1 2这些dimension 例 import torch import numpy as np a np array 1 2
  • js-ajax

    一 ajax Asynchronous Javasript And Xml 通过Ajax向服务器请求数据 在不刷新整个页面的情况下 更新页面的内容 二 Ajax的创建 三步走 1 创建XMLHttpRequest对象 用来和服务器进行数据交
  • hdu1827Summer Holiday【tarjan强连通分量解决最小联系费用】

    1A 撒花 这比买买买开心多了 思路 既然是强连通分量的题 很容易想到形成的东西是一坨一坨的 哈哈 然后如果某一坨入度为0 那么很不幸 这一坨只能直接被威士忌通知 至于具体通知这一坨中的哪一个 枚举一遍就知道了 最后把话费求和 感觉强连通分
  • python程序运行提示Process finished with exit code -1073741819 (0xC0000005),程序终止运行...

    这个错误代码是表示程序运行时发生了访问冲突 通常是由于程序尝试访问不属于它的内存空间导致的 这可能是由于程序代码本身存在 bug 也可能是因为计算机环境问题造成的 为了解决这个问题 需要调查程序的代码 找出导致访问冲突的原因 然后修改代码以
  • 笔试题目收集(3)

    笔试题目搜集系列推荐 1 笔试题目搜集1 2 笔试题目收集2 3 笔试题目搜集3 4 笔试题目搜集4 5 笔试题目搜集5 1 下列程序输出结果 typedef union long i int k 5 char c DATE struct
  • 使用R语言进行数据对象获取的mget函数实战

    使用R语言进行数据对象获取的mget函数实战 在R语言中 我们经常需要获取由多个数据对象组成的列表 为了高效地获取这些对象 R提供了一个非常方便的函数 即mget函数 mget函数可以根据给定的对象名称 在当前环境中查找并返回相应的数据对象
  • 多类别属性预测深度架构GlideNet

    将属性 如颜色 形状 状态 动作 附加到对象类别是一个重要的计算机视觉问题 属性预测最近取得了令人振奋的进展 通常被表述为一个多标签分类问题 然而 在以下方面仍然存在重大挑战 1 预测多个对象类别上的大量属性 2 建模属性的类别依赖性 3
  • java pager,Pager 分页设计

    分页是非常基础又重复度高的功能 不论是前台 后台 或是手机版都有分页的需求 这里介绍Pager及相关代码 Pager是分页数据的封装 必要时需要与其他分页对象适配 PageObject Pageable等 详见PagerUtil publi
  • IO输入溢出(转载+整理)

    gets 防止缓冲区溢出 描述了高水平的缓冲区溢出攻击 以及讨论了为什么缓冲区溢出是如此严重的安全性问题 本专栏文章的主题是 通过防御性编程保护代码不受缓冲区溢出攻击 我们将论及 C编程语言中的主要安全性陷阱 显示应该避免特殊构造的原因 以
  • Bad owner or permissions on /root/.ssh/config

    vmware centos 部署 hadoop集群 启动hadoop节点 报错Bad owner or permissions on root ssh config 原因 SSH关于公钥认证Permission denied的问题 不能直接
  • 安装好后如何查看mysql/apache/nginx/php安装参数

    查看mysql编译参数 cat usr local mysql bin mysqlbug grep CONFIGURE LINE 查看apache编译参数 cat apachehome build config nice 查看php编译参数
  • 《机器学习》二刷超详细笔记

    博主在4月学完西瓜书时 一头雾水 觉得还是一知半解 9月开学后上完了必修的 machine learning 课程 并且自己编程实现了多种机器学习算法和论文复现后 才对机器学习有一点了解 现在再次翻阅西瓜书 很多知识点看到都豁然开朗 所以出