PumpkinBook Reading(一)

news2025/7/22 5:20:56

绪论

基本术语

  • 算法”是指从数据中学得“模型”的具体方法,“算法”产出的结果称为“模型”,通常是具体的函数或者可抽象地看作为函数。

  • 样本:也称为“示例”,是关于一个事件或对象的描述。因为要想让计算机能对现实生活中的事物进行机器学习,必须先将其抽象为计算机能理解的形式,计算机最擅长做的就是进行数学运算,因此考虑如何将其抽象为某种数学形式。显然,线性代数中的向量就很适合,因为任何事物都可以由若干“特征”(或称为“属性”)唯一刻画出来,而向量的各个维度即可用来描述各个特征。

    • 例如,如果用色泽、根蒂和敲声这 3 个特征来刻画西瓜,那么一个“色泽青绿,根蒂蜷缩,敲声清脆”的西瓜用向量来表示即为 x =(青绿; 蜷缩; 清脆) (向量中的元素用分号“;”分隔时表示此向量为列向量,用逗号“,”分隔时表示为行向量) ,其中青绿、蜷缩和清脆分别对应为相应特征的取值,也为“属性值”。显然,用中文书写向量的方式不够“数学”,因此需要将属性值进一步数值化,还需要扩展多维度的特征,一般称此类与特征处理相关的工作为“特征工程”。
  • 样本空间:也称为“输入空间”或“属性空间”。由于样本采用的是标明各个特征取值的“特征向量”
    来进行表示,根据线性代数的知识可知,有向量便会有向量所在的空间,因此称表示样本的特征向量所在的空间为样本空间,通常用花式大写的 X 表示。

  • 数据集:数据集通常用集合来表示,令集合 D = {x1, x2, …, xm} 表示包含 m 个样本的数据集,一般同一份数据集中的每个样本都含有相同个数的特征,假设此数据集中的每个样本都含有 d 个特征,则第 i个样本的数学表示为 d 维向量:xi = (xi1; xi2; …; xid),其中 xij 表示样本 xi 在第 j 个属性上的取值。

  • 模型:首先收集若干样本(假设此时有 100 个),然后将其分为训练样本(80 个)和测试样本(20 个),其中 80 个训练样本构成的集合称为“训练集”,20 个测试样本构成的集合称为“测试集”,接着选用某个机器学习算法,让其在训练集上进行“学习”(或称为“训练”),然后产出得到“模型”(或称为“学习器”),最后用测试集来测试模型的效果。执行以上流程时,表示我们已经默认样本的背后是存在某种潜在的规律,我们称这种潜在的规律为“真相”或者“真实”,当我们应用某个机器学习算法来学习时,产出得到的模型便是该算法所找到的它自己认为的规律,由于该规律通常并不一定就是所谓的真相,所以也将其称为“假设”。通常机器学习算法都有可配置的参数,同一个机器学习算法, 使用不同的参数配置或者不同的训练集,训练得到的模型通常都不同。

  • 标记:上文提到机器学习的本质就是在学习样本在某个方面的表现是否存在潜在的规律,我们称该方面的信息为“标记”。例如在学习西瓜的好坏时,“好瓜”和“坏瓜”便是样本的标记。一般第 i 个样本的标记的数学表示为 yi,标记所在的空间称为“标记空间”或“输出空间”,数学表示为花式大写的 Y。标记通常也看作为样本的一部分,因此,一个完整的样本通常表示为 (x, y)。根据标记的取值类型不同,可将机器学习任务分为以下两类:

    • 当标记取值为离散型时,称此类任务为“分类”,例如学习西瓜是好瓜还是坏瓜、学习猫的图片是白猫还是黑猫等。当分类的类别只有两个时,称此类任务为“二分类”,通常称其中一个为“正类”,另
      一个为“反类”或“负类”;当分类的类别超过两个时,称此类任务为“多分类”。由于标记也属于样本的一部分,通常也需要参与运算,因此也需要将其数值化,例如对于二分类任务,通常将正类记为1,反类记为 0,即 Y = {0, 1}。

    • 当标记取值为连续型时,称此类任务为“回归”,例如学习预测西瓜的成熟度、学习预测未来的房价等。由于是连续型,因此标记的所有可能取值无法直接罗列,通常只有取值范围,回归任务的标记取值范围通常是整个实数域 R,即 Y = R。无论是分类还是回归,机器学习算法最终学得的模型都可以抽象地看作为以样本 x 为自变量,标记 y为因变量的函数 y = f (x),即一个从输入空间 X 到输出空间 Y 的映射。

    • 例如在学习西瓜的好坏时,机器学习算法学得的模型可看作为一个函数 f (x),给定任意一个西瓜样本 xi = (青绿; 蜷缩; 清脆),将其输入进函数即可计算得到一个输出 yi = f (xi),此时得到的 yi 便是模型给出的预测结果,当 yi 取值为 1 时表明模型认为西瓜 xi 是好瓜,当 yi 取值为 0 时表明模型认为西瓜 xi 是坏瓜。

  • 根据是否有用到标记信息,可将机器学习任务分为以下两类:

    • 在模型训练阶段有用到标记信息时,称此类任务为“监督学习”, 在模型训练阶段没用到标记信息时,称此类任务为“无监督学习”
  • 泛化:由于机器学习的目标是根据已知来对未知做出尽可能准确的判断,因此对未知事物判断的准确
    与否才是衡量一个模型好坏的关键,我们称此为“泛化”能力。例如学习西瓜好坏时,假设训练集中共有 3
    个样本:{(x1 = (青绿; 蜷缩), y1 = 好瓜), (x2 = (乌黑; 蜷缩), y2 = 好瓜), (x3 = (浅白; 蜷缩), y3 = 好瓜)},
    同时假设判断西瓜好坏的真相是“只要根蒂蜷缩就是好瓜”,如果应用算法 A 在此训练集上训练得到模型
    fa(x),模型 a 学到的规律是“色泽等于青绿、乌黑或者浅白时,同时根蒂蜷缩即为好瓜,否则便是坏瓜”,
    再应用算法 B 在此训练集上训练得到模型 fb(x),模型 fb(x) 学到的规律是“只要根蒂蜷缩就是好瓜”,因
    此对于一个未见过的西瓜样本 x = (金黄; 蜷缩) 来说,模型 fa(x) 给出的预测结果为“坏瓜”,模型 fb(x)
    给出的预测结果为“好瓜”,此时我们称模型 fb(x) 的泛化能力优于模型 fa(x)。

    • 通过以上举例可知,尽管模型 fa(x) 和模型 fb(x) 对训练集学得一样好,即两个模型对训练集中每个
      样本的判断都对,但是其所学到的规律是不同的。导致此现象最直接的原因是算法的不同,但是算法通常是有限的,可穷举的,尤其是在特定任务场景下可使用的算法更是有限,因此,数据便是导致此现象的另一重要原因,这也就是机器学习领域常说的“数据决定模型的上限,而算法则是让模型无限逼近上限”, 下面详细解释此话的含义。
    • 先解释“数据决定模型效果的上限”,其中数据是指从数据量和特征工程两个角度考虑。从数据量的角度来说,通常数据量越大模型效果越好,因为数据量大即表示累计的经验多,因此模型学习到的经验也多,自然表现效果越好。例如以上举例中如果训练集中含有相同颜色但根蒂不蜷缩的坏瓜,模型 a 学到真相的概率则也会增大;从特征工程的角度来说,通常对特征数值化越合理,特征收集越全越细致,模型效果通常越好,因为此时模型更易学得样本之间潜在的规律。例如学习区分亚洲人和非洲人时,此时样本即为人,在进行特征工程时,如果收集到每个样本的肤色特征,则其他特征例如年龄、身高和体重等便可省略,因为只需靠肤色这一个特征就足以区分亚洲人和非洲人。
    • 而“算法则是让模型无限逼近上限”是指当数据相关的工作已准备充分时,接下来便可用各种可适用的算法从数据中学习其潜在的规律进而得到模型,**不同的算法学习得到的模型效果自然有高低之分,效果越好则越逼近上限,即逼近真相。**分布:此处的“分布”指的是概率论中的概率分布,通常假设样本空间服从一个未知“分布”D,而我们收集到的每个样本都是独立地从该分布中采样得到,即“独立同分布”。通常收集到的样本越多,越能从样本中反推出 D 的信息,即越接近真相。此假设属于机器学习中的经典假设,在后续学习机器学习算法过程中会经常用到

