【机器学习】吃瓜教程 | 西瓜书 + 南瓜书 (1)

news2024/12/26 22:16:10

文章目录

  • 一、绪论
    • 1、什么是机器学习?
    • 2、基本术语
    • 3、假设空间
    • 4、归纳偏好
    • 5、发展历程
  • 二、模型评估与选择
    • A、一种训练集一种算法
      • 2.1 经验误差 与 过拟合
      • 2.2 评估方法
        • a) 留出法
        • b) 交叉验证法
        • c) 自助法
        • d) 调参与最终模型
      • 2.3 性能度量
        • a) 错误率与精度
        • b) 查准率、查全率与F1
      • 2.4比较检验
        • a) 假设检验
        • b) 交叉验证 t 检验
        • c) McNemar 检验
        • d) Friedman 检验与 nenyl 后续检验
    • B、一种训练集多种算法
        • a) ROC与AUC
    • C、多种训练集一种算法
        • a) 代价敏感错误率与代价曲线
        • b) 偏差 和 方差

一、绪论


1、什么是机器学习?


机器学习研究 如何通过计算手段,利用经验(数据)产生模型算法(学习算法),并用模型算法对新的情况(数据)作出相应的判断

初学者容易混淆的概念:
人工智能:让机器变得像人一样拥有智能的学科。
机器学习:让计算机像人一样能从数据中学习出规律的一类算法
深度学习:神经网络类的机器学习算法。
因此,范围来说 人工智能 > 机器学习 > 深度学习


2、基本术语


  1. 数据集:数据的集合,其中每条记录是关于一个事件或对象(这里是一个西瓜)的描述,称为一个"示例" (instance)或"样本" (sample).
  2. 训练集:用于学习的数据
  3. 属性(特征):数据的单个特征属性,如瓜的色泽,反映事件或对象在某方面的表现或性质的事项。
  4. 属性值:属性的具体取值,如瓜的色泽是"青绿" ,还是"乌黑"。
  5. 属性空间(样本空间、输入空间) :对于每一条属性,都在坐标轴上用一个方向表示,并由次张成的空间。
  6. 特征向量:一个示例在属性空间内的坐标向量。
  7. 维数:一个样本的特征数
  8. “学习”或“训练”:从数据中学的模型的过程,这个过程是通过执行某个学习算法来完成的。

通过“学习”或“训练”,找到数据之间的某种潜在关系,称为“假设”。“假设”可以不断逼近“真相”。

  1. 标记:算法学习过程中对训练数据作出的判断.

  2. 样例:拥有建立模型时需获得训练样本的“结果”信息(”标记“)的事例

  3. 输出空间 的范围,分为二分类任务多分类任务回归任务。其中二分类和多分类任务的预测值为离散值,而回归任务的预测值为连续值。

  4. 在算法通过“学习”训练集后得到了模型,为了检验模型的有效性(算法的学习效果),在 ”测试样本”(已知真实结果的数据集)上进行测试,

  5. 将被学习的事物分为许多“簇”(自动形成),簇之间可能存在潜在的一些关系,称为“聚类”。

  6. 根据训练数据是否拥有标记信息分为:监督学习(以分类和回归为代表),半监督学习无监督学习(以聚类为代表)。

分类:预测值是整数,分为 二分类和多分类。例如,二分类:吃不吃瓜? 多分类 : 吃什么瓜?
回归:预测值是实数,如,西瓜什么时候最低价?
聚类的分类,由机器自行分类,我们并不知道具体分几类 。

  1. 明确机器学习的目标 是为了优化后的模型在对新样本进行预测的时候误差更小(“泛化”),而不仅是在训练样本上表现的更加优异。

这两点有较大的差异。为了实现强泛化能力,因此希望每个样本是独立地从分布上采取的,也就是“独立同分布”。



3、假设空间


  1. 归纳和演绎是科学推理的两大基本手段。
    a) 演绎 是 是从一般到特殊的"特化"的过程,即从 基础原理 推演出具体状况
    b) 归纳 是 特殊到一般的 "泛化"过程,即从 具体的事实 归结出 一般性规律
  • 归纳学习有狭义与广义之分。
    广义的归纳学习大体相当于从样例中学习
    狭义的归纳学习则要求从训练数据中学得概念(concept) ,因此亦称为 “概念学习"或"概念形成” (目前的研究、应用比较少,太难了)
  • 从样例中学习是一个归纳过程,因此称为“归纳学习”。

  1. 概念学习,最基本的是布尔概念学习,即对“是”“不是”的目标概念。
    a) 学习的过程是一个在所有假设组成的空间中进行 搜索过程搜索目标 是找到与训练集匹配的假设(即能够将训练集中样本判断正确的假设)。
    b) 搜索过程可以不断删除与正确不一致的假设和与错误一致的假设(在搜索时的选择不同删除的假设不同,搜索可以通过自顶向下,从一般到特殊,自底向上,从特殊到一般),这就是我们学习的结果。

