算法金 | 欧氏距离算法、余弦相似度、汉明、曼哈顿、切比雪夫、闵可夫斯基、雅卡尔指数、半正矢、Sørensen-Dice


大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」

抱个拳,送个礼

在算法模型构建中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离。 今天,一键拿下九种距离算法。走你~

一、欧氏距离 (Euclidean Distance)

定义与公式

欧氏距离是两个点在 n 维空间中直线距离的度量。它是最常见的距离度量方法之一,用于计算两个向量之间的距离。欧氏距离的公式如下:

应用场景

欧氏距离广泛应用于许多领域,如机器学习、统计学、模式识别和数据挖掘。常见的应用场景包括:

  • 分类算法:如 k 近邻 (k-Nearest Neighbors, KNN) 算法,通过计算新样本与训练样本之间的欧氏距离来进行分类
  • 聚类分析:如 k 均值 (k-Means) 聚类算法,通过计算样本与聚类中心之间的欧氏距离来确定样本所属的簇
  • 图像处理:用于度量图像之间的相似度,如图像检索和图像匹配

优缺点分析

优点:

  • 计算简单:欧氏距离的计算公式简单易懂,且计算量较小,适用于大多数应用场景
  • 直观性强:欧氏距离直接反映了两个点之间的几何距离,具有很强的直观性

缺点:

  • 对尺度敏感:不同维度的数值尺度差异会影响距离的计算结果,需要对数据进行标准化或归一化处理
  • 对异常值敏感:欧氏距离对数据中的异常值非常敏感,异常值可能会显著影响计算结果

欧氏距离(Euclidean Distance)

二、余弦相似度 (Cosine Similarity)

定义与公式

余弦相似度是一种衡量两个向量夹角余弦值的度量,常用于评估两个向量的相似度。公式如下:

应用场景

余弦相似度在许多领域有广泛应用,特别是文本和信息检索领域:

  • 文本相似度计算:在自然语言处理 (NLP) 中,余弦相似度用于计算两个文本或文档之间的相似度,通过比较它们的词频向量
  • 推荐系统:如用户-物品推荐系统,通过计算用户之间或物品之间的相似度来进行推荐
  • 图像相似度计算:在计算机视觉中,用于比较图像特征向量的相似度

优缺点分析

优点:

  • 不受向量长度影响:余弦相似度仅关注向量的方向,而不受向量的长度影响,适用于不同规模的数据
  • 计算简单:公式简单,计算效率高,适合大规模数据处理

缺点:

  • 无法反映数值大小的差异:余弦相似度仅考虑向量的方向,不考虑数值的大小,可能会忽略重要的数值信息
  • 对稀疏向量效果较差:对于稀疏向量(如文本数据中的词频向量),计算结果可能不准确,需要结合其他方法使用

余弦相似度(Cosine Similarity)

防失联,进免费知识星球,直达算法金 AI 实验室 https://t.zsxq.com/ckSu3

更多内容,见免费知识星球

三、汉明距离 (Hamming Distance)

定义与公式

汉明距离用于衡量两个等长字符串之间的不同字符个数。公式如下:

应用场景

汉明距离主要用于以下场景:

  • 错误检测和纠正:在通信和存储系统中,用于检测和纠正数据传输和存储中的错误,如汉明码
  • 基因序列分析:在生物信息学中,用于比较 DNA 和 RNA 序列之间的差异
  • 密码学:在密码分析中,用于比较不同密文之间的差异

优缺点分析

优点:

  • 计算简单:汉明距离的计算过程非常简单,适合大规模数据处理
  • 适用于离散数据:汉明距离特别适用于比较离散数据,如字符串和二进制数据

缺点:

  • 仅适用于等长字符串:汉明距离只能比较长度相同的字符串,对于长度不同的字符串无法计算
  • 不考虑字符位置的重要性:汉明距离只关注字符是否相同,不考虑字符在字符串中的位置重要性

汉明距离(Hamming Distance)

四、曼哈顿距离 (Manhattan Distance)

定义与公式

曼哈顿距离,又称为城市街区距离,是指两个点在 n 维空间中各个坐标轴上的距离之和。公式如下:

应用场景

曼哈顿距离在以下领域有广泛应用:

  • 数据挖掘和机器学习:如在 k 近邻 (KNN) 算法中,用于计算样本之间的距离
  • 图像处理:用于图像像素之间的距离计算,如图像匹配和分割
  • 机器人路径规划:在路径规划中,用于计算机器人在网格地图中的移动距离