假设空间

在这里插入图片描述数据作为训练集可以有多个假设空间,且在不同的假设空间中都有可能学得能够拟合训练集的模型,我们将所有能够拟合训练集的模型构成的集合称为“版本空间”。
当选用一元线性回归算法时,学得的模型是一元一次函数,当选用多项式回归算法时,学得的模型是一元二次函数。

归纳偏好

不同的机器学习算法有不同的偏好,我们称为“归纳偏好”。对于当前房价预测这个例子来说,这两个算法学得的模型哪个更好呢?

  • 著名的“奥卡姆剃刀”原则认为“若有多个假设与观察一致,则选最简单的那个”,如果认为函数的幂次越低越简单,则此时一元线性回归算法更好,如果认为幂次越高越简单,则此时多项式回归算法更好,因此该方法其实并不“简单”,所以并不常用。
  • 最常用的方法则是基于模型在测试集上的表现来评判模型之间的优劣。测试集是指由训练集之外的样本构成的集合,例如在当前房价预测问题中,通常会额外留有部分未参与模型训练的数据来对模型进行测试。
  • 机器学习算法之间没有绝对的优劣之分,只有是否适合当前待解决的问题之分
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

模型评估与选择

经验误差与过拟合

错误率:E = a/m ,其中 m 为样本个数,a 为分类错误样本个数。
精度:精度 =1-错误率。
误差:学习器的实际预测输出样本的真实输出之间的差异。
经验误差:学习器在训练集上的误差,又称为“训练误差”。
泛化误差:学习器在新样本上的误差。

