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

相似度计算

相似度计算是分类和聚类算法的前提
优秀的算法将类间的距离分的非常大,而类内的距离很小

欧几里得距离

欧式距离(Euclidean distance)是最常见、最直观的“直线距离”度量方式。它来源于欧几里得几何,用来计算两个点之间的“最短路径”长度。

数学定义

二维平面:两点 P(x_1, y_1) 与 Q(x_2, y_2) 的欧式距离
在这里插入图片描述
n 维空间:向量 X=(x_1,…,x_n) 与 Y=(y_1,…,y_n)
在这里插入图片描述

应用场景

KNN、K-means:样本相似度度量。
SLAM、机器人:路径规划中的“实际直线”距离。
图像处理:像素级差异度量(如 PSNR)。
推荐系统:把用户/物品嵌入向量后计算距离。

曼哈顿距离

曼哈顿距离(Manhattan Distance),又叫出租车几何(Taxicab Geometry)或 L1 距离,是衡量两点在“网格”状空间里沿轴对齐路径最短距离的一种方式。直观地讲,它模拟了在棋盘格城市(如纽约曼哈顿)里,出租车只能沿着水平和垂直街道行驶,而不能斜穿街区时,从 A 到 B 需要走过的街区总数。

数学定义

对于 n 维空间中的两点
P = (p₁, p₂, …, pₙ)
Q = (q₁, q₂, …, qₙ)
曼哈顿距离为:
D₁(P, Q) = Σᵢ |pᵢ − qᵢ|

应用场景

高维稀疏数据(文本 TF-IDF、推荐系统)
需要轴对齐可解释性的场景(如特征工程、规则系统)
对异常值更鲁棒,计算比欧氏距离更快(无平方、开方)
A* 寻路、网格地图上的启发函数 h(n) 常用曼哈顿距离(若只能四向移动)

切比雪夫距离

切比雪夫距离(Chebyshev distance,也叫 L∞ 距离或棋盘距离)是度量两个向量之间差异的一种“最极端”方式

数学定义

对于 n 维空间中的两个点
P = (p₁, p₂, …, pₙ)
Q = (q₁, q₂, …, qₙ)
其切比雪夫距离
d∞(P, Q) = maxᵢ |pᵢ − qᵢ|

应用场景

棋盘/网格路径规划(A*、Dijkstra 用切比雪夫启发式)。
某些鲁棒优化问题:当系统对“最坏维度误差”敏感时,用 L∞ 作为损失。
数字图像处理中的膨胀、腐蚀算子(最大滤波器)。
聚类或 k-NN 中,当特征量纲差异很大且只关心“有没有维度严重偏离”时,L∞ 可避免被小尺度维度主导。

闵可夫斯基距离

闵可夫斯基距离(Minkowski Distance)是一类通用的距离度量,它把许多我们熟悉的距离公式统一成一个带参数的“家族”。

数学表达

给定两个 n 维向量x = (x₁, x₂, …, xₙ)
y = (y₁, y₂, …, yₙ)
闵可夫斯基距离定义为  
Dₚ(x, y) = (∑ᵢ |xᵢ − yᵢ|ᵖ)^(1/p)  (p ≥ 1)
其中 p 是一个可调的超参数。

家族成员速览

p = 1:曼哈顿距离(L₁)
城市街区式的“只能走格子”路径长度。
p = 2:欧氏距离(L₂)
我们日常直觉里的“直线距离”。
p → ∞:切比雪夫距离(L∞)
只关注差异最大的那一维:maxᵢ |xᵢ − yᵢ|。

直观理解

把 p 想成“对差异的敏感度”:
p 越小,越“平等”地对待每一维的差异;
p 越大,越“放大”最大差异维度的影响。

应用场景

机器学习特征缩放:不同 p 的选择会改变聚类或 k-NN 对特征重要性的权衡。
异常检测:p 较大时,异常值对距离贡献更突出。
图像/信号处理:根据噪声维度特性选择合适的 p,调节对局部或全局差异的敏感度。

马哈拉诺比斯距离

马哈拉诺比斯距离(Mahalanobis Distance)可以一句话概括为:“考虑了变量相关性的加权欧氏距离”。它比普通的欧氏距离更聪明,能纠正不同尺度、不同相关性的变量带来的偏差。

数学定义

给定一个随机向量 X in Rp 和其分布的协方差矩阵 S(正定),与均值向量 mu的马氏距离为:若 S 是单位矩阵(变量独立且方差相等),则退化为欧氏距离。若变量尺度不同或存在相关性, S-1会“修正”这些影响。
在这里插入图片描述
马氏距离里对“尺度差异”的修正,和标准化(比如Z-score标准化)的思路很像,都是为了消除变量单位和数值范围不同带来的影响。
不过马氏距离更进一步:标准化只能处理尺度差异,而马氏距离通过 \mathbf{S}^{-1} 还能同时消除变量间的相关性(比如身高和体重的正相关),这是它比“先标准化再算欧氏距离”更全面的地方。

