吃瓜教程Day1笔记

主要内容:

1. 什么是机器学习以及

2. 机器学习的相关数学符号,为后续内容作铺垫,并未涉及复杂的算法理论,

因此阅读本章时只需耐心梳理清楚所有概念和数学符号即可。

3. “模型评估与选择”

是在模型产出以后进行的下游工作,要想完全吸收本章内容需要读者对模型 有一些基本的认知,因此零基础的读者直接看本章会很吃力,实属正常,在此建议零基础的读者可以简单泛读本章,仅看能看懂的部分即可。(数学部分已经略过)


样本:也称为“示例”,是关于一个事件或对象的描述。因为要想让计算机能对现实生活中的事物 进行机器学习,必须先将其抽象为计算机能理解的形式,计算机最擅长做的就是进行数学运算,因此考 虑如何将其抽象为某种数学形式。

显然,线性代数中的向量就很适合,因为任何事物都可以由若干“特 征”(或称为“属性”)唯一刻画出来,而向量的各个维度即可用来描述各个特征。


样本空间:也称为“输入空间”或“属性空间”。由于样本采用的是标明各个特征取值的“特征向量” 来进行表示,根据线性代数的知识可知,有向量便会有向量所在的空间,因此称表示样本的特征向量所在 的空间为样本空间。


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


模型:机器学习的一般流程如下:首先收集若干样本(假设此时有 100 个),然后将其分为训练样本 (80 个)和测试样本(20 个),其中 80 个训练样本构成的集合称为“训练集”,20 个测试样本构成的集合 称为“测试集”,接着选用某个机器学习算法,让其在训练集上进行“学习”(或称为“训练”),然后产出 得到“模型”(或称为“学习器”),最后用测试集来测试模型的效果。执行以上流程时,表示我们已经默认 样本的背后是存在某种潜在的规律,我们称这种潜在的规律为“真相”或者“真实”。


标记:上文提到机器学习的本质就是在学习样本在某个方面的表现是否存在潜在的规律,我们称该方 面的信息为“标记”。例如在学习西瓜的好坏时,“好瓜”和“坏瓜”便是样本的标记。

根据标记的取值类型不同,可将机器学习任务分为以下两类:

• 当标记取值为离散型时,称此类任务为“分类”,例如学习西瓜是好瓜还是坏瓜、学习猫的图片是白 猫还是黑猫等。当分类的类别只有两个时,称此类任务为“二分类”,通常称其中一个为“正类”,另 一个为“反类”或“负类”;当分类的类别超过两个时,称此类任务为“多分类”。由于标记也属于样 本的一部分,通常也需要参与运算,因此也需要将其数值化,例如对于二分类任务,通常将正类记为 1,反类记为 0,即 Y = {0, 1}。这只是一般默认的做法,具体标记该如何数值化可根据具体机器学 习算法进行相应地调整,例如第 6 章的支持向量机算法则采用的是 Y = {−1, +1};

• 当标记取值为连续型时,称此类任务为“回归”,例如学习预测西瓜的成熟度、学习预测未来的房价 等。由于是连续型,因此标记的所有可能取值无法直接罗列,通常只有取值范围,回归任务的标记取 值范围通常是整个实数域 R,即 Y = R。

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

• 在模型训练阶段有用到标记信息时,称此类任务为“监督学习”,例如第 3 章的线性模型;

• 在模型训练阶段没用到标记信息时,称此类任务为“无监督学习”,例如第 9 章的聚类。


泛化:由于机器学习的目标是根据已知来对未知做出尽可能准确的判断,因此对未知事物判断的准确 与否才是衡量一个模型好坏的关键,我们称此为“泛化”能力。

尽管模型 fa(x) 和模型 fb(x) 对训练集学得一样好,即两个模型对训练集中每个 样本的判断都对,但是其所学到的规律是不同的。导致此现象最直接的原因是算法的不同,但是算法通常 是有限的,可穷举的,尤其是在特定任务场景下可使用的算法更是有限,因此,数据便是导致此现象的另 一重要原因,这也就是机器学习领域常说的“数据决定模型的上限,而算法则是让模型无限逼近上限”, 下面详细解释此话的含义。

先解释“数据决定模型效果的上限”,其中数据是指从数据量和特征工程两个角度考虑。从数据量的 角度来说,通常数据量越大模型效果越好,因为数据量大即表示累计的经验多,因此模型学习到的经验也 多,自然表现效果越好。