现实问题中假设空间很大,但学习过程是基于有限的样本训练集上进行的,因此可能会多个假设与训练集一致,即存在一个与训练集一致的“假设集合”,称之为 “版本空间”

c) 假设的表示一旦确定,假设空间及其规模大小酒确定了。如西瓜问题。

在这里插入图片描述


4、归纳偏好


  1. 归纳偏好 : .机器学习算法在学习过程中对某种类型假设的偏好。

任何一个有效的机器学习算法必有其归纳偏好,否则它将被假设空间中看似在训练集上"等效"的假设所迷惑,而无法产生确定的学习结果。一个没有算法偏好的模型,其判断结果是没有意义的。
同一个数据集能够训练出不同的模型。

  1. 偏好原则: 奥卡姆剃刀:如选择最简单的那个,或者按照其他需求。
  2. 若考虑所有潜在的问题,则所有学习算法都一样好,要谈论算法的相对优劣,必须要针对具体的学习问题。
  3. NFL定理

5、发展历程


推理期(逻辑推理能力)——知识期(人总结知识交给计算机)——知识期(机器自己学习知识)——学习期

机器学习:机械学习(死记硬背),示教学习(从指令中学习),类比学习(通过观察和发现学习),归纳学习(从样例中学习)。

机器学习是一种程序,具有自我改善的能力,人为干预越少越好。



二、模型评估与选择


A、一种训练集一种算法


2.1 经验误差 与 过拟合

  1. 错误率(error rate) : 分类错误的样本数占样本总数的比例。即如果在 m 个样本中有 a 个样本分类错误,则错误率
    E = a m E=\frac{a}{m} E=ma

  2. 精度(accuracy):精度 = 1 - 错误率,精度常写为百分比形式(1-E)×100%

评判一个学习器训练得好不好的指标主要是 错误率 和 精度 。

  1. 误差期望 / 误差 (error) :学习器的实际预测输出与样本的真实输出之间的差异。一般用“误差”代指。

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

  3. 泛化误差(generaliazation error):学习器在新样本上的误差。
          在多种误差中,,我们希望得到泛化误差小的学习器。然而,我们事先并不知道新样本是什么样,实际能做的是努力使经验误差最小化。在很多情况下,我们可以学得一个经验误差很小、在训练集上表现很好的学习器。
          为了达到这个目的,应该从训练样本中尽可能学出适用于所有样本的“普遍规律”,这样在遇到新的样本时,才能做出准确的判断。

  4. 过拟合 :学习器把训练样本学得"太好",导致把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,导致泛化性能下降的现象。

  5. 欠拟合:与过拟合相对的现象。

过拟合、欠拟合的直观类比
 
导致过/欠拟合的原因:学习能力过于强大,将训练样本不太一般的特性都学习到了;而欠拟合是因为学习能力较差造成的。
解决过/欠拟合的方法:欠拟合比较容易克服,可能增加学习轮数,或者扩大决策树的分支等;而过拟合则很麻烦,是机器学习面临的关键障碍,各类算法都必然带有一些针对过拟合的措施,但无法彻底避免,我们能做到的只是“缓解”



2.2 评估方法


        在训练学习模型时,我们可通过实验测试 (测试集) 来学习器的泛化误差进行评估并进而做出选择。
        现实任务中,我们有很多的学习算法可以选择,泛化误差不可事先预估,而训练误差又由于过拟合的存在而不适合作为评估标准,那么到底如何进行模型的评估与选择呢?

        通常使用 测试集(testing set)来测试学习器对新样本的判别能力(假设测试样本也是从真实分布中独立同分布采样而得),同时需要尽可能使测试集与训练集互斥。一般将样本分为测试集T和训练集S,常见的划分方法如下:

在这里插入图片描述

a) 留出法


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

常见划分方法:
1、简答的三七分、二八分,但注意训练集与测试机同分布
2、进行多次随机划分,训练多个模型,最后取平均值。

b) 交叉验证法

原理:k折交叉验证。

将数据 分为 个大小相似的互斥子集, D = D1 ∪ D2∪… ∪ Dk, D~ i~ ∩ Dj = ø (í 每个子集尽可 保持数据分布的一致性,即从 通过分层采样得到。每次用 k-1 个子集的并集作为训练集?余 的那个子集作测试集;这样就可获得组训练试集,从而可进行 次训练和测试, 最终返回的是 测试结果的均值。

在这里插入图片描述

缺点:数据较大时,对算力要求高

与留出法相似,“10次 10 折交叉验证法”与“100次留出法”都是进行了 100 次训练/测试。


c) 自助法