优缺点分析

优点:

  • 计算简单:曼哈顿距离的计算公式简单,计算量较小,适用于大多数应用场景
  • 适用于高维数据:在高维空间中,曼哈顿距离比欧氏距离更稳定,不易受到个别维度异常值的影响

缺点:

  • 不适用于所有场景:曼哈顿距离在某些场景中可能不如欧氏距离直观,如需要考虑斜向移动的场景
  • 对尺度敏感:不同维度的数值尺度差异会影响距离的计算结果,需要对数据进行标准化或归一化处理

曼哈顿距离(Manhattan Distance)

抱个拳,送个礼

点击 ↑ 领取

防失联,进免费知识星球,直达算法金 AI 实验室 https://t.zsxq.com/ckSu3

免费知识星球,欢迎加入交流

五、切比雪夫距离 (Chebyshev Distance)

定义与公式

切比雪夫距离,又称为棋盘距离,是指两个点在 n 维空间中各个坐标轴上的最大距离。公式如下:

应用场景

切比雪夫距离在以下领域有应用:

  • 棋盘游戏:如国际象棋中,王每次可以沿任意方向移动一个格子,切比雪夫距离用于计算王移动的步数
  • 仓储和物流:在仓储管理中,用于计算物品在网格仓库中的最远距离

优缺点分析

优点:

  • 计算简单:切比雪夫距离的计算公式简单,计算量小,适用于需要快速计算距离的场景
  • 直观性强:对于某些特定场景,如棋盘游戏,切比雪夫距离具有很强的直观性

缺点:

  • 应用范围有限:切比雪夫距离主要适用于特定场景,不适合所有类型的数据分析
  • 对异常值敏感:切比雪夫距离对数据中的异常值非常敏感,异常值可能会显著影响计算结果

切比雪夫距离(Chebyshev Distance)

六、闵可夫斯基距离 (Minkowski Distance)

定义与公式

闵可夫斯基距离是欧氏距离和曼哈顿距离的广义形式,通过调整参数 𝑝𝑝,可以得到不同的距离度量。公式如下:

应用场景

闵可夫斯基距离广泛应用于数据分析和机器学习中:

  • 分类算法:如 k 近邻 (KNN) 算法中,通过调整 𝑝𝑝 值来选择适合的距离度量
  • 聚类分析:如 k 均值 (k-Means) 聚类算法中,通过调整 𝑝𝑝 值来确定样本与聚类中心之间的距离

优缺点分析

优点:

  • 灵活性高:通过调整参数 𝑝,可以得到不同的距离度量,适应不同的应用场景
  • 计算公式统一:无论是曼哈顿距离还是欧氏距离,均可以通过统一的闵可夫斯基距离公式来计算

缺点:

  • 参数选择困难:在实际应用中,选择合适的 𝑝𝑝 值可能比较困难,需要根据具体问题进行调整
  • 对异常值敏感:闵可夫斯基距离对数据中的异常值较为敏感,可能会影响计算结果

闵可夫斯基距离 (Minkowski Distance)

抱个拳,送个礼

点击 ↑ 领取

七、雅卡尔指数 (Jaccard Index)

定义与公式

雅卡尔指数用于衡量两个集合的相似度,其值为两个集合交集的大小除以并集的大小。公式如下:

应用场景

雅卡尔指数在以下领域有广泛应用:

  • 信息检索:用于评估搜索结果与查询的相关性
  • 图像处理:用于比较图像分割结果与真实分割的相似度
  • 生态学:用于比较不同物种群落之间的相似度

优缺点分析

优点:

  • 适用于集合数据:雅卡尔指数特别适用于比较离散的集合数据
  • 计算简单:雅卡尔指数的计算过程简单,适用于大规模数据处理

缺点:

  • 对稀疏数据效果较差:对于稀疏数据(如文本数据),雅卡尔指数可能不准确,需要结合其他方法使用
  • 无法处理权重信息:雅卡尔指数仅考虑集合中元素的存在与否,不考虑元素的权重信息

雅卡尔指数(Jaccard Index)

八、半正矢距离 (Haversine Distance)

定义与公式

半正矢距离用于计算地球表面上两点之间的最短距离,考虑到地球的球形特性。公式如下:

应用场景

半正矢距离主要用于以下场景:

  • 地理信息系统 (GIS):用于计算地球表面两点之间的最短距离
  • 导航系统:用于GPS导航系统中,计算起点和终点之间的距离
  • 航空和海洋运输:用于计算航线和航程