而“算法则是让模型无限逼近上限”是指当数据相关的工作已准备充分时,接下来便可用各种可适用 的算法从数据中学习其潜在的规律进而得到模型,不同的算法学习得到的模型效果自然有高低之分,效果 越好则越逼近上限,即逼近真相。


分布:此处的“分布”指的是概率论中的概率分布,通常假设样本空间服从一个未知“分布”D,而 我们收集到的每个样本都是独立地从该分布中采样得到,即“独立同分布”。通常收集到的样本越多,越 能从样本中反推出 D 的信息,即越接近真相。此假设属于机器学习中的经典假设,在后续学习机器学习 算法过程中会经常用到。


理解“假设空间”和“版本空间”

作为训练集可以有多个假设空间,且在不同的假设空间中都有可能学得能够拟合训练集的模型,我们将所 有能够拟合训练集的模型构成的集合称为“版本空间”。

归纳偏好

当选用一元线性回归算法时,学得的模型是一元一次函数,当选 用多项式回归算法时,学得的模型是一元二次函数,所以不同的机器学习算法有不同的偏好,我们称为 “归纳偏好”。

著名的“奥卡姆剃刀”原则认为“若有多个假设与观察一致,则选最简单的那个”,但是何为“简单”便见仁见智了,如果认为函数的幂次越低越简单,则此时一元线性回归算法更好,如果认为幂次越高越简单,则此时多项式回归算法更好,因此该方法其实并不“简单”,所以并不常用.

而最常用的方法则是基于模型在测试集上的表现来评判模型之间的优劣。(测试集是指由训练集之外的样本构成的集合)


模型评估选择

经验误差与过拟合

错误率:E = a / m ,其中 m 为样本个数,a 为分类错误样本个数。

精度:精度 =1-错误率。

误差:学习器的实际预测输出与样本的真实输出之间的差异。

经验误差:学习器在训练集上的误差,又称为“训练误差”。

泛化误差:学习器在新样本上的误差。

错误率和精度很容易理解,而且很明显是针对分类问题的。

误差的概念更适用于回归问题,但是,根 据“西瓜书”第 12 章的式 (12.1) 和式 (12.2) 的定义可以看出,在分类问题中也会使用误差的概念,此时 的“差异”指的是学习器的实际预测输出的类别与样本真实的类别是否一致,若一致则“差异”为 0,若 不一致则“差异”为 1,训练误差是在训练集上差异的平均值,而泛化误差则是在新样本(训练集中未出现过的样本)上差异的平均值。

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

评估方法

本节介绍了 3 种模型评估方法:留出法、交叉验证法、自助法。

留出法由于操作简单,因此最常用; 交叉验证法常用于对比同一算法的不同参数配置之间的效果,以及对比不同算法之间的效果;自助法常用 于集成学习(详见“西瓜书”第 8 章的 8.2 节和 8.3 节)产生基分类器。

留出法和自助法简单易懂,不再赘述,下面举例说明交叉验证法的常用方式。

交叉验证法通过多次划分数据集来评估算法性能,以减少单次划分带来的偶然性。

以3折交叉验证为例,将数据集D分层采样为3个互斥子集D1、D2、D3,依次以其中一个子集作为测试集,其余两个作为训练集,得到3组训练-测试集。

对算法L的参数配置方案a和b,分别在每组训练集上训练模型并在对应测试集上测试,得到3次测试结果的平均值Scorea和Scoreb,通过比较两者确定最优参数配置。

同理,可对比不同算法α和β的效果。交叉验证法通过多次留出法,确保所有样本至少参与一次测试,提升评估结果的置信度。

算法参数是指算法本身的一些参数(也称超参数),例如 k 近邻的近邻个数 k、支持向量机的参数 C (详见“西瓜书”第 6 章式 (6.29))。

算法配置好相应参数后进行训练,训练结束会得到一个模型,例如支持向量机最终会得到 w 和 b 的具体数值(此处不考虑核函数),这就是模型参数,模型配置好相应模型参数后即可对新样本做预测。

验证集

一般采用的是前面讲到的交叉验证法,但是交叉验证法操作起来较为复杂,实际中更多采用的是:先用留出法将数据集划分出训练集和测试集,然后再对训练集采用留出法划分出训练集和新 的测试集,称新的测试集为验证集,接着基于验证集的测试结果来调参选出最优参数配置方案,最后将验 证集合并进训练集(训练集数据量够的话也可不合并),用选出的最优参数配置在合并后的训练集上重新 训练,再用测试集来评估训练得到的模型的性能。

