当前位置: 首页 > news >正文

机器学习中的距离概念

距离在机器学习中应用广泛,包括欧式距离、曼哈顿距离、内积距离和KL距离。
下面总结一下。

机器学习中的距离

  • 欧式距离
  • 曼哈顿距离
  • 内积距离
  • KL距离
  • 距离作为损失函数(MSE/MAE...)
  • 欧式距离与内积距离的联系
  • ☆距离的有效性

欧式距离

欧式距离(Euclidean Distance)是机器学习和数据科学中常用的一种距离度量方式,用来衡量两个点在欧几里得空间中的距离。它是通过计算这两个点之间的直线距离来表示的。

应用场景:

  • 分类问题:在 k-近邻算法 (k-Nearest Neighbors, KNN) 中,欧式距离被用来衡量待分类样本与已知类别样本之间的距离,以此来判断待分类样本的类别。
  • 聚类分析:在聚类算法(如 K-Means)中,欧式距离常用于计算每个样本点与簇中心的距离,从而决定样本点属于哪个簇。
  • 降维与度量学习:在某些降维技术(如主成分分析,PCA)或度量学习算法中,欧式距离被用来保持数据点之间的相对距离关系。

特点和局限性:

  • 优点:欧式距离直观易于计算,适用于大多数的物理空间距离计算。
  • 局限性:在高维空间(即“维度灾难”)下,欧式距离可能会失去其有效性,因为所有点之间的距离趋向于相似,导致算法效果下降。
  • 另外,欧式距离对数据中的尺度敏感,如果各个维度的量纲不同,通常需要进行归一化处理

曼哈顿距离

曼哈顿距离(Manhattan Distance),也称为城市街区距离(City Block Distance)或 L1 距离,是一种用于度量两个点之间距离的方式。与欧式距离不同,曼哈顿距离表示在一个网格状路径上移动的距离,就像在城市街道中沿着直角走动。

应用场景:

  • 分类和回归:在一些机器学习算法中(如 k-近邻算法),曼哈顿距离可以用于衡量样本之间的相似性,尤其是在特征独立且均匀分布的情况下。
  • 图像处理:在图像处理中,曼哈顿距离有时用于计算像素之间的距离,因为它能够更好地保持图像的结构特性。
  • 神经网络:在某些神经网络的正则化过程中(如 L1 正则化),曼哈顿距离的概念用于惩罚模型的复杂度。

特点和局限性:

  • 优点:曼哈顿距离对于高维数据稀疏数据表现较好,因为它不受高维空间中距离趋同效应的影响。
  • 局限性:在某些情况下,曼哈顿距离可能不如欧式距离直观,尤其是当数据更接近连续变化而非离散变化时。

内积距离

内积距离(Inner Product Distance)是一种基于向量内积相似性度量方法。在机器学习和数据分析中,内积(也称为点积或标量积)通常用于评估两个向量之间的相似性。
在这里插入图片描述
应用场景:

  • 相似性度量:内积可以用于衡量两个向量之间的相似性。☆在某些推荐系统中,内积用于计算用户与物品之间的相似性。
  • 神经网络:在神经网络中,内积是计算神经元输入和权重的线性组合的基础操作。
  • 信息检索:在文本检索中,内积可以用于衡量文档与查询向量之间的相似性。

局限性

  • 不对称性:内积不是严格意义上的“距离”度量,因为它不满足对称性和三角不等式等性质。
  • 尺度问题:由于内积受向量长度影响,直接使用内积作为距离度量可能导致误导性的结果,尤其是在向量长度差异较大的情况下。

为了克服这些局限性,内积通常与其他方法结合使用,如余弦相似性(通过将向量归一化)等。

KL距离

KL距离通常指的是Kullback-Leibler散度(Kullback-Leibler Divergence),又称KL散度或相对熵。它是信息论中用于衡量两个概率分布之间差异的一种非对称度量。KL散度在机器学习、统计学和信息论中有广泛的应用。

注:
KL距离不具有对称性。