优缺点分析

优点:

  • 考虑地球曲率:半正矢距离考虑到地球的球形特性,计算结果更准确
  • 适用于长距离计算:对于长距离的两点间距离计算,半正矢距离比直线距离更准确

缺点:

  • 计算复杂:半正矢距离的计算公式较复杂,计算量较大,不适合实时计算
  • 对短距离不敏感:对于短距离的两点间距离计算,半正矢距离与直线距离差异不大

半正矢距离 (Haversine Distance)

防失联,进免费知识星球,直达算法金 AI 实验室 https://t.zsxq.com/ckSu3

免费知识星球,欢迎加入,一起交流切磋

九、Sørensen-Dice 系数

(Sørensen-Dice Coefficient)

定义与公式

Sørensen-Dice 系数用于衡量两个集合的相似度,其值为两个集合交集的大小的两倍除以两个集合大小的总和。公式如下:

应用场景

Sørensen-Dice 系数在以下领域有广泛应用:

  • 信息检索:用于评估搜索结果与查询的相关性
  • 图像处理:用于比较图像分割结果与真实分割的相似度
  • 生态学:用于比较不同物种群落之间的相似度

优缺点分析

优点:

  • 适用于集合数据:Sørensen-Dice 系数特别适用于比较离散的集合数据
  • 计算简单:Sørensen-Dice 系数的计算过程简单,适用于大规模数据处理

缺点:

  • 对稀疏数据效果较差:对于稀疏数据(如文本数据),Sørensen-Dice 系数可能不准确,需要结合其他方法使用
  • 无法处理权重信息:Sørensen-Dice 系数仅考虑集合中元素的存在与否,不考虑元素的权重信息

Sørensen-Dice 系数 (Sørensen-Dice Coefficient)

[ 抱个拳,总个结 ]

各种距离和相似度的对比分析

数学性质对比

  • 欧氏距离:度量空间中两点之间的直线距离,具有平移不变性和对称性
  • 余弦相似度:度量两个向量之间夹角的余弦值,仅考虑向量的方向,不考虑向量的大小
  • 汉明距离:度量两个等长字符串之间不同字符的个数,适用于离散数据
  • 曼哈顿距离:度量空间中两点在各坐标轴上的距离之和,适用于高维数据
  • 切比雪夫距离:度量两个点在各坐标轴上的最大距离,适用于棋盘游戏等特定场景
  • 闵可夫斯基距离:欧氏距离和曼哈顿距离的广义形式,通过调整参数 𝑝𝑝 可得到不同的距离度量
  • 雅卡尔指数:度量两个集合的相似度,计算两个集合交集与并集的比值
  • 半正矢距离:计算地球表面两点间的最短距离,考虑地球的球形特性
  • Sørensen-Dice 系数:度量两个集合的相似度,计算两个集合交集大小的两倍与两个集合大小总和的比值

计算复杂度对比

  • 欧氏距离:𝑂(𝑛),计算简单,适用于大多数应用场景
  • 余弦相似度:𝑂(𝑛),计算简单,适合大规模数据处理
  • 汉明距离:𝑂(𝑛),计算简单,适合离散数据
  • 曼哈顿距离:𝑂(𝑛),计算简单,适用于高维数据
  • 切比雪夫距离:𝑂(𝑛),计算简单,适用于特定场景
  • 闵可夫斯基距离:𝑂(𝑛),通过调整参数 𝑝𝑝,适应不同的应用场景
  • 雅卡尔指数:𝑂(𝑛),计算简单,适用于集合数据
  • 半正矢距离:𝑂(1),公式复杂,适合地理信息系统等场景
  • Sørensen-Dice 系数:𝑂(𝑛),计算简单,适用于集合数据

适用场景对比

  • 欧氏距离:适用于空间距离计算、分类算法(如 KNN)、聚类分析(如 K-Means)
  • 余弦相似度:适用于文本相似度计算、推荐系统、图像相似度计算
  • 汉明距离:适用于错误检测和纠正、基因序列分析、密码学
  • 曼哈顿距离:适用于数据挖掘和机器学习、图像处理、机器人路径规划
  • 切比雪夫距离:适用于棋盘游戏、仓储和物流
  • 闵可夫斯基距离:适用于分类算法、聚类分析
  • 雅卡尔指数:适用于信息检索、图像处理、生态学
  • 半正矢距离:适用于地理信息系统、导航系统、航空和海洋运输
  • Sørensen-Dice 系数:适用于信息检索、图像处理、生态学