错误率和精度很容易理解,而且很明显是针对分类问题的。误差的概念更适用于回归问题。在分类问题中也会使用误差的概念,此时的“差异”指的是学习器的实际预测输出的类别与样本真实的类别是否一致,若一致则“差异”为 0,若不一致则“差异”为 1,训练误差是在训练集上差异的平均值,而泛化误差则是在新样本(训练集中未出现过的样本)上差异的平均值。

过拟合是由于模型的学习能力相对于数据来说过于强大,反过来说,欠拟合是因为模型的学习能力相对于数据来说过于低下。

评估方法

本文介绍三种模型评估方法::留出法、交叉验证法、自助法。留出法由于操作简单,因此最常用;交叉验证法常用于对比同一算法的不同参数配置之间的效果,以及对比不同算法之间的效果;自助法常用于集成学习产生基分类器。

对比同一算法的不同参数配置之间的效果:假设现有数据集 D,且有一个被评估认为适合用于数据集D 的算法 L,该算法有可配置的参数,假设备选的参数配置方案有两套:方案 a,方案 b。下面通过交叉验证法为算法 L 筛选出在数据集 D 上效果最好的参数配置方案。

以 3 折交叉验证为例,首先按照“西瓜书”中所说的方法,通过分层采样将数据集 D 划分为 3 个大小相似的互斥子集:D1, D2, D3,然后分别用其中 1 个子集作为测试集,其他子集作为训练集,这样就可获得 3 组训练集和测试集
训练集 1:D1 ∪ D2,测试集 1:D3
训练集 2:D1 ∪ D3,测试集 2:D2
训练集 3:D2 ∪ D3,测试集 3:D1
接下来用算法 L 搭配方案 a 在训练集 1 上进行训练,训练结束后将训练得到的模型在测试集 1 上进行测试,得到测试结果 1,依此方法再分别通过训练集 2 和测试集 2、训练集 3 和测试集 3 得到测试结果2 和测试结果 3,最后将 3 次测试结果求平均即可得到算法 L 搭配方案 a 在数据集 D 上的最终效果,记为 Scorea。同理,按照以上方法也可得到算法 L 搭配方案 b 在数据集 D 上的最终效果 Scoreb,最后通过比较 Scorea 和 Scoreb 之间的优劣来确定算法 L 在数据集 D 上效果最好的参数配置方案

