【机器学习笔记】基于实例的学习

基于实例的学习

文章目录

  • 基于实例的学习
    • 1 基本概念与最近邻方法
    • 2 K-近邻(KNN)
    • 3 距离加权 KNN
    • 4 基于实例/记忆的学习器
    • 5 局部加权回归
    • 5 多种回归方式对比
    • 6 懒惰学习与贪婪学习

​ 动机:人们通过 记忆和行动来推理学习。

1 基本概念与最近邻方法

  1. 名词概念

    • 参数化

      设定一个特定的函数形式

      优点:简单,容易估计和解释

      可能存在很大的偏置:实际的数据分布可能不遵循假设的分布

    • 非参数化:

      分布或密度的估计是数据驱动的(data-driven)

      需要事先对函数形式作的估计相对更少

  2. 基于实例的学习

    无需构建模型一仅存储所有训练样例,直到有新样例需要分类才开始进行处理。

    • 一个概念 c i c_i ci 可以表示为:

      样例的集合 c i = e i 1 , e i 2 . . . c_i={e_{i1},e_{i2}...} ci=ei1,ei2...

      一个相似度估计函数 f f f

      一个阈值 θ \theta θ

    • 一个实例 a a a 属于概念 c i c_i ci,当

      a a a c i c_i ci 中的某些 e j e_j ej 相似,并且 f ( e i , a ) > θ f(e_i,a)>\theta f(ei,a)>θ

  3. 最近邻方法

    计算新的样例和每个样例的距离,找出最近距离的确定其分类。

    距离度量:欧式距离 ∑ i = 1 n ( x i − y i ) 2 \sqrt{\sum_{i=1}^n(x_i-y_i)^2} i=1n(xiyi)2

    image-20240205172643565

    image-20240205172653858

    1-NN的错误率不大于Bayes方法错误率的2倍

  4. 最近邻的点是噪音怎么办?

    用不止一个邻居,在邻居中进行投票→K近邻(KNN)