应用场景

  • 机器学习:在机器学习中,KL散度常用于优化问题,如变分自动编码器(VAE)中,KL散度用于衡量近似后验分布与真实后验分布之间的差异。
  • 统计推断:KL散度可用于模型选择和假设检验,通过比较不同模型的拟合优度来选择最合适的模型。
  • 信息论:在信息论中,KL散度用于量化两个概率分布之间的差异,特别是在压缩和传输信息时。

距离作为损失函数(MSE/MAE…)


这里补充一下关于内积相似度。如果计算的话,首先需要给出“相似”的定义。
比如下面这个例子。

欧式距离与内积距离的联系



若是在A,B两点到原点的距离都是1的情况下,欧氏距离越大,内积相似度越小。

☆距离的有效性

在机器学习中无论什么距离,都是对短途有效!
距离在过远时已经丧失了意义。

在如上图这种情况下,如果计算A,B之间的距离,不能直接根据A,B两点的坐标进行计算,因为A,B距离“太远”,不能直接计算,而需要找到距离A的很近的若干点,不断地沿着路径计算出d1,d2,d3,…,dn,然后相加即可。

相关文章:

机器学习中的距离概念

距离在机器学习中应用广泛,包括欧式距离、曼哈顿距离、内积距离和KL距离。 下面总结一下。 机器学习中的距离 欧式距离曼哈顿距离内积距离KL距离距离作为损失函数(MSE/MAE...)欧式距离与内积距离的联系☆距离的有效性 欧式距离 欧式距离(Euclidean Dis…...

Java 如何判断map为null或者空

1.示例一 在Java中,如果我们想判断一个Map是否为null或者空(即没有任何键值对),我们可以使用以下的方法。下面是一个完整的示例代码,展示了如何进行这样的判断: import java.util.HashMap; import java…...

终端用户视角下的性能测试,体验与度量的融合

传统的性能测试的度量标准是什么 响应时间(Response Time): 这是从客户端发出请求到接收到完整响应所需的时间。响应时间是衡量系统性能的重要指标,特别是在面向用户的应用中,因为它直接影响用户体验。 而用户体验的度…...

KCP源码解析系列(二)KCP协议结构体

一、KCP协议包 1.1 kcp协议包 kcp中只有一种数据包,不管是数据还是控制信息,都用这个数据包来表示 0 4 5 6 8 (BYTE) ---------------------------- | conv |cmd|frg| wnd | ---------------------------- 8 | …...

微软运行库全集合:一站式解决兼容性问题

开发者在部署应用程序时经常遇到因缺少运行库而引发的兼容性问题。为了解决这一问题,电脑天空推荐微软常用运行库合集,一个集成了微软多个关键运行库组件的软件包。 📚 包含组件概览: Visual Basic Virtual Machine:…...

【 亿邦动力网-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …...

算法笔记|Day26贪心算法IV

算法笔记|Day26贪心算法IV ☆☆☆☆☆leetcode 452. 用最少数量的箭引爆气球题目分析代码 ☆☆☆☆☆leetcode 435. 无重叠区间题目分析代码 ☆☆☆☆☆leetcode 763.划分字母区间题目分析代码 ☆☆☆☆☆leetcode 452. 用最少数量的箭引爆气球 题目链接:leetcode …...

CVPR2023《DNF: Decouple and Feedback Network for Seeing in the Dark》暗光图像增强论文阅读笔记

相关链接 论文链接 https://openaccess.thecvf.com/content/CVPR2023/papers/Jin_DNF_Decouple_and_Feedback_Network_for_Seeing_in_the_Dark_CVPR_2023_paper.pdf 代码链接 https://github.com/Srameo/DNF 摘要 RAW数据的独特属性在低光照图像增强方面展现出巨大潜力。…...

大厂进阶七:React状态管理全解析

前言: React 中用于状态管理的hook及库有:useState、useReducer、useContext、useReducer useContext和一些第三方的库如redux、mobx等。 1、useState 单一组件某个具体状态 2、useReducer 单一组件中多个状态管理,策略分发机制统一管理…...

【ocr识别003】flask+paddleocr+bootstrap搭建OCR文本推理WEB服务

1.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 2.了解、学习OCR相关技术知识领域,结合日常的场景进行测试、总结。如本文总结的flaskpaddleocrbootstrap搭建OCR文本推理WEB服务应用示例场景。 文章目录 1.代码结构2.效果演…...

从零开始搭建 LVS 高性能集群 (DR模式)

从零开始搭建 LVS 高性能集群 (DR模式) 架构 本设计方案采用三台服务器构建集群,使用Linux Virtual Server (LVS) 作为负载均衡器,运行在直接路由 (DR) 模式下。集群中的每一台服务器都将运行相同的服务,以实现 高可用…...

Linux环境开发工具【yum与vim】

🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 文章目录 1.Linux软件包管理器yum1.1 快速使用yum 2. Linux编辑器-vim的使用2.1 vim的基本…...

laravel GuzzleHttp Client 无法获取返回的错误信息

Client发送一些请求,当返回状态不是200的时候,无法获取完整错误信息 $client new Client([base_uri > $this->getUri()./order/aaaaaa,timeout > 30,verify > false]);try {$response $client->request(POST, , [headers > [Lang&g…...

XMOS 多路音频解码器

当谈及高性能音频解码器,XMOS 是一个不容忽视的名字。作为音频解决方案领域的领军者,XMOS 的多路音频解码器在音频处理技术中扮演着至关重要的角色。下面我们一起深入探讨 XMOS 多路音频解码器去了解这一技术的魅力。 设计背景:追求音频极致…...

XSS小游戏(题目+解析)

xss题目练习地址&#xff1a; xss小游戏 游戏界面 一、Ma Spaghet! 我将题目要求进行翻译: 题目的主要要求就是&#xff1a;弹出一个&#xff08;1337&#xff09;的弹窗 开始解题&#xff1a; Let’s Go! 首先&#xff0c;传个参数看看 发现参数直接显示在了 < h2 >…...

《Redis核心技术与实战》学习笔记4——AOF日志:宕机了,Redis如何避免数据丢失?

文章目录 AOF 日志是如何实现的&#xff1f;三种写回策略 日志文件太大了怎么办&#xff1f;AOF 重写会阻塞吗?小结 大家好&#xff0c;我是大白。 如果有人问你&#xff1a;“你会把 Redis 用在什么业务场景下&#xff1f;”我想你大概率会说&#xff1a;“我会把它当作缓存使…...

NextJs - 服务端/客户端组件之架构多样性设计

NextJs - 服务端/客户端组件之架构多样性设计 前言一. 架构设计1.1 SSR流式渲染常见错误设计之 - 根页面同步阻塞1.2 架构设计之 - 客户端组件依赖于服务端组件数据① 使用 Redux 完成数据共享 1.3 架构设计之 - 单页内的分步骤跳转① 如何做到服务端组件和客户端组件之间的切换…...

使用 Python 进行 PDF 文件加密

使用 Python 解密加密的 PDF 文件-CSDN博客定义一个名为的函数&#xff0c;该函数接受三个参数&#xff1a;输入的加密 PDF 文件路径input_pdf、输出的解密 PDF 文件路径output_pdf和密码password。https://blog.csdn.net/qq_45519030/article/details/141256661 在数字化时代…...

Spring Boot集成RabbitMQ

目录 1.RabbitMQ简介2.添加依赖3.配置RabbitMQ连接4.DirectExchange4.1 消费者4.2 生产者4.3 测试4.4 一个交换机对多个队列4.5 一个队列对多个消费者 5.FanoutExchange5.1 消费者5.2 生产者5.3 测试 6.TopicExchange6.1 消费者6.2 生产者 1.RabbitMQ简介 RabbitMQ是一个由Erl…...

OLED屏幕制造工艺流程

OLED屏幕制造工艺流程是一个复杂且精细的过程&#xff0c;涉及多个关键步骤以确保最终的显示效果和性能。以下是OLED屏幕制造工艺流程的主要步骤&#xff1a; 1. 衬底制作与准备 材料选择&#xff1a;OLED器件需要一个透明的导电衬底&#xff0c;通常使用玻璃或塑料材料。 清…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...