应用场景

异常检测:识别多维数据中的离群点(如工业传感器数据)。
分类:如二次判别分析(QDA)中,用马氏距离衡量样本到各类的分布差异。
聚类:K-means++初始化时用马氏距离避免“维度灾难”。

皮尔逊相关系数

皮尔逊相关系数(Pearson Correlation Coefficient)是一种用于衡量两个变量之间线性相关程度的统计指标,通常用符号 r 表示。

数学定义

皮尔逊相关系数( r )的数学表达式如下:
对于两个变量 X 和 Y ,其样本皮尔逊相关系数为:
在这里插入图片描述

核心特点

取值范围:介于 -1 到 1 之间。
​r = 1:完全正相关(一个变量随另一个变量同步递增)。​
r = -1:完全负相关(一个变量随另一个变量同步递减)。​
r = 0:无线性相关(但可能存在非线性关系)。​
适用条件:​
两个变量需为连续型数据(如身高、温度等)。​
变量间关系近似线性。​
数据大致符合正态分布。

应用场景

用于衡量两个连续变量之间的线性相关程度,其应用场景广泛,核心是判断变量间是否存在线性关联及关联强度。

余弦相似度

余弦相似度(cosine similarity)是一种衡量两个向量方向相近程度的无量纲指标。它把向量想象成从原点出发的箭头,只关心夹角,不关心长度,因此特别适合那些“频率”“权重”会被整体放缩的场景,比如文本、推荐系统或深度学习中的高维表征。

数学定义

给定两个非零向量 A、B,其余弦相似度定义为
cos(θ)= (A·B) / (‖A‖‖B‖) = Σᵢ AᵢBᵢ / √(ΣᵢAᵢ²) √(ΣᵢBᵢ²)
结果落在 [-1, 1]:
1 表示方向完全一致;
0 表示正交、无相关性;
-1 表示方向完全相反。

应用场景

文本:把文档变成 TF-IDF 或嵌入向量,用余弦相似度做检索、聚类、去重。
推荐:用户或物品的 embedding 向量,计算“兴趣接近度”。
深度学习:对比学习(如 SimCLR)用余弦相似度拉近正样本、推远负样本。
图像/音频:特征向量归一化后,用余弦距离(1-相似度)做匹配。

汉明距离

汉明距离(Hamming distance)是一种衡量两个等长字符串(或更一般的,两个等长符号序列)差异的度量方式。
它定义为:在相同位置上符号不同的总个数。

数学定义

对于两个向量 x, y in Sigman( Sigma 是符号集合),汉明距离为:
在这里插入图片描述

其中 I 是指示函数,条件成立时取1,否则取0。

应用场景

纠错码:如海明码(Hamming code)利用汉明距离检测并纠正单个比特错误。
信息检索:快速比对指纹、哈希值或二进制特征向量。
生物信息学:比较基因序列的相似性。
机器学习:用于分类任务中的k-NN算法(如文本分类中的词袋模型)。

KL散度

KL 散度(Kullback-Leibler divergence,记作 KL(P‖Q))是信息论里用来衡量“两个概率分布 P 与 Q 的差异”的一种非对称度量。它不是数学意义上的距离,而是一种“信息损失”或“惊讶度差”的量化方式——用来实现描述分布的差异

直观含义

把 P 当成真实分布、Q 当成近似分布。从 P 里采样一个事件 x,用 Q 去描述它时需要的“额外比特数”就是 log( P(x)/Q(x) )。对所有 x 取期望,就得到 KL(P‖Q)。
若 Q 与 P 完全一致,额外比特数为 0;
若 Q 在某些 P 高频的区域概率过低,KL 会很大。

数学定义

离散形式

KL(P‖Q)=∑ₓ P(x) log( P(x)/Q(x) )

连续形式

KL(P‖Q)=∫ p(x) log( p(x)/q(x) ) dx
约定:0 log(0/q)=0,p log(p/0)=+∞(Q 的支撑集必须覆盖 P 的支撑集)。
KL(P‖Q) ≠ KL(Q‖P),因此不对称,也不满足三角不等式。

应用场景

变分推断:ELBO 中的 −KL(q‖p) 项,迫使变分分布 q 靠近先验 p;
生成模型:VAE 用 KL(q(z|x)‖p(z)) 做正则;策略优化:RL 里的 TRPO、PPO 用 KL 约束策略更新幅度;
领域自适应:最小化源域与目标域特征分布的 KL;
特征选择 / 聚类:衡量变量分布变化,筛选信息量大的特征。