对比不同算法之间的效果:同上述“对比同一算法的不同参数配置之间的效果”中所讲的方法一样,只需将其中的“算法 L 搭配方案 a”和“算法 L 搭配方案 b”分别换成需要对比的算法 α 和算法 β 即可。
从以上的举例可以看出,交叉验证法本质上是在进行多次留出法,且每次都换不同的子集做测试集,最终让所有样本均至少做 1 次测试样本。这样做的理由其实很简单,因为一般的留出法只会划分出 1 组训练集和测试集,仅依靠 1 组训练集和测试集去对比不同算法之间的效果显然不够置信,偶然性太强,因此要想基于固定的数据集产生多组不同的训练集和测试集,则只有进行多次划分,每次采用不同的子集作为测试集,也即为交叉验证法。

  • 算法参数:算法参数是指算法本身的一些参数(也称超参数),例如 k 近邻的近邻个数 k、支持向量机的参数 C。算法配置好相应参数后进行训练,训练结束会得到一个模型,例如支持向量机最终会得到 w 和 b 的具体数值(此处不考虑核函数),这就是模型参数,模型配置好相应模型参数后即可对新样本做预测。
  • 验证集:带有参数的算法一般需要从候选参数配置方案中选择相对于当前数据集的最优参数配置方案,例如支持向量机的参数 C,一般采用的是前面讲到的交叉验证法,但是交叉验证法操作起来较为复杂,实际中更多采用的是:先用留出法将数据集划分出训练集和测试集,然后再对训练集采用留出法划分出训练集和新的测试集,称新的测试集为验证集,接着基于验证集的测试结果来调参选出最优参数配置方案,最后将验证集合并进训练集(训练集数据量够的话也可不合并),用选出的最优参数配置在合并后的训练集上重新训练,再用测试集来评估训练得到的模型的性能。
  • 性能度量:性能度量指标较多,但是一般常用的只有错误率、精度、查准率、查全率、F1、ROC 和 AUC
  • 查准率 P :被学习器预测为正例的样例中有多大比例是真正例。查全率 R:所有正例当中有多大比例被学习器预测为正例。

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

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

相关文章

【Python开发】Flask开发实战:个人博客(三)

Flask开发实战:个人博客(三)在【Python开发】Flask开发实战:个人博客(一) 中,我们已经完成了 数据库设计、数据准备、模板架构、表单设计、视图函数设计、电子邮件支持 等总体设计的内容。 在【…

公众号裂变拉新,以婴儿辅食为诱饵,实现低成本获客!

大家好~我是娜娜 今天来给大家拆解一个关于食品行业精选公众号增长案例,通过公众号裂变拉新,任务拉新人数5000,留存率达到85%,活动裂变率达到1100.86%。活动数据也还在持续的上升当中。 该公众号的目标人群是新手爸妈&#xff0…

【Java】SpringBoot应用简单示例

SpringBoot应用简单示例SpringBoot应用简单示例HelloWorld搭建项目ResponseBody的作用ComponentScan排除扫描beanSpringBoot集成日志SpringBoot日志初始化原理消息转换器拦截器过滤器操作数据库Spring Data JpaDruid数据源Mybatis-Plus事务处理操作缓存AOP相关概念栗子定时任务…

C语言解析JSON源码

它与 XML 的地位差不多,但就笔者而言,笔者更喜欢 JSON 的风格,因为它更符合我们的思维习惯,同样一份数据,JSON 格式的就是比 XML 要清晰明了一些。 最近笔者需要在 C语言 上解析 JSON 格式,在网上一顿找&am…

XC5VLX30T-2FF323I Virtex-5 LXT FPGA IC 产品参数