2 K-近邻(KNN)

  1. 距离度量

    • 闵可夫斯基距离(Minkowski Distance)

      这是一种广义的距离度量,它包含了欧氏距离、曼哈顿距离和切比雪夫距离等特例
      d ( x , y ) = ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p d (x,y) = \left (\sum_{i=1}^n |x_i - y_i|^p \right )^{\frac {1} {p}} d(x,y)=(i=1nxiyip)p1
      其中, x x x y y y 是两个 n n n 维向量, x i x_i xi y i y_i yi 是它们的第 i i i 个分量, p p p 是一个正数,表示距离的幂次。当 p = 2 p=2 p=2 时,就是欧氏距离;当 p = 1 p=1 p=1 时,就是曼哈顿距离;当 p = ∞ p=\infty p= 时,就是切比雪夫距离。

    • 欧氏距离(Euclidean Distance)

      这是最常用的距离度量,它表示两个点在空间中的直线距离,计算公式为:
      d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d (x,y) = \sqrt {\sum_{i=1}^n (x_i - y_i)^2} d(x,y)=i=1n(xiyi)2
      其中, x x x y y y 是两个 n n n 维向量, x i x_i xi y i y_i yi 是它们的第 i i i 个分量。

    • 曼哈顿距离(Manhattan Distance)

      又称街区距离,这是另一种常用的距离度量,它表示两个点在网格中的路径距离,计算公式为:
      d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ d (x,y) = \sum_{i=1}^n |x_i - y_i| d(x,y)=i=1nxiyi
      其中, x x x y y y 是两个 n n n 维向量, x i x_i xi y i y_i yi 是它们的第 i i i 个分量。

    • 切比雪夫距离(Chebyshev Distance)

      又称棋盘距离,这是一种极端的距离度量,它表示两个点在各个维度上的最大差值,计算公式为:
      d ( x , y ) = max ⁡ i = 1 n ∣ x i − y i ∣ d (x,y) = \max_{i=1}^n |x_i - y_i| d(x,y)=i=1maxnxiyi
      其中, x x x y y y 是两个 n n n 维向量, x i x_i xi y i y_i yi 是它们的第 i i i 个分量。

    • 加权欧氏距离(Mean Censored Euclidean)
      d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 n d (x,y) = \sqrt {\frac{\sum_{i=1}^n (x_i - y_i)^2}{n}} d(x,y)=ni=1n(xiyi)2
      在欧式距离中,如果维度很高那么最后的值会很大,加权欧式距离/n考虑的就是这个问题。

    • Bray-Curtis Dist
      ∑ k ∣ x i k − x j k ∣ ∑ k ( x i k + x j k ) \frac{\sum_k|x_{ik}-x_{jk}|}{\sum_k(x_{ik}+x_{jk})} k(xik+xjk)kxikxjk
      在生物信息学上经常被使用,用来描述生物多样性。

  2. 属性

    • 属性归一化

      目的是消除不同属性之间的量纲和尺度的影响,使得数据更加统一和规范

      归一化方法: log ⁡ , min ⁡ − max ⁡ , s u m \log,\min-\max,sum log,minmax,sum

    • 属性加权

      无关的属性也会被使用进来,需要根据每个属性的相关性进行加权。

      加权方法:互信息
      KaTeX parse error: Expected 'EOF', got '&' at position 25: …(X)+H(Y)-H(X,Y)&̲\text{H:熵(entro…

  3. 连续取值目标函数

    k个近邻训练样例的均值。

    image-20240205174546985

    上图中红色:实例的真实值蓝色:估计值

  4. k的选择

    • 多数情况下k=3

    • 取决于训练样例的数目——更大的k不一定带来更好的效果

    • 交叉验证

      Leave-one-out:每次拿一个样例作为测试,所有其他的作为训练样例

    • KNN是稳定的——样例中小的混乱不会对结果有非常大的影响

  5. 打破平局

    如果k=3并且每个近邻都属于不同的类。

    • K值可以稍微比类别数大1或2,并且为奇数
    • 取1-NN(最近邻)
    • 随机选一个
  6. 关于效率

    KNN算法把所有的计算放在新实例来到时,实时计算开销大

    • 加速对最近邻居的选择

      先检验临近的点,忽略比目前找到最近的点更远的点

    • 通过 KD-tree 来实现

      KD-tree: k 维度的树(数据点的维度是 k)

      基于树的数据结构

      递归地将点划分到和坐标轴平行的方形区域内

  7. KD-Tree

    • 构建 KD-Tree

      image-20240205220055878

      • 选择一个范围最宽的维度,选择一个切分点,根据该维度的数据的中位数,将数据集分成两个子集,使得切分点左边的数据都小于等于它,右边的数据都大于等于它;
      • 递归地对左子树和右子树重复上述步骤,直到剩余的数据点少于 m,或者区域的宽度达到最小值
      • 返回根节点,完成 KD-Tree 的构建。

      在每个叶节点维护一个额外信息:这个节点下所有数据点的 (紧) 边界

    • 查询

      image-20240205220924635

      • 先检验临近的点:关注距离所查询数据点最近的树的分支

      • 达到一个叶节点后:计算节点中每个数据点距离目标点的距离

      • 接着回溯检验我们访问过的每个树节点的另一个分支,每次找到一个最近的点,就更新距离的上界

      • 利用最近距离以及每个树节点下数据的边界信息,对一部分不可能包含最近邻居的分支进行剪枝

  8. KNN 优缺点

    • 优点:

      • 概念上很简单,但可以处理复杂的问题

      • 通过对k-近邻的平均,对噪声数据更鲁棒

      • 容易理解:预测结果可解释

      • 训练样例中呈现的信息不会丢失,样例本身被显式地存储下来

      • 实现简单、稳定、没有参数(除了 k)

    • 缺点

      • 内存开销大:需要存储所有样例
      • CPU 开销大:分类新样本需要更大时间
      • 很难确定一个合适的距离函数
      • 不相关的特征 对距离的度量有负面的影响

3 距离加权 KNN

  1. 加权函数
    w i = K ( d ( x i , x q ) ) w_i=K(d(x_i,x_q)) wi=K(d(xi,xq))
    其中 d ( x i , x 1 ) d(x_i,x_1) d(xi,x1)是查询数据点与 x i x_i xi 之间的关系; K ( ⋅ ) K(·) K() 是决定每个数据点权重的核函数。

  2. 输出
    predict = ∑ w i y i ∑ w i \text{predict}=\frac{\sum w_iy_i}{\sum w_i} predict=wiwiyi

  3. 对比加权前后效果

    • KNN

      image-20240205222157055

    • 距离加权KNN

      image-20240205222215211

      高斯核函数:曲线更加平滑。

      image-20240205222234457

4 基于实例/记忆的学习器

  1. 1-NN
    • 距离度量:欧式距离
    • 使用多少个邻居:一个
    • 加权函数(加权):无
    • 如何使用已知的邻居节点:和邻居节点相同
  2. K-NN
    • 距离度量:欧式距离
    • 使用多少个邻居:K 个
    • 加权函数(加权) :无
    • 如何使用已知的邻居节点:K 个邻居节点投票
  3. 距离加权 KNN
    • 距离度量:缩放的欧式距离
    • 使用多少个邻居:所有的,或K 个
    • 加权函数(加权) :高斯核函数
    • 如何使用已知的邻居节点:每个输出的加权平均

5 局部加权回归

image-20240205222719853

  • 距离度量:缩放的欧式距离

  • 使用多少个邻居:所有的,或K 个

  • 加权函数(加权) :高斯核函数

  • 如何使用已知的邻居节点:首先构建一个局部的线性模型。拟合 β 最小化局部的加权平方误差和
    β = arg ⁡ min ⁡ β ∑ k = 1 N w k 2 ( y k − β ⊤ X k ) 2 \beta = \mathop{\arg\min}_\beta \sum_{k=1}^Nw_k^2(y_k-\beta^\top X_k)^2 β=argminβk=1Nwk2(ykβXk)2

5 多种回归方式对比

  1. 线性回归

    image-20240205223054757

  2. 连接所有点

    image-20240205223401423

  3. 1-近邻

    image-20240205223411655

  4. k-近邻(k=9)

    image-20240205223200166

  5. 距离加权 KNN(核回归)

    image-20240205223229347

    选择一个合适的 K w K_w Kw 非常重要,不仅是对核回归,对所有局部加权学习器都很重要。

  6. 局部加权回归

    image-20240205223307395

6 懒惰学习与贪婪学习

  1. 贪婪学习:查询之前就泛化
    • 训练时间长,测试时间短
    • 对于每个查询使用相同模型,倾向于给出全局估计
  2. 懒惰学习:等待查询再泛化
    • 训练时间短,测试时间长
    • 可以得到局部估计

​ 如果它们共享相同的假设空间,懒惰学习可以表示更复杂的函数

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

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

相关文章

C++初阶之类与对象(中)——六个默认函数详细解析

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 目录 一.前言 二.构造函数 2.1构造函数的语法和特性 2.1.1语法 2.…

C++ dfs 的状态表示(五十一)【第十一篇】

今天我们接着学习dfs(状态表示)。 1.抽象形式的dfs 前面用到的 DFS 算法都是比较容易想象出搜索过程的,接下来我们看一些不那么容易想象搜索过程的 DFS 过程,这些问题我们称为抽象形式的 DFS。 来回顾一下上节课遇到的一个问题&a…

java 执行方式和类加载过程

java默认属于混合执行: 编译和解释并存 java先进行解释执行,遇到多次重复的代码会把它编程成可执行文件,方便下次直接执行。 可以通过VM参数来修改执行方式。 类加载过程

为什么IDM下载速度很慢,IDM下载速度很慢怎么办

为什么IDM下载速度很慢,IDM下载速度很慢怎么办 IDM采用的是多线程下载模式。 如果说单线程下载“一个人完成一项工作”,那多线程下载就是“多个人完成一项工作”。它能让用户从服务器获得更高的带宽,从而提高资源下载速度。一般IDM会默认使用…

MySQL篇----第十九篇

系列文章目录 文章目录 系列文章目录前言一、什么是存储过程?用什么来调用?二、如何通俗地理解三个范式?三、什么是基本表?什么是视图?四、试述视图的优点?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这…

【漏洞复现】狮子鱼CMS文件上传漏洞(image_upload.php)

Nx01 产品简介 狮子鱼CMS(Content Management System)是一种网站管理系统,它旨在帮助用户更轻松地创建和管理网站。该系统拥有用户友好的界面和丰富的功能,包括页面管理、博客、新闻、产品展示等。通过简单直观的管理界面&#xf…

postgresql 手动清理wal日志的101个坑

新年的第一天,总结下去年遇到的关于WAL日志清理的101个坑,以及如何相对安全地进行清理。前面是关于WAL日志堆积的原因分析,清理相关可以直接看第三部分。 首先说明,手动清理wal日志是一个高风险的操作,尤其对于带主从的…

70.SpringMVC怎么和AJAX相互调用的?

70.SpringMVC怎么和AJAX相互调用的&#xff1f; &#xff08;1&#xff09;加入Jackson.jar&#xff08;2&#xff09;在配置文件中配置json的消息转换器.(jackson不需要该配置HttpMessageConverter&#xff09; <!‐‐它就帮我们配置了默认json映射‐‐> <mvc:anno…

前端工程化面试题 | 04.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

禁止文件外发,文件禁止外发的方法

在当今的企业环境中&#xff0c;数据安全至关重要。 什么是企业文件外发&#xff1f; 企业文件外发指的是将企业内部的电子文件发送给组织外部的人员使用。 这种行为可能带来数据安全风险&#xff0c;因为电子文件自身具有易拷贝、易扩散、易传播的特性。 如果带有核心资产或…

AS自治系统的路由协议--BGP

BGPV4 --- IPV4 --- BGPV4 --- MPBGP --- 支持多种不同的地址组 重发布替代BGP的缺陷&#xff1a; 1&#xff0c;选路不佳 2&#xff0c;ASBR的归属问题 BGP --- 无类别路径矢量协议 1&#xff0c;无类别 --- 在传递路由信息的时候携带子网掩码 2&#xff0c;路径矢量 ---…

小游戏和GUI编程(4) | 基于 SFML 的黑客帝国字符雨

小游戏和GUI编程(4) | 基于 SFML 的黑客帝国字符雨 文章目录 小游戏和GUI编程(4) | 基于 SFML 的黑客帝国字符雨1. 简介2. 规划3. 一个字符的下落3. 一个雨滴的下落4. 每个雨滴都是独一无二的5. 重构后&#xff0c; 降落多个雨滴6. 总结7. 参考 1. 简介 使用 SFML 实现黑客帝国…

股价分布统计 100元能买股票吗?

A股的股价一般是多少&#xff1f;100元能买股票吗&#xff1f;能买多少&#xff1f; 一、买入交易规则&#xff1a; 沪深主板(包括中小板)&#xff0c;股票代码以600,000,002开头&#xff0c;每次最低买100股&#xff0c;随后以100股为单位增加&#xff0c;也就是可以买100股&…

k8s-资源限制与监控 15

资源限制 上传实验所需镜像 Kubernetes采用request和limit两种限制类型来对资源进行分配。 request(资源需求)&#xff1a;即运行Pod的节点必须满足运行Pod的最基本需求才能 运行Pod。 limit(资源限额)&#xff1a;即运行Pod期间&#xff0c;可能内存使用量会增加&#xff0…

委托和事件详解

委托和事件详解 前言一、委托1.什么是委托2.委托的声明3.Action<T>委托和Func<T>委托4.委托的缺点5.委托与lambda表达式6.委托的使用&#xff08;1&#xff09;模板方法&#xff08;2&#xff09;回调方法 二、事件1.什么是事件2.事件模型的5个步骤和组成部分&…

《Git 简易速速上手小册》第5章:高级 Git 技巧(2024 最新版)

文章目录 5.1 交互式暂存5.1.1 基础知识讲解5.1.2 重点案例&#xff1a;为 Python 项目分阶段提交5.1.3 拓展案例 1&#xff1a;细粒度控制更改5.1.4 拓展案例 2&#xff1a;处理遗漏的更改 5.2 使用 Rebase 优化提交历史5.2.1 基础知识讲解5.2.2 重点案例&#xff1a;整理 Pyt…

springcloud分布式架构网上商城源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…

H12-821_35

35.如图所示,SWA、SWB、SWC都运行RSTP,SWB上的GEO/O/2端口和SWC上的GEO/0/1端其端口角色为? A.backup端口.Alternative端口 B.Alternative端口、Backup端口 C.Root端口、Designate端口 D.Backup端口、Root端口 答案&#xff1a;A 注释&#xff1a; 一个链路&#xff08;冲突域…

hexo部署到gitee(码云)

引言 Hexo 是一个基于Node.js的静态博客框架&#xff0c;而 Gitee&#xff08;也被称为码云&#xff09;是一个国内的代码托管平台&#xff0c;支持 Git 版本控制系统&#xff0c;与 GitHub 类似。将 Hexo 部署到 Gitee Pages 可以让你的博客受益于 Gitee 的国内服务器&#xf…

python web 框架Django学习笔记

2018年5月 python web 框架Django学习笔记 Django 架站的16堂课 MVC架构设计师大部分框架或大型程序项目中一种软件工程的架构模式&#xff0c;把程序或者项目分为三个主要组成部分&#xff0c;Model数据模型、View视图、Controller控制器。 命令及设置相关 创建数据库及中间…