原理:
在这里插入图片描述

适用场所:数据集较小,难以划分的时候,能从初始数据集中产生多个不同的训练集。
缺点:改变初始数据集分布,会引入估计偏差


d) 调参与最终模型


验证集
数据进入后每层神经网络有多少个神经元,每层大小的参数,多数是人为规定的,比较难调参。

3个参数,每个参数5个候选值,则一个数据集就会有 35 个模型需要考察。
因此,为了调参,会选择加入一个数据集,验证集。
训练集训练,验证集看结果,调参,再看验证集结果参数调完,最后再测试集上看结果。



2.3 性能度量


        对学习器的泛化性能进行评估,除了实验评估的方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量(performance measure)
        性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;模型的“好坏”是相对的,不仅取决于算法和数据,还决定与任务需求。
        在预测任务中?给定样例集 = {(x1 , y1) , (x2, y2), . . . , (xm, ym)} 其中y1 是示例 xi 的真实标记.要评估学习器 的性能,就要把学习器预测结果 f(x)与真实标记 进行比较 。

  1. 回归任务最常用的性能度量是均方误差(mean squared error)。
  2. 分类错误率定义:
    在这里插入图片描述
  3. 精度定义:
    在这里插入图片描述
    4.,对于数据分布 D 和概率密度函数 p(.) 错误率与精度可分别描述为:
    在这里插入图片描述
    在这里插入图片描述

ps,Ⅱ(.)是指示函数,括号内为真取1,否则取0。

        性能度量指标较多,但是一般常用的只有错误率、精度、查准率、查全率、F1、ROC 和 AUC。


a) 错误率与精度


  1. 错误率(error rate) : 分类错误的样本数占样本总数的比例。即如果在 m 个样本中有 a 个样本分类错误,则错误率
    E = a m E=\frac{a}{m} E=ma

  2. 精度(accuracy):精度 = 1 - 错误率,精度常写为百分比形式(1-E)×100%

评判一个学习器训练得好不好的指标主要是 错误率 和 精度 。

错误率与精度 适用于二分类/多分类任务,是分类任务中最常用的两种性能度量。


b) 查准率、查全率与F1


  1. 查准率(precision):被学习器预测为正例的样例中有多大比例是真正例。如,挑出的西瓜中有多少比例是好瓜
  2. 查全率(recall):所有正例当中有多大比例被学习器预测为正例,所有好瓜中有多少比例被挑了出来。
  3. 分类结果混淆矩阵
    在这里插入图片描述

查准率P=TP/(TP+FP); 查全率R=TP/(TP+FN),
查准率与查全率是一对矛盾的度量。

  1. 以查准率为纵轴、查全率为横轴作图,得到一个曲线称为 P-R曲线 。若一个学习器的P-R曲线,完全包住另一个学习器P-R曲线,则前者优于后者;若两者有交叉,则以平衡点的大小来进行对比。(平衡点(break-event point,简称BER):查准率=查全率时的取值)
    在这里插入图片描述
    但,BEF 太过于简化,因此多用 F1(基于查准率与查全率的调和平均)
    F1 = 2×P×R /(P+R) = 2×TP(样本总数+TP-TN)

P-R反向关系原理

我们定的分类阈值也会对最终的预测结果产生影响。假设评分高为正类,评分低为负类。阈值设置的比较低的时候,假正类少,假负类多。阈值设置的高时,假正类多,假负类比较少。对于下图判断是否为5的结果中:
在这里插入图片描述

  • 如果对预测比较严格,如 阈值为 5 ,此时,4 个 5 被预测出来,查准率 为 80%,查全率 为 67%。
  • 如果对预测特别严格,如 阈值为 3 ,此时,3 个 5 被预测出来,查准率 为 100% ,查全率 为 50%。
  • 如果对预测比较宽松,如 阈值为 8, 此时,6 个 5 被预测出来,查准率 为 75% ,所有的 5 都被查出来,查全率 为 100% 。

总结 : 把门的规则严,则准确率高;反之,则低。

那么阈值应该怎么确定?
确定最优阈值的方法主要有:

  1. 使用平衡点 BEP(Break-Even-Point )

R = P 时, B 与 P 的值

  1. F1度量
  2. Fbeta

在这里插入图片描述

在这里插入图片描述