性能度量

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

比较检验

为什么要做比较检验?“西瓜书”在本节开篇的两段话已经交代原由。简单来说,从统计学的角度,取 得的性能度量的值本质上仍是一个随机变量,因此并不能简单用比较大小来直接判定算法(或者模型)之 间的优劣,而需要更置信的方法来进行判定。

如果不做算法理论研究,也不需要对算法(或模型)之间的优劣给出严谨的数学分析, 本节可以暂时跳过。本节主要使用的数学知识是“统计假设检验”,该知识点在各个高校的概率论与数理统计教材上均有讲解。

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

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

相关文章

SpringCloud - Gateway 网关

前言 该博客为Sentinel学习笔记,主要目的是为了帮助后期快速复习使用 学习视频:7小快速通关SpringCloud 辅助文档:SpringCloud快速通关 源码地址:cloud-demo 一、简介 官网:https://spring.io/projects/spring-clou…

律所录音证据归集工具:基于PyQt6与多线程的自动化音频管理解决方案

在律所日常工作中,音频证据的整理与归集是一个高频且复杂的任务。面对大量的案件录音文件,如何实现快速且准确的分类与存档,成为了律所提高效率、降低出错率的关键。本文将通过技术角度解析一款名为律所录音证据归集工具的项目,详…

外贸网站源码 助力企业抢占蛇年市场先机!

在竞争激烈的外贸市场中,蛇年无疑是企业寻求突破与增长的关键一年。外贸网站源码为企业提供了快速搭建专业外贸网站的解决方案,助力企业在新的一年抢占市场先机。 快速上线 时间就是商机,尤其是在蛇年这样充满变数和机遇的年份。外贸网站源码…

Word成功接入DeepSeek详细步骤

原理 原理是利用Word的VBA宏,写代码接入API。无需下载额外插件。 步骤一、注册硅基流动 硅基流动统一登录 注册这个是为了有一个api调用的api_key,有一些免费的额度可以使用。大概就是这个公司提供token,我们使用这个公司的模型调用deepsee…

vue-点击生成动态值,动态渲染回显输入框

1.前言 动态点击生成数值&#xff0c;回显输入框&#xff0c;并绑定。 2.实现 <template><div style"display:flex;align-items: center;flex-direction:row"><a-input:key"inputKey"v-model"uploadData[peo.field]"placehold…

Python 识别图片和扫描PDF中的文字

目录 工具与设置 Python 识别图片中的文字 Python 识别图片中的文字及其坐标位置 Python 识别扫描PDF中的文字 注意事项 在处理扫描的PDF和图片时&#xff0c;文字信息往往无法直接编辑、搜索或复制&#xff0c;这给信息提取和分析带来了诸多不便。手动录入信息不仅耗时费…

利用邮件合并将Excel的信息转为Word(单个测试用例转Word)

利用邮件合并将Excel的信息转为Word 效果一览效果前效果后 场景及问题解决方案 一、准备工作准备Excel数据源准备Word模板 二、邮件合并操作步骤连接Excel数据源插入合并域预览并生成合并文档 效果一览 效果前 效果后 场景及问题 在执行项目时的验收阶段&#xff0c;对于测试…

进阶版MATLAB 3D柱状图

%% 1. 数据准备 % 假设数据是一个任意形式的矩阵 % 例如&#xff1a;5行 x 7列的矩阵 data [3 5 2 6 8 4 7;7 2 6 9 3 5 8;4 8 3 7 2 6 9;6 1 5 8 4 7 2;9 4 7 3 6 2 5];% 定义行和列的标签&#xff08;可选&#xff09; rowLabels {Row1, Row2, Row3, Row4, Row5}; % 行标签…

【JVM详解三】垃圾回收机制

一、对象是否存活 强引用&#xff1a;Object obj new Object(); 只要强引用还在&#xff0c;垃圾收集器永远不会回收掉被引用的对象。在不用对象的时将引用赋值为 null&#xff0c;能够帮助垃圾回收器回收对象。比如 ArrayList 的 clear() 方法实现。软引用&#xff08;SoftRe…

【免费】2007-2020年各省医疗卫生支出数据