概述 Virtex-5 FPGA有-3,-2,-1速度等级,其中-3具有最高的性能。Virtex-5 FPGA直流和交流特性指定为商业和工业级别。除工作温度范围外,除非另有说明,所有直流和交流电气参数对于特定转速等级是相同的(即-1转速等级的工…

一夜登顶GitHub!字节内网数据结构与算法刷题笔记,看完直呼卧槽

网络上流传着一句段子“程序员两条腿,一条是算法,一条是英文,想跑的更远,这两条腿都不能弱”。英文,我们暂且不谈,我们先来谈谈算法。 算法之难,在于将精巧的逻辑,通过合适的数据结…

2 分钟,教你用 Serverless 每天给女朋友自动发土味情话

作者:安可 Serverless 简介 Serverless,中文意思是 “无服务器”,所谓的无服务器并非是说不需要依靠服务器等资源,而是说开发者再也不用过多考虑服务器的问题,可以更专注在产品代码上,同时计算资源也开始…

如何根据自己的SCI论文,匹配适合的期刊? - 易智编译EaseEditing

如何选择合适的目标期刊是需要慎重对待的问题,它决定了你论文的发表速度和被认可度。 可以遵循以下几个步骤来考虑: 1、从你论文的参考文献中选择合适的期刊(如果引用文献较少,也可以从引文的参考文献中进行筛选)&…

成功解决:ModuleNotFoundError: No module named ‘amp_C‘

在使用transformers时,在调用Trainer的时候遇到了这个问题,原因是apex包有问题, 这里有解决apex安装包的多一些教程 https://blog.csdn.net/Xidian185/article/details/122745427 https://blog.csdn.net/weixin_45225975/article/details/119…

倍福TwinCAT3中使用久同伺服

目录 一、测试设备说明 二、伺服通电和参数设置 1、恢复出厂参数设置 2、恢复出厂,重启后 3、伺服自己点动操作 4、增益、刚度调整 5、伺服零位设定 6、伺服转动一圈编码器脉冲量设定 7、参数保存 三、伺服操作面板 四、TwinCAT3工程配置 1、XML文件 2、…

【元宇宙欧米说】打造艺术与技术构建的交互式数字旅程

Web3 to Earn项目如何扩大应用功能和场景?在Web3时代怎么才能以更新颖、有趣的方式追赶潮流?各Web3领域项目及应用如何进行功能外延以满足用户需求? 11月17日晚上九点,ZenCats项目管理员Fred将以“打造艺术与技术构建的交互式数字…

编码格式转换方法

今天项目上遇到了需要将 SJIS(Shift-JIS) 格式与 UTF8 格式相互转换问题。 首先看一个编码格式问题引发的乱码现象,新建下面的文本文档,然后更名为 test.bat。 echo off echo test chinese character view 测试中文字符显示 pause双击运行 用 chcp 查…

正版授权| iObit Uninstaller 12 Pro 专业卸载器工具

前言 专业的Win系统卸载程序,它可以轻松删除不需要的程序,插件和Windows应用程序,还可以对电脑旧的应用一键更新。安装监视器会检测并记录安装中的所有系统更改,以确保在将来彻底卸载时可以还原所有更改。 功能特点 安装监视器 …

1053 Path of Equal Weight

Given a non-empty tree with root R, and with weight Wi​ assigned to each tree node Ti​. The weight of a path from R to L is defined to be the sum of the weights of all the nodes along the path from R to any leaf node L. Now given any weighted tree, you a…

QT获取计算机硬件信息

一、项目介绍 本文介绍利用QProcess获取计算机的CPU、主板、硬盘等电脑相关硬件信息。 windows提供了“wmic”(Windows Management Instrumentation,Windows管理工具),提供了从命令行接口和批命令脚本执行系统管理的支持。可以打…

基于多个openEuler物理机执行mugen测试脚本

【原文链接】基于多个openEuler物理机执行mugen测试脚本 mugen脚本中有的脚本执行需要使用多个物理机,针对此场景,这里以需要两个物理机为例(用openEuler虚拟机模拟物理机) (1)首先安装两台openEuler虚拟…

【C++】C++基础知识(一)---基本概念

C基础知识&#xff08;一&#xff09;1. 输出“HelloWorld!”2. 添加注释3. 关键字4. 标识符5. 变量6. 常量1. 输出“HelloWorld!” 在visual studio中输出“HelloWorld!”。代码实现如下&#xff1a; #include <iostream> using namespace std;int main() {cout <&…

unity搭建xlua和emmy_lua的debug环境

配置步骤 1 环境 1.1 vscode 安装emmy_lua 1.2 安装对应的lua版本 1.3 安装java8并配置环境 1.4 emmy_lua的github上下载emmy_lua的64位版本&#xff0c;解压放到工程目录client\Tools\EmmyLua\ 下载地址&#xff1a;https://github.com/EmmyLua/EmmyLuaDebugger/release…

「Redis数据结构」动态字符串(SDS)

「Redis数据结构」动态字符串&#xff08;SDS&#xff09; 文章目录「Redis数据结构」动态字符串&#xff08;SDS&#xff09;[toc]一、前言二、概述三、C字符串与SDS的区别获取字符串长度复杂度杜绝缓冲区溢出减少修改字符串时的内存分配次数二进制安全兼容部分C字符串函数参考…

【PyTorch】Transforms基本使用

文章目录二、Transforms基本使用1、Transforms的结构及用法1.1 如何使用1.2 TensorBoard查看2、常用的Transforms2.1 ToTensor2.2 Normalize2.3 Resize2.4 Compose2.5 RandomCrop二、Transforms基本使用 Transforms主要是对特定格式的图片进行一些变化。 1、Transforms的结构及…