为了能够综合考察查准率和查全率,总是 希望在 n 个二分类混淆矩阵,即,n个二分类实现的多分类问题

先分别计算,再求平均值。

先在各混淆矩阵上分别计算出查准率和查全率,记为 (P1, R1) ,…,(Pn, Rn) 再计算平均值,从而得到"宏查准率" (macro-P) “宏查全率” (macro-R) ,以及相应的"宏F1" (macro-F1)
在这里插入图片描述

先求平均值,再分别计算 准确率 和 查全率 。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述






2.4比较检验


a) 假设检验



b) 交叉验证 t 检验



c) McNemar 检验



d) Friedman 检验与 nenyl 后续检验







B、一种训练集多种算法


  1. P-R 曲线
    a) 在这里插入图片描述

    b) 比较 ABC 三个模型的好坏

    可以看见 B 与 A 都优于 C, 但 AB 存在交叉,无法判断谁更优
    则对于AB有

    • 法一:比较AB面积大小,其在一定程度上表征了模型的优劣性,但这个值不容易被估算。
    • 法二:F1
    • 法三:Fbeta;

a) ROC与AUC


  1. ROC(Receiver Operating Characteristic,接受者操作特性曲线),是指在特定条件下,以在不同判断标准下所得的「预判错误率」为横坐标,以「预判正确率」为纵坐标,得到的多个点的连线,就是ROC曲线。
  2. ROC曲线由两个变量TPR和FPR组成,这个组合以FPR对TPR,即是以代价(costs)对收益(benefits)。

横坐标为「FPR」,在所有的负样本中,分类器预测错误的比例。FPR=负样本判为正的数量/(负样本判为正的数量+负样本判为负的数量)。
F P R = F P F P + T N FPR = \frac{FP}{FP + TN } FPR=FP+TNFP
纵坐标为「TPR」在所有的正样本中,分类器预测正确的比例(等于Recall)。TPR=正样本判为正的数量/(正样本判为正的数量+正样本判断为负数量)。
T P R = T P T P + F N TPR = \frac{TP}{TP + FN } TPR=TP+FNTP

在这里插入图片描述

  1. AUC(Area Under Curve) 被定义为ROC曲线下与坐标轴围成的面积,在1*1坐标系中,AUC的取值范围在0.5和1之间。AUC越接近1.0,预测效果越好;等于0.5时,真实性最低,无应用价值。
  2. AUC的物理意义正样本的预测结果大于负样本的预测结果的概率。所以AUC反应的是分类器对样本的排序能力。

在这里插入图片描述

  1. 排序损失
    给定 m+ 个正例和 m- 个反例令 D+ 和 D- 分别表示正、反例集合则排序“损失”(loss)定义为
    在这里插入图片描述

在这里插入图片描述


C、多种训练集一种算法


a) 代价敏感错误率与代价曲线



b) 偏差 和 方差


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

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

相关文章

RT-Thread快速入门-内核移植

1RT-Thread快速入门-内核移植 RT-Thread 快速入门系列前面的文章介绍了内核相关的知识,以及内核提供的接口函数和如何使用。 本篇文章主要介绍如何将 RT-Thread 内核移植到某个硬件平台之上。移植分为两部分: CPU 架构移植 BSP 移植 也就是将 RT-Th…

MySQL第二课表的增删插改