核心要点回顾

  • 欧氏距离:计算空间中两点间的直线距离,简单易懂
  • 余弦相似度:计算两个向量间夹角的余弦值,适合文本和向量数据
  • 汉明距离:计算两个等长字符串间不同字符的个数,适合离散数据
  • 曼哈顿距离:计算空间中两点在各坐标轴上的距离之和,适合高维数据
  • 切比雪夫距离:计算两点间各坐标轴上的最大距离,适用于特定场景
  • 闵可夫斯基距离:欧氏距离和曼哈顿距离的广义形式,通过参数调整适应不同场景
  • 雅卡尔指数:计算两个集合的相似度,适合集合数据
  • 半正矢距离:计算地球表面两点间的最短距离,考虑地球曲率
  • Sørensen-Dice 系数:计算两个集合的相似度,适合集合数据

- 科研为国分忧,创新与民造福 -

日更时间紧任务急,难免有疏漏之处,还请大侠海涵 内容仅供学习交流之用,部分素材来自网络,侵联删

[ 算法金,碎碎念 ]

这个神反馈,

有点意思

hhh~

全网同名,日更万日,让更多人享受智能乐趣

如果觉得内容有价值,烦请大侠多多 分享、在看、点赞,助力算法金又猛又持久、很黄很 BL 的日更下去;

同时邀请大侠 关注、星标 算法金,围观日更万日,助你功力大增、笑傲江湖

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

源码航行阅读目录

🏀 前言 在准备面试和学习的过程中,我阅读了比较多的源码,比如 JUC、Spring、MyBatis,收获了很多代码的设计思想,也对平时调用的 API 有了更深入的理解;但过多散乱的笔记给我的整理复习带来了比较大的麻烦…

基于Java技术的人事管理系统

你好,我是专注于计算机科学领域的小野。如果你对人事管理系统感兴趣或有相关需求,欢迎私信交流。 开发语言: Java 数据库: MySQL 技术: B/S模式、Java技术、SpringBoot 工具: Eclipse、MySQL、浏览…

【linux学习---1】点亮一个LED是多么的困难!!!

文章目录 1、原理图找对应引脚2、IO复用3、IO配置4、GPIO配置5、GPIO时钟使能6、总结7、编程8、编译9、链接10、格式转换11、反汇编(查看用)12、使用Makefile操作13、代码烧写14、代码验证 1、原理图找对应引脚 从上图 可以看出, 蜂鸣器 接到…

Photoshop属于什么软件 Photoshop缓存文件清理 Mac清理PS缓存 苹果电脑ps内存满了怎么清理

对于所有热爱使用Adobe Photoshop的Mac用户来说,这款软件无疑是创意工作的强大助手。但是,随着时间的积累,你可能会发现Photoshop开始变得有点慢,反应迟钝。这通常是因为Photoshop的缓存和临时文件堆积,占用了宝贵的系…

刷题之买股票的最佳时机(leetcode)

