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

文章目录

  • 一、绪论
    • 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.mzph.cn/news/6372.shtml

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

相关文章

matlab dot()函数求矩阵内积,三维 ,多维 详解

matlab dot()函数求矩阵内积,三维 ,多维 详解 Cdot(A,b,X),这个参数X 只能取1,或者2。1 表示按列,2表示按行,如果没有参数。默认按列。 1)按列优先计算 Cdot(A,B)dot(A,B,1)[a1*b1a4*b4 ,a2*b2a5*b5 ,a…

视频拼接得AI三维生成方案-开端(一)

想使用二维得图像生成三维得空间图像,英伟达有完整得方案,开源,但是三维拼接不一样,只需要二维,并且要实时,如何生成是我每天都在思考得东西。 cnn 提取特征器和自编码 在训练细胞神经网络时,问…

大数据分析案例-基于LightGBM算法构建乳腺癌分类预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

jmeter软件测试实验(附源码以及配置)

jmeter介绍 JMeter是一个开源的性能测试工具,由Apache软件基金会开发和维护。它主要用于对Web应用程序、Web服务、数据库和其他类型的服务进行性能测试。JMeter最初是为测试Web应用程序而设计的,但现在已经扩展到支持更广泛的应用场景。 JMeter 可对服务…

AcWing 244. 谜一样的牛—树状数组、二分

题目链接 AcWing 244. 谜一样的牛 题目描述 分析 这道题挺巧妙的,感觉树状数组方面的题就是比较难想,先分析一下样例,样例中每头牛前面比自己低的牛的数量分别为 0 1 2 1 0牛的高度是1~n的排列,如何分析出每头牛的高度呢&…

API Testing 一个基于 YAML 文件的开源接口测试工具

目录 前言: 如何使用? 本地模式 服务端模式 文件格式 后续计划 前言: API Testing 是一个基于 YAML 文件的开源接口测试工具,它可以帮助开发者快速地进行接口测试。 在选择工具时,可以从很多方面进行考量、对比…

【历史上的今天】7 月 20 日:人类登上月球;数据仓库之父诞生;Mac OS X Lion 发布

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 7 月 20 日,在 2005 年的今天,时任微软全球副总裁的李开复加盟谷歌担任谷歌全球副总裁及中国区总裁。谷歌公司在发布聘请李开复消息的同…

LiveNVR监控流媒体Onvif/RTSP功能-拉转Onvif/RTSP/RTMP/FLV/HLS直播流流媒体服务视频广场页面集成视频播放集成说明

LiveNVR拉转Onvif/RTSP/RTMP/FLV/HLS直播流流媒体服务视频广场页面集成视频播放集成说明 1、视频页面集成1.1、关闭接口鉴权1.2、视频广场页面集成1.2.1、隐藏菜单栏1.2.2、隐藏播放页面分享连接 1.3、其它页面集成 2、播放分享页面集成2.1、获取 iframe 代码2.2、html 集成ifr…

ThreadPoolExecutor自定义线程池|拒绝策略|线程工厂|统一捕获异常

线程池的7大参数含义介绍 corePoolSize:池中一直保持的线程的数量。 maximumPoolSize:池中允许的最大的线程数。 keepAliveTime:当线程数大于核心线程数的时候,线程在最大多长时间没有接到新任务就会终止释放, 最终…

Python 集合 union()函数使用详解,Python合并集合

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 union函数使用详解 1、合并多个集合2、合并其他类型2.1、合并字符串2.2、合并列表…

Linux超详细的了解

文章目录 前言Linux的简介不同应用领域的主流操作系统Linux系统历史Linux系统各版本 Linux的安装安装方式介绍安装Linux网卡设置安装SSH连接工具finalShell连接虚拟机Linux和Windows目录结构对比Linux目录介绍 Linux常用命令Linux命令初体验文件目录命令ls命令cd命令cat命令mor…

Hbase基本原理剖析

一、基本原理 数据存储使用HBase来承接,HBase是一个开源的、面向列(Column-Oriented)、适合存储海量非结构化数据或半结构化数据的、具备高可靠性、高性能、可灵活扩展伸缩的、支持实时数据读写的分布式存储系统。更多关于HBase的信息&#…

html 解决css样式 缓存 ---css引入添加时间戳

通过js 对引入的css添加时间戳 <script type"text/javascript">document.write("<link relstylesheet typetext/css href./style/base.css?v" new Date().getTime() ">");document.write("<link relstylesheet typetext…

IDEA: 将第三方依赖打入jar包

文章目录 一、添加自定义的jar包到lib目录下二、将自定义依赖包打入jar包方式1、使用springboot自带的插件 一、添加自定义的jar包到lib目录下 参考往期文章&#xff1a;IDEA中Java项目创建lib目录(添加依赖jar包代替maven依赖) 二、将自定义依赖包打入jar包 方式1、使用spr…

windows系统安装异构虚拟机arm版的银河麒麟服务器

下载qemu UEFI&#xff08;BIOS的替代方案&#xff09;的下载地址&#xff1a;http://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd QEMU 软件的下载地址&#xff1a;https://qemu.weilnetz.de/w64/2021/qemu-w64-setup-20210505.exe …

Sentinel规则持久化到nacos的实现(源码修改)

文章目录 1、Sentinel源码修改2、持久化效果测试 Sentinel规则管理有三种模式&#xff1a; 原始模式pull模式push模式 这是实现push方式&#xff1a; push模式即控制台将配置规则推送到远程配置中心&#xff0c;例如Nacos。Sentinel客户端去监听Nacos&#xff0c;获取配置变更…

低代码如何帮助企业数字化转型?

在数字化时代背景下&#xff0c;企业都面临着巨大的数字化转型挑战。为了迎接这一挑战&#xff0c;企业软件开发工具和平台都在不断地创新和进化。其中&#xff0c;低代码开发平台应运而生&#xff0c;并成为了众多企业转型的首选方案。企业为什么都选择低代码开发平台&#xf…

一键批量JSON标注转PNG图片工具V1.1,支持labelme快捷矩形、圆以及轮廓标注

上次发布了一个批量将labelme标注的json文件转换为png文件工具&#xff0c;但是当时只是想着自己用的&#xff0c;功能相当简单&#xff0c;一些网友使用之后跟我反馈这玩意真”垃圾“&#xff0c;很多情况都没有进行设想&#xff0c;所以在功能上很欠缺。由于小陶这几天在外地…

pytorch工具——使用pytorch构建一个神经网络

目录 构建模型模型中的可训练参数假设输入尺寸为32*32损失函数反向传播更新网络参数 构建模型 import torch import torch.nn as nn import torch.nn.functional as Fclass Net(nn.Module):def __init__(self):super(Net,self).__init__()#定义第一层卷积层&#xff0c;输入维…

【C++杂货铺】运算符重载

目录 前言一、运算符重载二、赋值运算符重载三、完善日期类3.1 重载关系运算符3.2 重载、3.3 重载-、-3.4 重载、--3.5 重载<<、>> 四、const成员五、取地址及const取地址操作符重载 前言 本文将以日期类为基础&#xff0c;去探寻运算符重载的特性与使用方法&…