💛 后端进行的表的操作增删查改 现在是建了一个成绩表,注意哈。 decimal(2,1). 2是M表示有两个有效数字长度,1是D的长度,即小数点后有一位(10分制) 💓开始 1.增加: insert into 表名 values(值&#xff0…

安装VS Code 和 MiKTeX开发环境

下载: Getting MiKTeX 然后以管理员方式运行安装。 配置VS Code 之后配置VS Code,选择扩展(两个位置都可以),然后搜索Latex: 然后打开设置: 这样就打开了setting.json文件, 然后…

SQL注入之Oracle环境搭建

SQL注入之Oracle环境搭建 前言 Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性…

gitlab上传新项目全过程

gitlab上传新项目全过程 一、前期准备1.1 gitlab配置1.2 gitlab安装1.3 需要在gitlab上新建一个空项目 二、本地操作2.1 gitlab上传新项目全过程2.2 gitlab将远程项目拉取到本地全过程 三、常见问题及解决四、常用命令4.1 代码更新提交命令4.2 其他指令 一、前期准备 1.1 gitl…

less中引入自定义字体文件

前言 一般做后台管理系统UI没有影响要求可以不使用自定义字体。但是在大屏项目中,高度自定义化,就肯定需要UI导出字体文件,然后放到服务器上或者是我们项目文件中,我们前端引入后在页面中使用。 下面以放在项目文件中为例。 各…

【linux】五种IO模型与非阻塞IO

文章目录 一、IO的概念二、IO的五种模型2.1 概念2.2 对比五种IO 三、非阻塞IO3.1 fcntl文件描述符控制3.2 以非阻塞轮询方式读取标准输入 一、IO的概念 前面我们说过其实IO就是拷贝数据。 先说一下读取的接口: 当系统调用read/recv的时候会有两种情况 ①没有数据&a…

【C语言】指针进阶(3)

目录 指针和数组笔试题解析 一维数组 字符数组 二维数组 指针笔试题 在前面两篇文章,我们已经学完了指针进阶的所有知识点。在这篇文章中,我们主要学习的是一些常见的笔试题的总结。 指针和数组笔试题解析 在做题之前,我们先复习一下之…

第三讲:k8s核心概念和专业术语

序言:这里只对概念继续基础阐述,不做具体案例,这位博主写的特别详细,想要对k8s深入的了解可以跳转了,作为小白的我看的有点懵,毕竟没实践过 链接地址→ http://t.csdn.cn/ZYtEF 这篇文章写了将近两万字对各…

mybatis-plus 缓存深入实践(二)

mybatis-plus 缓存(一)回顾、缓存(二)深入实践

3D测量之圆柱轴线直线度测量

视频演示效果 圆柱轴线直线度测量 零、效果图 一、目标 测量圆柱轴线的直线度误差; 二、测量方法–轴截面法[1] 本文主要是通过最小二乘法确定各截面中心坐标值。由各截面测得的实际中心构成测得中心线。按误差评定方法进行数据处理,求出轴线的直线度误…

启动es容器错误

说明:启动es容器,刚启动就停止,查看日志,出现以下错误信息(java.lang.IllegalArgumentException: Plugin [analysis-ik] was built for Elasticsearch version 8.8.2 but version 7.12.1 is running) 解决&…

【状态估计】基于UKF、AUKF的电力系统负荷存在突变时的三相状态估计研究(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码及数据 💥1 概述 基于UKF和AUKF的电力系统负荷存在突变时的三相状态估计研究是一种利用无迹卡尔曼滤波(Unscented Kalman Filter, UKF&#xff09…

学习Dart语言---2023-07-23

环境搭建---windows Dart for WindowsDart installer for Windows. Installs the latest Dart SDK and Dartium.https://gekorm.com/dart-windows/选择标准版,下载安装,一直next 验证安装成功: IDEA中配置dart SDK 下载dart插件 创建dart文…

用Python脚本自动采集金融网站当天发布的免费报告

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 其间旦暮闻何物?杜鹃啼血猿哀鸣。 大家好,我是皮皮。 一、前言 前几天在Python群【林生】问了一个Python数据采集的问题&#x…

PCL点云处理之最小二乘直线拟合(2D| 方法2)(❤亲测可用❤)(二百零一)

PCL点云处理之最小二乘直线拟合(2D| 方法2)(❤亲测可用❤)(二百零一) 一、算法简介二、算法实现1.代码2.结果一、算法简介 在二百章中,我们介绍了一种最小二乘拟合直线点云(2D)的方法,可以获取直线方程系数k,b,这里介绍另一种拟合直线点云的方法,更为简单方便,结果…

引入第三方字体库 第三方字体库Google Fonts

googlefonts官方网站 googlefonts中国网站 本人是在微信小程序中引入 在static中建一个文件夹font-family 例如字体链接:https://fonts.font.im/css?familyKirangHaerang 将该链接的返回的资源的复制到css文件中 font-family.css /* [0] */ font-face {font-fam…

Linux学习之Ubuntu 20.04安装内核模块

参考博客:Ubuntu20.04编译内核教程 sudo lsb_release -a可以看到我当前的系统是Ubuntu 20.04.4,sudo uname -r可以看到我的系统内核版本是5.4.0-100-generic。 sudo apt-get install -y libncurses5-dev flex bison libssl-dev安装所需要的依赖。 su…

国密SSL优势及应用场景

国密SSL的优势主要有以下几点: 更高的安全性:国密算法采用的是国家密码管理局推荐的算法,相对于传统的SSL协议更加安全。 更好的性能:国密算法是国家密码管理局推荐的算法,其加密效率与密钥长度相比传统算法更高。 更…

Java集合之List

ArrayLsit集合 ArrayList集合的特点 ArrayList集合的一些方法 ①.add(Object element) 向列表的尾部添加指定的元素。 ②.size() 返回列表中的元素个数。 ③.get(int index) 返回列表中指定位置的元素,index从0开始。 public class Test {public static void m…