买股票的最佳时机 动态规划入门题。 最简单的模拟式解法&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {//也可以换一种思路&#xff0c;因为只交易一次&#xff0c;那么找出股票最便宜的时候买入&#xff0c;最贵的时候卖出&#xff…

每日一题~ (判断是否是合法的出栈序列)

大概的题意&#xff1a; 将 1-n 按照顺序进栈&#xff0c;问 输入的序列是否是合法的出栈序列。 遍历序列&#xff0c;如果当前这个值a小于 栈顶的值&#xff0c;说明它还未进栈&#xff08;因为我们是按照顺序进栈的&#xff09;&#xff0c;所以我们将 一些元素进栈&#xff…

uniapp 封装请求

新建request文件夹 下新建index.js 和index.js 或者创建units文件放入index.js 和api文件夹放入index.js(api.js)//看公司规范 1. index.js // 全局请求封装 // const base_url http://localhost:8080/devapi var base_url process.env.NODE_ENV development ? http://…

Studying-代码随想录训练营day27| 贪心算法理论基础、455.分发饼干、376.摆动序列、53.最大子序和

第27天&#xff0c;贪心开始&#xff01;(ง •_•)ง&#x1f4aa;&#xff0c;编程语言&#xff1a;C 目录 贪心算法理论基础 贪心的套路 贪心的一般解题步骤 总结 455.分发饼干 376.摆动序列 53.最大子序和 总结 贪心算法理论基础 什么是贪心&#xff1f;—— 贪…

自动化设备上位机设计 三

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 using SqlSugar;namespace 自动化上位机设计 {public partial class Form1 : Form{SqlHelper sqlHelper new SqlHelper();SqlSugarClient dbContent null;bool IsRun false;int Count 0;public Form1(){Initializ…

SpringBoot新手快速入门系列教程五:基于JPA的一个Mysql简单读写例子

现在我们来做一个简单的读写Mysql的项目 1&#xff0c;先新建一个项目&#xff0c;我们叫它“HelloJPA”并且添加依赖 2&#xff0c;引入以下依赖&#xff1a; Spring Boot DevTools (可选&#xff0c;但推荐&#xff0c;用于开发时热部署)Lombok&#xff08;可选&#xff0c…

Google Earth Engine(GEE)——在控制台打印出来所选区域的缩略图

结果 函数 ui.Thumbnail(image, params, onClick, style) A fixed-size thumbnail image generated asynchronously from an ee.Image. Arguments: image (Image, optional): The ee.Image from which to generate the thumbnail. Defaults to an empty ee.Image. param…

简单分享下python多态

目录&#xff1a; 一、多态是啥嘞&#xff08;龙生九子各有不同&#xff0c;这就是多态&#xff09; 二、基础的实例 三、多态的优势与应用场景 四、深入理解 一、多态是啥嘞&#xff08;龙生九子各有不同&#xff0c;这就是多态&#xff09; 多态&#xff08;Polymorphism&…

Laravel5+mycat 报错 “Packets out of order”

背景 近期对负责项目&#xff0c;配置了一套 主从复制的 MySQL 集群 使用了中间件 mycat 但测试发现&#xff0c;替换了原来的数据连接后&#xff0c;会出现 Packets out of order 的报错 同时注意到&#xff0c;有的框架代码中竟然也会失效&#xff0c;比如 controller 类中&…

Mac电脑iTerm2 如何设置无限滑动

1.打开iTerm2应用 2.打开偏好设置 3.选中Profiles -> Terminal 4.选择Unlimited scrollback

Linux开发讲课33---线程实现与线程控制步骤简析

线程概述 进程是系统中程序执行和资源分配的基本单位。 每个进程都拥有自己的数据段、代码段和堆栈段&#xff0c;这就造成了进程在进行切换等操作时都需要有比较负责的上下文切换等动作。为了进一步减少处理机的空转时间支持多处理器和减少上下文切换开销&#xff0c;进程在演…

Ollama+OpenWeb UI搭建最简单的大模型交互界面

Open WebUI是一个专为大型语言模型&#xff08;LLMs&#xff09;设计的Web用户界面。这个界面提供了一个直观、响应迅速且易于使用的平台&#xff0c;使用户能够与本地运行的语言模型进行交互&#xff0c;就像与云服务中的模型交互一样。可以非常方便的调试、调用本地模型。你能…

Interpretability 与 Explainability 机器学习

「AI秘籍」系列课程&#xff1a; 人工智能应用数学基础人工智能Python基础人工智能基础核心知识人工智能BI核心知识人工智能CV核心知识 Interpretability 模型和 Explainability 模型之间的区别以及为什么它可能不那么重要 当你第一次深入可解释机器学习领域时&#xff0c;你会…

第十四届蓝桥杯省赛C++B组G题【子串简写】题解(AC)

题目大意 给定字符串 s s s&#xff0c;字符 a , b a, b a,b&#xff0c;问字符串 s s s 中有多少个 a a a 开头 b b b 结尾的子串。 解题思路 20pts 使用二重循环枚举左端点和右端点&#xff0c;判断是否为 a a a 开头 b b b 结尾的字符串&#xff0c;是则答案加一…

MyBatis1(JDBC编程和ORM模型 MyBatis简介 实现增删改查 MyBatis生命周期)

目录 一、JDBC编程和ORM模型 1. JDBC回顾 2. JDBC的弊端 3. ORM模型 Mybatis和hibernate 区别: 4. mybatis 解决了jdbc 的问题 二、MyBatis简介 1. MyBatis快速开始 1.1 导入jar包 1.2 引入 mybatis-config.xml 配置文件 1.3 引入 Mapper 映射文件 1.3 测试 …

构建滑块组件_第 2 部分

本篇我们继续学习滑块组件&#xff0c;让我们把滑块组件构建的更好&#xff1b; ● 首先&#xff0c;我们想要获取组件的三个点&#xff0c;首先在获取到他的HTML元素 const dotContainer document.querySelector(.dots);● 接着遍历 slides 数组&#xff0c;并在动态创建 元…