海林格距离

海林格距离(Hellinger distance)是用来衡量两个概率分布之间“差异”的一种度量,它介于 0 和 1 之间,越接近 0 表示两个分布越相似,越接近 1 表示差异越大。

数学定义

对两个概率密度函数(或概率质量函数)p 与 q,海林格距离定义为:
在这里插入图片描述
离散情形把积分换成求和即可。
更常用的是平方形式
在这里插入图片描述

特点

对概率密度开平方,让差异更“温和”(避免极端值主导)。
1/sqrt(2) 和外面的根号:是为了让距离满足数学上“距离”的性质(比如非负、对称、三角不等式),相当于标准化系数。
最后一项称为 Bhattacharyya 系数,介于 0 与 1。

应用场景

非参数贝叶斯:在 Dirichlet 过程、Pitman–Yor 过程等模型中,Hellinger 距离常被用来度量后验收缩速度。
鲁棒统计:相比 KL 散度,它对模型误设更稳健。
生成模型评估:作为 GAN 或 VAE 中真实分布与生成分布的差异度量之一。
聚类与分类:在概率分布空间上定义“样本”之间的距离,再使用 k-means、核方法等。

编辑距离

编辑距离(Edit Distance)是衡量两个字符串之间“差异度”的一种量化指标,也叫 Levenshtein Distance(列文斯坦距离)。它定义为:将一个字符串转换成另一个字符串所需的最少“编辑操作”次数。

允许的编辑操作

  1. 插入(Insertion):在任意位置插入一个字符。
  2. 删除(Deletion):删除任意一个字符。
  3. 替换(Substitution):将任意一个字符替换成另一个字符。

例子

比较字符串
kitten 和 sitting:kitten → sitten (k → s,替换)
sitten → sittin (e → i,替换)
sittin → sitting (末尾插入 g,插入)共 3 次操作
因此它们的编辑距离为 3。

计算方式

编辑距离通常用 动态规划 计算。设 dp[i][j] 表示字符串 a[0…i-1] 与 b[0…j-1] 的编辑距离,状态转移方程为:

if a[i-1] == b[j-1]:dp[i][j] = dp[i-1][j-1]                # 字符相同,无需操作
else:dp[i][j] = 1 + min(dp[i-1][j],    # 删除 a[i-1]dp[i][j-1],    # 插入 b[j-1]dp[i-1][j-1]   # 替换 a[i-1] 为 b[j-1])

应用场景

拼写纠错(如搜索引擎的“您是不是想找…”)
DNA 序列比对(生物信息学)
版本控制系统(如 Git 的 diff 算法)
语音识别(匹配声学模型输出与词典词条)

http://www.xdnf.cn/news/1154467.html

相关文章:

  • COGNEX康耐视IS5403-01智能相机加Navitar 18R00 LR1010WM52镜头
  • IP协议介绍
  • GPT-4o mini TTS:领先的文本转语音技术
  • VTM 是“H.266/VVC 标准的官方参考软件”视频分析,入门教程,它存在的唯一目的就是“让学术界和工业界在同一把尺子上做实验
  • Docker 在 Ubuntu 系统中的详细操作指南
  • 事务的传播行为,分别在spring和mysql中讲解
  • CentOS 服务器docker pull 拉取失败
  • 相机模型和对极几何
  • MySQL(147)如何进行跨平台迁移?
  • 【LeetCode 热题 100】124. 二叉树中的最大路径和——DFS
  • 后台管理系统登录模块(双token的实现思路)
  • [Python] -项目实战4- 利用Python进行Excel批量处理
  • 将EXCEL或者CSV转换为键值对形式的Markdown文件
  • 【Settlement】P1:整理GH中的矩形GRID角点到EXCEL中
  • 大语言模型调用方式与函数调用
  • 【并集查找 二分图】P6185 [NOI Online #1 提高组] 序列|省选-
  • 【已解决】GitHub SSH 连接失败解决方案:Permission Denied (publickey) 错误修复指南
  • HarmonyOS 网络请求优化实战指南:从0到1写出流畅不卡顿的应用!
  • EXPLAIN:你的SQL性能优化透视镜
  • C/C++数据结构之单向链表
  • 7-大语言模型—指令理解:指令微调训练+模型微调
  • FFmpeg 图片处理
  • 第三章-提示词-中级:进阶技巧与实践指南(12/36)
  • Spring Boot中REST与gRPC并存架构设计与性能优化实践指南
  • 测试学习之——Pytest Day4
  • Cosmos:构建下一代互联网的“区块链互联网
  • 黑马教程Webday6
  • 从零开始的云计算生活——番外5,使用ELK实现对应用日志的监控
  • HTML Style 对象深度解析:从基础到高级应用
  • client-go: k8s选主