2007-2020年各省医疗卫生支出数据 1、时间&#xff1a;2007-2020年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区名称、年份、医疗卫生支出 4、范围&#xff1a;31省 5、指标说明&#xff1a;地方财政医疗卫生支出是指地方ZF从其财政预…

【深度学习入门实战】基于Keras的手写数字识别实战(附完整可视化分析)

​ 本人主页:机器学习司猫白 ok,话不多说,我们进入正题吧 项目概述 本案例使用经典的MNIST手写数字数据集,通过Keras构建全连接神经网络,实现0-9数字的分类识别。文章将包含: 关键概念图解完整实现代码训练过程可视化模型效果深度分析环境准备 import numpy as np impo…

腾讯云大数据套件TBDS与阿里云大数据能力产品对比

前言 博主在接触大数据方向研究的时候是在2016年,那时候正是大数据概念非常火热的一个时间段,最著名的Google的3篇论文。Google FS、MapReduce、BigTable,奠定了大数据框架产品的基础。Google文件系统,计算框架和存储框架。往后所有的大数据产品和过程域无一不是在三个模块…

前端如何判断浏览器 AdBlock/AdBlock Plus(最新版)广告屏蔽插件已开启拦截

2个月前AdBlock/AdBlock Plus疑似升级了一次 因为自己主要负责面对海外的用户项目&#xff0c;发现以前的检测AdBlock/AdBlock Plus开启状态方法已失效了&#xff0c;于是专门研究了一下。并尝试了很多方法。 已失效的老方法 // 定义一个检测 AdBlock 的函数 function chec…

2.11寒假作业

web&#xff1a;[SWPUCTF 2022 新生赛]js_sign 打开环境是这样的&#xff0c;随便输入进行看看 提示错误&#xff0c;看源码其中的js代码 这个代码很容易理解&#xff0c;要让输入的内容等于对应的字符串&#xff0c;显然直接复制粘贴是错的 这串字符看起来像是base64加密&…

c# http

C#代码 客户端&#xff1a; NETCore提供了三种不同类型用于生产的REST API&#xff1a; HttpWebRequest;WebClient;HttpClient HttpWebRequest 这是.NET创建者最初开发用于使用HTTP请求的标准类。使用HttpWebRequest可以让开发者控制请求/响应流程的各个方面&#xff0c;如…

哈希表实现(C++实现)

目录 1.哈希概念 2.哈希冲突 3.哈希函数 4.哈希冲突解决 闭散列 —— 开放定址法 线性探测 二次探测 开散列 —— 链地址法&#xff08;拉链法、哈希桶&#xff09; 5.哈希表的闭散列实现 哈希表的结构 哈希表的大小和扩容 哈希表的插入 哈希表的查找 哈希表的删除…

开箱即用:一个易用的开源表单工具!

随着互联网的普及&#xff0c;表单应用场景越来越广泛&#xff0c;从网站注册、调查问卷到考试测评&#xff0c;无处不在。传统的表单制作方式需要一定的代码基础&#xff0c;对于不懂编程的小伙伴来说&#xff0c;无疑是一道门槛。 今天&#xff0c;给大家分享一款开源的表单…

牛客 BM1: 反转链表

目录 一、题目 二、C解题程序框架 1. 结构体定义 2. 类定义 3. 输入输出说明 三、链表指针 1. 链表指针的基本概念 2. 链表指针的常见操作 1. 遍历链表 2. 插入节点 3. 删除节点 3. 链表指针操作的注意事项 4. 总结 四、解题 方法一&#xff1a;迭代法 方法二&…

MIT开源7B推理模型Satori:用行动思维链进行强化学习,增强自回归搜索

自OpenAI的o1发布以来&#xff0c;研究社区为提升开源LLM的高级推理能力做出了诸多努力&#xff0c;包括使用强大的教师模型进行蒸馏、蒙特卡洛树搜索&#xff08;MCTS&#xff09;以及基于奖励模型的引导搜索等方法。 本研究旨在探索一个新的研究方向&#xff1a;使LLM具备自回…

Kubernetes控制平面组件:etcd(一)

云原生学习路线导航页&#xff08;持续更新中&#xff09; kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计&#xff08;一&#xff09;Kubernetes架构原则和对象设计&#xff08;二&#xff09;Kubernetes架构原则和对象设计&#xff08;三&#xff09;kubectl 和 …