一、引言

1.1 距离度量的定义与核心作用

距离度量的本质是定义在数据/参数空间上的函数,用于量化两个对象(向量、样本、概率分布或模型参数)之间的“相似性”或“差异性”——距离越小,对象越相似;距离越大,对象差异越显著。

1.2 距离度量的基本性质(数学公理)

并非所有量化差异的函数都能称为“距离”,严格的距离度量需满足以下4条公理(确保逻辑自洽性):

  1. 非负性:对任意 x,y∈Xx, y \in Xx,yX,有 d(x,y)≥0d(x, y) \geq 0d(x,y)0;且 d(x,y)=0d(x, y) = 0d(x,y)=0 当且仅当 x=yx = yx=y
    通俗理解:两个对象的距离不会是负数;只有对象完全相同时,距离才为0(比如同一个样本、完全相同的参数向量)。
  2. 对称性:对任意 x,y∈Xx, y \in Xx,yX,有 d(x,y)=d(y,x)d(x, y) = d(y, x)d(x,y)=d(y,x)
    通俗理解:A到B的距离,与B到A的距离相等(比如样本甲到样本乙的欧氏距离,和样本乙到样本甲的距离完全一样)。
  3. 三角不等式:对任意 x,y,z∈Xx, y, z \in Xx,y,zX,有 d(x,z)≤d(x,y)+d(y,z)d(x, z) \leq d(x, y) + d(y, z)d(x,z)d(x,y)+d(y,z)
    通俗理解:从A直接到C的距离,不会比经过中间点B的“A到B + B到C”的距离更长(比如平面上三点连线,直接连线最短)。

关键区分:“距离”与“散度”

很多人会混淆“距离”和“散度”(如KL散度),核心差异在于是否满足对称性和三角不等式

  • 距离:必须满足上述所有公理(如欧氏距离、曼哈顿距离);
  • 散度:仅用于量化差异,但不满足全部公理(最常见的是不满足对称性)。
    例:KL散度 DKL(P∥Q)≠DKL(Q∥P)D_{KL}(P \parallel Q) \neq D_{KL}(Q \parallel P)DKL(PQ)=DKL(QP)(用Q逼近P的差异,和用P逼近Q的差异不同),因此KL散度是“散度”而非“距离”。

1.3 本文核心框架

为了让大家清晰理解各类距离的适用场景,本文将按“数学特性+应用场景”的逻辑分类讲解,结构如下:

  1. 基础距离度量:适用于连续型数据,基于向量坐标直接计算(如欧氏、曼哈顿距离);
  2. 标准化距离:解决特征尺度不一致、相关性问题(如马氏距离);
  3. 离散型数据专用距离:针对字符串、稀疏离散特征设计(如汉明、杰卡德距离);
  4. 概率分布间的距离/散度:量化两个分布的差异(如KL散度、沃瑟斯坦距离);
  5. 模型参数相关距离:衡量不同模型参数的差异(如参数欧氏距离、卷积距离);
  6. 选择原则与实践技巧:结合数据类型、任务目标快速筛选合适的距离度量。

整体思路是“从理论到实践”:先讲每个距离的数学原理,再讲特点和适用场景,确保既能理解底层逻辑,又能直接落地使用。

二、基础距离度量(适用于连续型数据)

2.1 欧氏距离(Euclidean Distance)(L2距离)

数学原理

欧氏距离是最直观的距离度量,本质是n维空间中两点两点的直线距离,源于平面几何中的勾股定理。
对于d维空间中的两个向量 x=(x1,x2,...,xd)x = (x_1, x_2, ..., x_d)x=(x1,x2,...,xd)y=(y1,y2,...,yd)y = (y_1, y_2, ..., y_d)y=(y1,y2,...,yd),欧氏距离定义为:
deuclid(x,y)=∑i=1d(xi−yi)2d_{\text{euclid}}(x, y) = \sqrt{\sum_{i=1}^{d} (x_i - y_i)^2}deuclid(x,y)=i=1d(xiyi)2

通俗理解

想象一下3维空间中的两个点:A(1, 2, 3)和B(4, 6, 8)。

  • 先算每个维度的差值:x轴差3(4-1),y轴差4(6-2),z轴差5(8-3);
  • 再平方求和:32+42+52=9+16+25=503^2 + 4^2 + 5^2 = 9 + 16 + 25 = 5032+42+52=9+16+25=50
  • 最后开根号:50≈7.07\sqrt{50} \approx 7.07507.07,这就是A到B的直线距离。
    在这里插入图片描述

因为只能走与x和y平行的直线,所有满足 “x 绝对值 + y 绝对值 = deuclid(x,y)d_{\text{euclid}}(x, y)deuclid(x,y)” 的点会构成一个菱形,旋转坐标系(特征轴)会发生变化。

特点与局限

  • 优点:直观易懂,反映真实物理距离,广泛适用于多数连续型数据场景;
  • 缺点
    1. 对特征尺度敏感(例如“身高(米)”和“体重(千克)”的差异会被尺度放大);
    2. 高维空间中计算成本高,且距离区分度会下降(“维度灾难”)。

适用场景

  • K-Means聚类(基于样本空间分布的聚类);
  • 图像像素点匹配(像素值为连续特征,需衡量颜色/亮度差异);
  • 推荐系统中用户偏好向量的相似度计算(如用户对电影评分的差异)。

2.2 曼哈顿距离(Manhattan Distance)(L1距离)

数学原理

曼哈顿距离又称“城市街区距离”,模拟在网格状街道中从一点到另一点的最短路径(只能沿坐标轴方向移动)。
定义为:
dmanhattan(x,y)=∑i=1d∣xi−yi∣d_{\text{manhattan}}(x, y) = \sum_{i=1}^{d} |x_i - y_i|dmanhattan(x,y)=i=1dxiyi
在这里插入图片描述

通俗理解

以二维平面为例:点A(1, 2)到点B(4, 6)的曼哈顿距离。

  • 只能沿x轴和y轴移动,先从x=1走到x=4(距离3),再从y=2走到y=6(距离4);
  • 总距离:3 + 4 = 7,即 ∣4−1∣+∣6−2∣=3+4=7|4-1| + |6-2| = 3 + 4 = 7∣41∣+∣62∣=3+4=7

生活中最常见的例子是“出租车计价”:在城市道路中,出租车行驶的距离就是曼哈顿距离(而非直线距离)。
在这里插入图片描述
可以走任意直线,所有满足 “x2+y2=dmanhattan(x,y)x^{2} + y^{2} = d_{\text{manhattan}}(x, y)x2+y2=dmanhattan(x,y)” 的点会构成一个圆,旋转坐标系(特征轴)不会有影响。

特点与局限

  • 优点
    1. 计算速度快(无需开平方,仅需绝对值和加法);
    2. 对异常值更稳健(平方操作会放大欧氏距离中的极端差异,而绝对值不会);
  • 缺点:未考虑特征间的相关性,且在高维空间中仍可能受尺度影响。

适用场景

  • 高维稀疏数据(如文本词频向量,多数维度为0,曼哈顿距离计算更高效);
  • 路径规划问题(如机器人在网格地图中的移动距离);
  • 推荐系统中“用户行为差异”度量(如用户点击/浏览次数的差异,避免极端值干扰)。

2.3 切比雪夫距离(Chebyshev Distance)

数学原理

切比雪夫距离关注各维度中差异最大的那个维度,模拟“棋盘上国王的移动距离”(可以沿对角线移动,一步能走任意维度)。
定义为:
dchebyshev(x,y)=max⁡i=1..d∣xi−yi∣ d_{\text{chebyshev}}(x, y) = \max_{i=1..d} |x_i - y_i| dchebyshev(x,y)=i=1..dmaxxiyi

通俗理解

比如两个3维向量:x=(1,5,3),y=(4,7,9)x=(1, 5, 3),y=(4, 7, 9)x=(1,5,3)y=(4,7,9)

  • 各维度差异:∣4−1∣=3,∣7−5∣=2,∣9−3∣=6|4-1|=3,|7-5|=2,|9-3|=6∣41∣=3∣75∣=2∣93∣=6
  • 最大差异是6,因此切比雪夫距离为6。

生活中例子:“多指标产品质量检测”,只要有一项指标不达标(差异最大),就判定不合格,此时切比雪夫距离能直接反映最严重的问题。

特点与局限

  • 优点:直接聚焦最显著的差异维度,适合需关注“瓶颈”的场景;
  • 缺点:忽略其他维度的差异,信息利用率低。

适用场景

  • 棋盘类游戏AI(如国际象棋中国王的最短移动步数);
  • 多约束条件下的决策(如项目进度评估,只要某一环节延迟最严重,就以该环节的延迟时间为总差异);
  • 异常检测(通过最大维度差异快速识别极端异常样本)。

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

数学原理

闵可夫斯基距离是上述三种距离的统一数学形式,通过参数p控制距离的计算方式。
定义为:
dminkowski(x,y)=(∑i=1d∣xi−yi∣p)1p d_{\text{minkowski}}(x, y) = \left( \sum_{i=1}^{d} |x_i - y_i|^p \right)^{\frac{1}{p}} dminkowski(x,y)=(i=1dxiyip)p1

参数p的意义

  • 当p=1时:d=∑∣xi−yi∣d = \sum |x_i - y_i|d=xiyi,即曼哈顿距离;
  • 当p=2时:d=∑(xi−yi)2d = \sqrt{\sum (x_i - y_i)^2}d=(xiyi)2,即欧氏距离;
  • 当p→∞时:d=max⁡∣xi−yi∣d = \max |x_i - y_i|d=maxxiyi,即切比雪夫距离(可通过极限推导证明)。

通俗理解

p值本质是“对差异的敏感程度”:

  • p越小,对小差异越敏感(如p=1时,所有维度差异平等累加);
  • p越大,对大差异越敏感(如p=2时,大差异会被平方放大;p→∞时,只关注最大差异)。

例如:x=(1,2),y=(3,5),z=(6,4)x=(1, 2),y=(3, 5),z=(6, 4)x=(1,2)y=(3,5)z=(6,4)

  • p=1时:d(x,y)=2+3=5,d(x,z)=5+2=7d(x,y)=2+3=5,d(x,z)=5+2=7d(x,y)=2+3=5d(x,z)=5+2=7(y比z离x更近);
  • p=2时:d(x,y)=(4+9)=13≈3.6,d(x,z)=(25+4)=29≈5.4d(x,y)=\sqrt{(4+9)}=\sqrt{13}≈3.6,d(x,z)=\sqrt{(25+4)}=\sqrt{29}≈5.4d(x,y)=(4+9)=133.6d(x,z)=(25+4)=295.4(仍y更近);
  • p=10时:d(x,y)≈max(210,310)(1/10)=3,d(x,z)≈max(510,210)(110)=5d(x,y)≈max(2^{10}, 3^{10})^{(1/10)}=3,d(x,z)≈max(5^{10}, 2^{10})^{(\frac{1}{10})}=5d(x,y)max(210,310)(1/10)=3d(x,z)max(510,210)(101)=5(仍y更近,但差距缩小)。

局限性

闵可夫斯基距离的核心问题是未考虑特征的权重和相关性

  • 例如“年龄(岁)”和“收入(元)”的差异在公式中被平等对待,但实际中收入的100元差异可能远不如年龄的10岁差异重要;
  • 若特征间存在相关性(如“身高”和“体重”),距离计算会重复度量相关信息。

因此,闵可夫斯基距离更适合“特征独立且尺度一致”的数据(如图像像素值、标准化后的用户评分)。

三、标准化距离(解决尺度与相关性问题)

3.1 马氏距离(Mahalanobis Distance)

数学原理

马氏距离是为解决“特征尺度不一致”和“特征间存在相关性”而设计的距离度量。它通过协方差矩阵消除特征间的相关性和量纲影响,本质是“标准化后的欧氏距离”。

对于d维空间中的两个向量 x=(x1,x2,...,xd)x = (x_1, x_2, ..., x_d)x=(x1,x2,...,xd)y=(y1,y2,...,yd)y = (y_1, y_2, ..., y_d)y=(y1,y2,...,yd),设样本集的协方差矩阵为 Σ\SigmaΣ(描述特征间的相关性和离散程度),则马氏距离定义为:
dmahalanobis(x,y)=(x−y)TΣ−1(x−y) d_{\text{mahalanobis}}(x, y) = \sqrt{(x - y)^T \Sigma^{-1} (x - y)} dmahalanobis(x,y)=(xy)TΣ1(xy)

通俗理解

场景1:消除尺度影响

假设我们要计算两个苹果的“大小差异”,特征包括“直径(厘米)”和“重量(克)”。

  • 苹果A:直径8cm,重量200g;
  • 苹果B:直径10cm,重量250g;
  • 直接用欧氏距离:(10−8)2+(250−200)2=4+2500≈50.04\sqrt{(10-8)^2 + (250-200)^2} = \sqrt{4 + 2500} \approx 50.04(108)2+(250200)2=4+250050.04(重量的尺度远大于直径,导致距离被重量主导)。

马氏距离会先通过协方差矩阵“标准化”特征:

  • 假设直径的标准差是2cm,重量的标准差是50g(即协方差矩阵对角线为 [22,502][2^2, 50^2][22,502],简化为无相关性);
  • 标准化后差异:直径差2cm→1个标准差,重量差50g→1个标准差;
  • 马氏距离:12+12=2≈1.41\sqrt{1^2 + 1^2} = \sqrt{2} \approx 1.4112+12=21.41(公平反映两个特征的差异)。
场景2:消除相关性

假设特征是“身高(cm)”和“脚长(cm)”,两者高度相关(高的人脚通常也大)。

  • 样本C:身高170cm,脚长25cm;
  • 样本D:身高180cm,脚长26cm;
  • 欧氏距离会同时计算身高和脚长的差异,但两者的差异其实是“相关的”(身高增加10cm伴随脚长增加1cm是正常的)。

马氏距离通过协方差矩阵的逆矩阵“抵消相关性”:

  • 相关特征的差异会被“打折”,只有“偏离正常关联”的差异才会被放大;
  • 例如,若样本E是身高170cm(正常),脚长30cm(远大于正常关联),马氏距离会显著大于样本C和D的距离(捕捉到“异常关联”)。

特点与计算细节

  • 优点
    1. 与特征的量纲无关(无论用cm还是m,结果一致);
    2. 自动消除特征间的相关性,避免重复计算;
    3. 对“异常值”敏感(能有效识别偏离整体分布的样本)。
  • 缺点
    1. 需要已知样本集的协方差矩阵(对小样本集可能不准确);
    2. 计算成本高(涉及矩阵求逆,高维数据中更明显)。

适用场景

  • 金融风险评估(特征如“收入”“负债”“资产”,量纲和相关性差异大);
  • 异常检测(如信用卡欺诈识别,通过马氏距离发现“行为特征组合异常”的交易);
  • 生物特征识别(如人脸特征,不同维度特征存在强相关性)。

3.2 标准化欧氏距离(Standardized Euclidean Distance)

数学原理

标准化欧氏距离是马氏距离的“简化版”,仅解决“尺度不一致”问题,不处理特征相关性。它先对每个特征进行标准化(减去均值、除以标准差),再计算欧氏距离。

定义为:
dstandardized(x,y)=∑i=1d(xi−yiσi)2 d_{\text{standardized}}(x, y) = \sqrt{\sum_{i=1}^{d} \left( \frac{x_i - y_i}{\sigma_i} \right)^2} dstandardized(x,y)=i=1d(σixiyi)2
其中 σi\sigma_iσi 是第i个特征的标准差(衡量该特征的离散程度)。

通俗理解

以“学生成绩”为例:

  • 特征包括“数学分数(满分150)”和“英语分数(满分100)”;
  • 学生A:数学120,英语80;
  • 学生B:数学90,英语90;
  • 直接算欧氏距离:(90−120)2+(90−80)2=900+100≈31.6\sqrt{(90-120)^2 + (90-80)^2} = \sqrt{900 + 100} \approx 31.6(90120)2+(9080)2=900+10031.6(数学分数的尺度更大,主导距离)。

标准化后:

  • 假设数学标准差是30,英语标准差是10;
  • 数学差异:(90−120)/30=−1(90-120)/30 = -1(90120)/30=1(低于均值1个标准差);
  • 英语差异:(90−80)/10=1(90-80)/10 = 1(9080)/10=1(高于均值1个标准差);
  • 标准化欧氏距离:(−1)2+12=2≈1.41\sqrt{(-1)^2 + 1^2} = \sqrt{2} \approx 1.41(1)2+12=21.41(公平比较两个科目差异)。

与马氏距离的核心区别

对比项标准化欧氏距离马氏距离
处理问题仅解决尺度不一致解决尺度不一致+特征相关性
计算复杂度低(仅需标准差)高(需协方差矩阵及逆矩阵)
适用场景特征独立或弱相关的数据特征强相关的数据

适用场景

  • 多指标评价(如产品评分,不同指标满分不同);
  • 用户画像匹配(特征如“活跃度”“消费额”,量纲差异大但相关性弱);
  • 聚类前的预处理(先标准化特征,再用欧氏距离聚类,避免尺度影响)。

3.3 总结:何时选择标准化距离?

当数据满足以下任一条件时,优先使用标准化距离(而非基础距离):

  1. 特征量纲不同(如厘米、千克、元等混合单位);
  2. 特征尺度差异大(如一个特征取值范围是0-1,另一个是0-1000);
  3. 特征间存在明显相关性(如“面积”和“体积”,“工作年限”和“收入”)。

实际应用中,标准化欧氏距离因计算简单,常用于特征相关性弱的场景;马氏距离则用于特征强相关的场景(如金融、生物数据),但需注意样本量是否足够支撑协方差矩阵的准确估计。

四、离散型数据专用距离

4.1 汉明距离(Hamming Distance)

数学原理

汉明距离用于衡量两个等长离散序列(如字符串、二进制向量)中对应位置元素不同的数量,仅关注“是否不同”,不考虑差异的大小。

对于两个长度为d的离散序列 x=(x1,x2,...,xd)x = (x_1, x_2, ..., x_d)x=(x1,x2,...,xd)y=(y1,y2,...,yd)y = (y_1, y_2, ..., y_d)y=(y1,y2,...,yd),汉明距离定义为:
dhamming(x,y)=∑i=1dI(xi≠yi) d_{\text{hamming}}(x, y) = \sum_{i=1}^{d} \mathbb{I}(x_i \neq y_i) dhamming(x,y)=i=1dI(xi=yi)
其中 I(⋅)\mathbb{I}(\cdot)I() 是指示函数:当括号内条件为真时取1,否则取0。

通俗理解

例子1:字符串匹配

比较两个单词“kitten”和“sitting”:

  • 位置1:k vs s → 不同(+1)
  • 位置2:i vs i → 相同(+0)
  • 位置3:t vs t → 相同(+0)
  • 位置4:t vs i → 不同(+1)
  • 位置5:e vs n → 不同(+1)
  • 位置6:n vs g → 不同(+1)
  • 总距离:4(即需要修改4个字符才能将“kitten”变成“sitting”)
例子2:二进制数据

比较两个二进制向量(如用户标签:1表示感兴趣,0表示不感兴趣):

  • x = [1, 0, 1, 1, 0]
  • y = [1, 1, 1, 0, 0]
  • 差异位置:第2位(0≠1)、第4位(1≠0)→ 汉明距离=2

生活中最常见的场景是“二维码纠错”:二维码扫描时,即使部分图案被遮挡(与原始序列存在差异),只要汉明距离在纠错范围内,就能正确识别。

特点与局限

  • 优点:计算简单(仅需逐位比较),适合离散且无顺序意义的特征(如二进制、分类标签);
  • 缺点
    1. 仅适用于等长序列(长度不同时无法直接计算);
    2. 不区分差异的“严重程度”(如字符串中替换一个字母和替换一个标点的权重相同)。

适用场景

  • 字符串相似度匹配(如拼写检查、DNA序列比对);
  • 二进制数据传输中的错误检测(如校验码验证);
  • 推荐系统中的用户标签差异(如用户对电影类型的偏好标签)。

4.2 杰卡德距离(Jaccard Distance)

数学原理

杰卡德距离基于“集合论”,用于衡量两个集合的差异,核心是关注“共同存在的元素”占比,忽略“都不存在的元素”(尤其适合稀疏数据)。

对于两个集合A和B,杰卡德距离定义为:
djaccard(A,B)=1−Jaccard相似系数=1−∣A∩B∣∣A∪B∣ d_{\text{jaccard}}(A, B) = 1 - \text{Jaccard相似系数} = 1 - \frac{|A \cap B|}{|A \cup B|} djaccard(A,B)=1Jaccard相似系数=1ABAB
其中 ∣A∩B∣|A \cap B|AB 是两个集合的交集大小(共同元素数量),∣A∪B∣|A \cup B|AB 是并集大小(所有独特元素的总数量)。

通俗理解

例子1:用户兴趣差异
  • 用户A喜欢的电影:{《流浪地球》, 《满江红》, 《封神》}
  • 用户B喜欢的电影:{《满江红》, 《孤注一掷》, 《封神》}
  • 交集(共同喜欢):{《满江红》, 《封神》} → 大小=2
  • 并集(所有喜欢的电影):{《流浪地球》, 《满江红》, 《封神》, 《孤注一掷》} → 大小=4
  • 杰卡德相似系数 =24=0.5= \frac{2}{4} = 0.5=42=0.5 → 杰卡德距离 = 1−0.5=0.51 - 0.5 = 0.510.5=0.5
例子2:文本关键词匹配
  • 文档X的关键词:{机器学习, 算法, 数据}
  • 文档Y的关键词:{深度学习, 算法, 模型}
  • 交集:{算法} → 大小=1
  • 并集:{机器学习, 算法, 数据, 深度学习, 模型} → 大小=5
  • 杰卡德距离 =1−15=0.8= 1 - \frac{1}{5} = 0.8=151=0.8(差异较大,符合“机器学习”与“深度学习”的主题差异)

与汉明距离的核心区别

对比项汉明距离杰卡德距离
数据形式等长序列(关注每个位置是否相同)集合(关注元素是否共同存在)
对零值的处理计入距离(如两个0会被视为“相同”)忽略零值(仅关注非零元素)
适用场景二进制编码、固定长度字符串稀疏特征、集合类数据

例如:比较两个用户对100部电影的“看过/没看过”标签(1表示看过,0表示没看过):

  • 汉明距离会计算100个位置的差异(包括两人都没看过的电影);
  • 杰卡德距离只关注“至少有一人看过的电影”,忽略两人都没看过的(更符合“兴趣差异”的实际意义)。

特点与局限

  • 优点
    1. 适合稀疏数据(如文本、用户行为,多数元素为0);
    2. 避免“共同缺失”对距离的干扰(如两人都没看过的电影不应拉近他们的距离);
  • 缺点
    1. 忽略元素的频率(如用户A看过某电影3次,用户B看过1次,杰卡德距离视为“相同”);
    2. 当两个集合都为空时无意义(此时交集和并集均为空,分母为0)。

适用场景

  • 文本相似度计算(基于关键词集合,忽略词频);
  • 社交网络好友推荐(如共同好友占比越高,距离越近);
  • 电商商品关联分析(如同时被购买的商品集合差异)。

4.3 余弦距离(Cosine Distance)

数学原理

余弦距离源于“余弦相似度”,衡量两个向量在方向上的差异(而非长度),本质是向量夹角的余弦值的补数

对于d维向量 xxxyyy,余弦距离定义为:
dcosine(x,y)=1−cos⁡θ=1−x⋅y∥x∥2⋅∥y∥2 d_{\text{cosine}}(x, y) = 1 - \cos\theta = 1 - \frac{x \cdot y}{\|x\|_2 \cdot \|y\|_2} dcosine(x,y)=1cosθ=1x2y2xy
其中 x⋅yx \cdot yxy 是向量的点积,∥x∥2\|x\|_2x2 是x的L2范数(欧氏长度),θ\thetaθ 是两个向量的夹角。

通俗理解

例子:文本向量的方向差异
  • 文档A:“机器学习 算法 算法 数据” → 向量表示为 [1,2,1][1, 2, 1][1,2,1](对应“机器学习”“算法”“数据”的词频)
  • 文档B:“机器学习 算法 数据 数据” → 向量表示为 [1,1,2][1, 1, 2][1,1,2]
  • 点积:1×1+2×1+1×2=1+2+2=51×1 + 2×1 + 1×2 = 1 + 2 + 2 = 51×1+2×1+1×2=1+2+2=5
  • 范数:∥A∥=(12+22+12)=6,∥B∥=(12+12+22)=6\|A\| = \sqrt{(1²+2²+1²)}=\sqrt{6},\|B\| = \sqrt{(1²+1²+2²)}=\sqrt{6}A=(12+22+12)=6B=(12+12+22)=6
  • 余弦相似度:5/(6×6)=5/6≈0.835/(\sqrt{6}×\sqrt{6}) = 5/6 ≈ 0.835/(6×6)=5/60.83 → 余弦距离 = 1 - 0.83 = 0.17(方向接近,差异小)

直观来说:如果两个文档的关键词比例相似(即使总词数不同),它们的余弦距离会很小。例如“算法”出现2次、“数据”出现1次,与“算法”出现4次、“数据”出现2次的文档,方向完全一致,余弦距离为0。

为什么适合高维稀疏数据?

在高维稀疏场景(如文本词向量,维度是词汇表大小,多数维度为0):

  • 欧氏距离会被“向量长度”(总词数)主导,而余弦距离忽略长度,只关注“词频比例”;
  • 例如一篇长文和一篇短文,只要主题词比例相同,余弦距离就会很小(符合“主题相似”的直觉)。

特点与局限

  • 优点
    1. 对向量长度不敏感(适合比较“比例相似性”);
    2. 高维稀疏数据中表现稳定(避免维度灾难影响);
  • 缺点
    1. 忽略向量的幅值信息(如“喜欢程度”的强弱差异);
    2. 当向量全为0时无意义。

适用场景

  • 文本分类与聚类(基于TF-IDF向量,关注主题相似性);
  • 图像检索(基于特征向量,如CNN提取的图像特征,关注内容相似性);
  • 用户偏好匹配(如音乐推荐,关注喜欢的音乐风格比例而非听歌总数)。

4.4 总结:离散型数据距离的选择指南

  • 若数据是等长离散序列(如二进制编码、固定长度字符串),优先用汉明距离
  • 若数据是稀疏集合(如关键词、用户行为,多数元素为0),优先用杰卡德距离
  • 若数据是高维向量且关注方向相似性(如文本词频、特征向量),优先用余弦距离

核心原则:离散型数据的距离需匹配“数据的结构特性”——序列关注位置差异,集合关注元素重叠,向量关注方向比例。

五、概率分布间的距离(度量分布差异)

5.1 KL散度(Kullback-Leibler Divergence,相对熵)

数学原理

KL散度用于量化两个概率分布之间的“不相似程度”,衡量用一个分布(模型预测分布Q)去逼近另一个分布(真实分布P)时的“信息损失”。

对于离散概率分布P和Q(取值空间相同),KL散度定义为:
DKL(P∥Q)=∑xP(x)log⁡P(x)Q(x) D_{KL}(P \parallel Q) = \sum_{x} P(x) \log \frac{P(x)}{Q(x)} DKL(PQ)=xP(x)logQ(x)P(x)

对于连续概率分布,定义为:
DKL(P∥Q)=∫xP(x)log⁡P(x)Q(x)dx D_{KL}(P \parallel Q) = \int_{x} P(x) \log \frac{P(x)}{Q(x)} dx DKL(PQ)=xP(x)logQ(x)P(x)dx

通俗理解

例子:硬币投掷的分布差异

假设真实分布P是“公平硬币”:P(正面)=0.5,P(反面)=0.5;
模型预测分布Q是“biased硬币”:Q(正面)=0.8,Q(反面)=0.2。

计算KL散度:
DKL(P∥Q)=0.5log⁡0.50.8+0.5log⁡0.50.2=0.5log⁡(0.625)+0.5log⁡(2.5)≈0.5×(−0.477)+0.5×(0.916)≈0.219 \begin{align*} D_{KL}(P \parallel Q) &= 0.5 \log \frac{0.5}{0.8} + 0.5 \log \frac{0.5}{0.2} \\ &= 0.5 \log(0.625) + 0.5 \log(2.5) \\ &\approx 0.5×(-0.477) + 0.5×(0.916) \\ &\approx 0.219 \end{align*} DKL(PQ)=0.5log0.80.5+0.5log0.20.5=0.5log(0.625)+0.5log(2.5)0.5×(0.477)+0.5×(0.916)0.219

含义:用Q(0.8正面)逼近P(0.5正面)时,平均每一次试验会损失约0.219单位的信息(信息损失越大,分布差异越大)。

关键特性
  • 非负性DKL(P∥Q)≥0D_{KL}(P \parallel Q) \geq 0DKL(PQ)0,当且仅当P=Q时取等号(完全匹配时无信息损失);
  • 非对称性DKL(P∥Q)≠DKL(Q∥P)D_{KL}(P \parallel Q) \neq D_{KL}(Q \parallel P)DKL(PQ)=DKL(QP)(用Q逼近P的损失,≠用P逼近Q的损失)。
    例如上述硬币例子中,DKL(Q∥P)≈0.322D_{KL}(Q \parallel P) \approx 0.322DKL(QP)0.322,与之前的0.219不相等,因此KL散度是“散度”而非“距离”。

适用场景

  • 模型训练的损失函数(如逻辑回归、神经网络分类,通过最小化KL散度让预测分布逼近真实分布);
  • 生成模型评估(如判断GAN生成的图像分布是否接近真实图像分布);
  • 特征选择(通过KL散度衡量特征与标签分布的相关性,筛选信息量大的特征)。

5.2 交叉熵(Cross-Entropy)

数学原理

交叉熵是KL散度的“简化形式”,描述用分布Q表示分布P时所需的平均编码长度,与KL散度的关系为:
H(P,Q)=H(P)+DKL(P∥Q) H(P, Q) = H(P) + D_{KL}(P \parallel Q) H(P,Q)=H(P)+DKL(PQ)
其中 H(P)=−∑P(x)log⁡P(x)H(P) = -\sum P(x) \log P(x)H(P)=P(x)logP(x) 是P的熵(真实分布的固有不确定性)。

因此交叉熵的定义可直接写为:
H(P,Q)=−∑xP(x)log⁡Q(x) H(P, Q) = -\sum_{x} P(x) \log Q(x) H(P,Q)=xP(x)logQ(x)(离散)
H(P,Q)=−∫xP(x)log⁡Q(x)dx H(P, Q) = -\int_{x} P(x) \log Q(x) dx H(P,Q)=xP(x)logQ(x)dx(连续)

通俗理解

与KL散度的关系

在模型训练中,真实分布P是固定的(如样本标签的分布),因此熵H§是常数。此时:
最小化交叉熵等价于最小化KL散度(因为常数不影响优化方向)。

例子:分类任务中的交叉熵

假设三分类任务的真实标签分布P是“独热向量”:P(猫)=1,P(狗)=0,P(鸟)=0;
模型预测分布Q为:Q(猫)=0.7,Q(狗)=0.2,Q(鸟)=0.1。

交叉熵计算:
H(P,Q)=−[1×log⁡0.7+0×log⁡0.2+0×log⁡0.1]≈−(−0.357)=0.357 H(P, Q) = -[1×\log 0.7 + 0×\log 0.2 + 0×\log 0.1] \approx -(-0.357) = 0.357 H(P,Q)=[1×log0.7+0×log0.2+0×log0.1](0.357)=0.357

若模型预测更准确(Q(猫)=0.9),交叉熵会更小(≈0.105),符合“预测越准,损失越小”的直觉。

为什么分类任务常用交叉熵?

  • 计算更简单(无需计算真实分布的熵);
  • 梯度特性更好(相比均方误差,在神经网络中能避免梯度消失问题)。

适用场景

  • 分类任务的损失函数(如softmax交叉熵,广泛用于图像分类、文本分类);
  • 语言模型训练(衡量模型预测的词分布与真实词分布的差异)。

5.3 詹森-香农散度(Jensen-Shannon Divergence,JSD)

数学原理

JSD是KL散度的“对称化改进版本”,解决了KL散度非对称的问题,满足距离的对称性。

定义为:
JSD(P∥Q)=12DKL(P∥M)+12DKL(Q∥M) JSD(P \parallel Q) = \frac{1}{2} D_{KL}(P \parallel M) + \frac{1}{2} D_{KL}(Q \parallel M) JSD(PQ)=21DKL(PM)+21DKL(QM)
其中 M=12(P+Q)M = \frac{1}{2}(P + Q)M=21(P+Q) 是P和Q的平均分布。

通俗理解

对称性验证

用之前的硬币例子:

  • P(正面)=0.5,Q(正面)=0.8,计算得 DKL(P∥Q)≈0.219D_{KL}(P \parallel Q) \approx 0.219DKL(PQ)0.219DKL(Q∥P)≈0.322D_{KL}(Q \parallel P) \approx 0.322DKL(QP)0.322
  • 平均分布M(正面)=0.65,M(反面)=0.35;
  • JSD = 0.5×DKL(P∥M)D_{KL}(P \parallel M)DKL(PM) + 0.5×DKL(Q∥M)≈0.5×0.023+0.5×0.023=0.023D_{KL}(Q \parallel M) \approx 0.5×0.023 + 0.5×0.023 = 0.023DKL(QM)0.5×0.023+0.5×0.023=0.023(对称且值更小)。
优势
  • 对称性:JSD(P∥Q)=JSD(Q∥P)JSD(P \parallel Q) = JSD(Q \parallel P)JSD(PQ)=JSD(QP)
  • 有界性:0≤JSD(P∥Q)≤log⁡20 \leq JSD(P \parallel Q) \leq \log 20JSD(PQ)log2(KL散度可能无穷大),数值更稳定。

适用场景

  • 分布聚类(如将相似的用户行为分布聚为一类,需对称度量);
  • 文本主题差异度量(比较两个文档的主题分布,对称性更合理);
  • GAN训练的改进损失(避免KL散度在分布不重叠时的梯度问题)。

5.4 沃瑟斯坦距离(Wasserstein Distance,推土机距离)

数学原理

沃瑟斯坦距离从“最优运输”角度衡量分布差异,描述将分布P“搬运”成分布Q所需的最小成本(类似用推土机推土的最小油耗)。

对于一维分布P和Q,简化定义为:
W(P,Q)=inf⁡γ∈Γ(P,Q)∫x,y∣x−y∣γ(x,y)dxdy W(P, Q) = \inf_{\gamma \in \Gamma(P, Q)} \int_{x, y} |x - y| \gamma(x, y) dx dy W(P,Q)=γΓ(P,Q)infx,yxyγ(x,y)dxdy
其中 Γ(P,Q)\Gamma(P, Q)Γ(P,Q) 是所有P到Q的运输计划集合,γ(x,y)\gamma(x, y)γ(x,y) 表示从x搬运到y的“土量”。

通俗理解

例子:两个高斯分布的差异
  • P是均值1、方差1的高斯分布(图像是左边的山峰);

  • Q是均值3、方差1的高斯分布(图像是右边的山峰)。

  • KL散度:若两分布不重叠(距离远),KL散度会很大甚至无穷;

  • 沃瑟斯坦距离:仅关注“中心距离”,此处W≈2(两均值的差),更直观反映“位置差异”。

核心优势
  • 对分布“是否重叠”不敏感(KL散度在分布无重叠时会爆炸);
  • 能反映分布的“结构差异”(如位置、形状的连续变化)。

适用场景

  • GAN训练(WGAN用沃瑟斯坦距离解决传统GAN的模式崩溃问题);
  • 不平衡分布的差异度量(如正常样本与异常样本的分布比较);
  • 生成模型的渐进式训练(衡量分布随训练步数的连续变化)。

5.5 总结:分布距离的选择策略

距离类型核心特点适用场景
KL散度非对称,信息损失角度模型训练(预测分布逼近真实分布)
交叉熵等价于KL散度(固定P时),计算简单分类任务损失函数
詹森-香农散度对称,有界,数值稳定分布聚类、对称场景的差异度量
沃瑟斯坦距离关注运输成本,对重叠不敏感GAN训练、不平衡/非重叠分布的差异度量

选择时需明确:是否需要对称性?分布是否可能不重叠?是否关注连续变化?这些问题直接决定哪种距离更合适。

六、模型参数相关距离(量化模型差异)

6.1 参数欧氏距离(Parameter Euclidean Distance)

数学原理

模型参数本质上是高维向量(如神经网络的权重矩阵可展平为向量),参数欧氏距离直接衡量两个模型参数向量在高维空间中的“直线距离”,定义与基础欧氏距离一致:

对于两个模型的参数向量 θ1=(θ11,θ12,...,θ1d)\theta_1 = (\theta_{11}, \theta_{12}, ..., \theta_{1d})θ1=(θ11,θ12,...,θ1d)θ2=(θ21,θ22,...,θ2d)\theta_2 = (\theta_{21}, \theta_{22}, ..., \theta_{2d})θ2=(θ21,θ22,...,θ2d)(d为参数总维度),参数欧氏距离为:
dparam-euclid(θ1,θ2)=∑i=1d(θ1i−θ2i)2 d_{\text{param-euclid}}(\theta_1, \theta_2) = \sqrt{\sum_{i=1}^{d} (\theta_{1i} - \theta_{2i})^2} dparam-euclid(θ1,θ2)=i=1d(θ1iθ2i)2

通俗理解

例子:简单线性模型的参数差异
  • 模型A:y=2x+3y = 2x + 3y=2x+3(参数向量 θA=[2,3]\theta_A = [2, 3]θA=[2,3]

  • 模型B:y=2.1x+2.9y = 2.1x + 2.9y=2.1x+2.9(参数向量 θB=[2.1,2.9]\theta_B = [2.1, 2.9]θB=[2.1,2.9]

  • 欧氏距离:(2.1−2)2+(2.9−3)2=0.01+0.01=0.02≈0.14\sqrt{(2.1-2)^2 + (2.9-3)^2} = \sqrt{0.01 + 0.01} = \sqrt{0.02} \approx 0.14(2.12)2+(2.93)2=0.01+0.01=0.020.14(差异小,模型行为接近)

  • 模型C:y=−1x+5y = -1x + 5y=1x+5(参数向量 θC=[−1,5]\theta_C = [-1, 5]θC=[1,5]

  • 与模型A的距离:(−1−2)2+(5−3)2=9+4≈3.61\sqrt{(-1-2)^2 + (5-3)^2} = \sqrt{9 + 4} \approx 3.61(12)2+(53)2=9+43.61(差异大,模型行为迥异)

直观来说:参数欧氏距离越小,两个模型的“函数表达式”越接近,对相同输入的预测结果也越相似。

特点与局限

  • 优点:计算直接(可通过参数向量直接计算),能反映参数整体差异;
  • 缺点
    1. 对参数尺度敏感(如神经网络中不同层的权重量级可能差异很大,导致距离被大尺度参数主导);
    2. 忽略参数的“功能相关性”(例如两个模型通过不同参数组合实现了相同功能,距离可能很大但效果一致)。

适用场景

  • 模型训练稳定性评估(如同一模型在不同初始化下的参数距离,距离越小说明训练越稳定);
  • 迁移学习中的权重差异分析(如预训练模型与微调后模型的参数距离,衡量微调幅度);
  • 集成学习中的模型多样性判断(集成模型的参数距离需适中,过近则冗余,过远则可能冲突)。

6.2 参数余弦距离(Parameter Cosine Distance)

数学原理

参数余弦距离衡量两个参数向量的“方向相似性”,忽略参数的整体缩放(如一个模型参数是另一个的2倍,方向相同则距离为0),定义为:
dparam-cosine(θ1,θ2)=1−θ1⋅θ2∥θ1∥2⋅∥θ2∥2 d_{\text{param-cosine}}(\theta_1, \theta_2) = 1 - \frac{\theta_1 \cdot \theta_2}{\|\theta_1\|_2 \cdot \|\theta_2\|_2} dparam-cosine(θ1,θ2)=1θ12θ22θ1θ2
其中 θ1⋅θ2\theta_1 \cdot \theta_2θ1θ2 是参数向量的点积,∥θ∥2\|\theta\|_2θ2 是参数向量的L2范数。

通俗理解

例子:参数缩放的影响
  • 模型D:参数 θD=[1,2,3]\theta_D = [1, 2, 3]θD=[1,2,3]
  • 模型E:参数 θE=[2,4,6]\theta_E = [2, 4, 6]θE=[2,4,6](是D的2倍缩放)
  • 余弦相似度:(1×2+2×4+3×6)/(14×56)=(2+8+18)/(3.74×7.48)=28/27.97≈1(1×2 + 2×4 + 3×6) / (\sqrt{14}×\sqrt{56}) = (2 + 8 + 18)/(3.74×7.48) = 28/27.97 ≈ 1(1×2+2×4+3×6)/(14×56)=(2+8+18)/(3.74×7.48)=28/27.971
  • 余弦距离:1 - 1 = 0(方向完全一致,距离为0)

这意味着:即使参数幅值不同,只要各参数的比例关系一致,模型的“功能倾向”可能相似(如对输入特征的加权比例相同)。

与参数欧氏距离的区别

对比项参数欧氏距离参数余弦距离
关注重点参数幅值的绝对差异参数方向的相对差异
对缩放的敏感性敏感(缩放会增大距离)不敏感(缩放不改变距离)
适用场景需严格比较参数数值的场景关注参数比例/功能倾向的场景

适用场景

  • 神经网络层间权重分析(如不同层的权重方向是否一致,判断特征提取倾向);
  • 模型压缩效果评估(如量化后的模型与原模型的参数方向差异,判断压缩是否保留功能);
  • 迁移学习中“领域适配性”判断(如预训练模型与目标任务模型的参数方向越相似,迁移效果可能越好)。

6.3 参数KL散度(Parameter KL Divergence)

数学原理

当模型参数服从某种概率分布(如贝叶斯神经网络中参数的后验分布),可通过KL散度衡量两个参数分布的差异:

设参数 θ1∼P\theta_1 \sim Pθ1Pθ2∼Q\theta_2 \sim Qθ2Q,则参数KL散度为:
DKL(P∥Q)=∫P(θ)log⁡P(θ)Q(θ)dθ D_{KL}(P \parallel Q) = \int P(\theta) \log \frac{P(\theta)}{Q(\theta)} d\theta DKL(PQ)=P(θ)logQ(θ)P(θ)dθ

通俗理解

贝叶斯神经网络中,每个参数不是固定值,而是一个分布(如高斯分布)。例如:

  • 模型F的权重分布:均值1,方差0.1(集中在1附近)
  • 模型G的权重分布:均值3,方差0.1(集中在3附近)
  • 两者的KL散度较大(分布中心差异大),说明参数不确定性的“核心区域”差异显著。

若模型G的均值为1,方差为0.5(更分散),则KL散度会较小(中心一致,仅分散程度不同)。

特点与适用场景

  • 优点:能捕捉参数的不确定性差异(不仅是单点值,还包括分布范围);
  • 缺点:仅适用于参数服从分布的场景(如贝叶斯模型),计算复杂(需积分或采样估计)。

适用场景:

  • 贝叶斯模型的比较(如不同先验假设下的参数后验分布差异);
  • 模型不确定性评估(如不同数据集训练的模型,参数分布的KL散度越大,不确定性差异越显著)。

6.4 总结:模型参数距离的选择逻辑

选择参数距离时需明确两个核心问题:

  1. 参数的形式:是固定值(如传统神经网络)还是分布(如贝叶斯模型)?

    • 固定值→优先参数欧氏距离或余弦距离;
    • 分布→优先参数KL散度。
  2. 关注的差异维度

    • 若需衡量参数数值的绝对差异(如训练稳定性)→ 选参数欧氏距离;
    • 若需衡量参数比例/功能倾向的相似性(如模型功能一致性)→ 选参数余弦距离;
    • 若需衡量参数不确定性的差异(如贝叶斯模型)→ 选参数KL散度。

本质上,参数距离是模型“行为差异”的间接反映——距离越小,模型对相同输入的预测结果通常越接近,但需注意:参数距离为0≠模型功能完全一致(存在“参数等价性”,如神经网络的权重置换不变性)。

七、距离度量的选择原则与实践技巧

选择合适的距离度量是机器学习任务成功的关键前提——错误的距离可能导致模型失效(如用欧氏距离处理高维稀疏文本,结果会被噪声主导)。本节从数据特性、任务目标出发,总结可落地的选择框架和避坑指南。

7.1 核心原则1:匹配数据类型

距离度量的首要选择依据是数据的底层类型,不同类型的数据有其天然适配的距离计算逻辑:

数据类型典型特征推荐距离不推荐距离
连续型数据特征为实数(如身高、温度、像素值)欧氏距离、曼哈顿距离、马氏距离汉明距离、杰卡德距离
离散型序列等长离散值(如二进制编码、字符串)汉明距离欧氏距离(忽略离散特性)
离散型集合稀疏无顺序元素(如关键词、用户行为)杰卡德距离、余弦距离曼哈顿距离(对零值敏感)
概率分布数据满足分布特性(如分类预测概率、图像分布)KL散度、交叉熵、沃瑟斯坦距离欧氏距离(不满足分布特性)
模型参数向量高维权重/偏置(如神经网络参数)参数欧氏距离、参数余弦距离杰卡德距离(参数非集合)

实例说明

  • 场景1:用户身高(170cm)与体重(60kg) → 连续型且量纲不同 → 用马氏距离(消除kg和cm的尺度差异);
  • 场景2:用户对10部电影的“看过/没看过”标签 → 离散集合(0-1稀疏向量) → 用杰卡德距离(忽略“都没看过”的电影);
  • 场景3:GAN生成的图像与真实图像的像素分布 → 概率分布 → 用沃瑟斯坦距离(对分布不重叠更稳健)。

7.2 核心原则2:对齐任务目标

不同机器学习任务对“相似性”的定义不同,距离度量需与任务目标对齐:

聚类任务:关注“群体聚集性”

目标是将“内在相似”的样本聚为一类,优先选择能反映整体分布结构的距离:

  • 若特征尺度一致且独立(如标准化后的用户评分)→ 欧氏距离(K-Means默认);
  • 若特征有相关性(如“收入”与“消费”)→ 马氏距离(消除相关性干扰);
  • 若高维稀疏(如文本TF-IDF向量)→ 余弦距离(避免维度灾难)。

反例:用汉明距离聚类连续型数据(如房价特征),会因忽略数值大小差异导致聚类混乱。

分类任务:关注“类别区分度”

目标是通过距离判断样本所属类别,优先选择能放大类别差异的距离:

  • KNN分类(低维连续特征)→ 曼哈顿距离(抗异常值,计算快);
  • 文本分类(高维稀疏特征)→ 余弦距离(聚焦主题相似性);
  • 异常检测(偏离正常分布的样本)→ 马氏距离(对“异常组合特征”敏感)。

实例:信用卡欺诈检测中,正常用户的“消费金额”与“还款周期”有强相关性,欺诈用户会打破这种关联,马氏距离能有效捕捉这种异常。

检索任务:关注“查询匹配度”

目标是从数据库中找到与“查询样本”最相似的结果,优先选择计算高效且符合直觉的距离:

  • 图像检索(CNN特征向量)→ 余弦距离(关注特征方向,忽略图像亮度差异);
  • 字符串检索(如DNA序列)→ 汉明距离(逐位匹配,适合精确查找);
  • 商品推荐(用户购买记录)→ 杰卡德距离(基于共同购买的商品集合)。

优势:余弦距离在图像检索中计算快(可通过向量索引加速),且符合“内容相似”的直觉(如同一物体的不同角度照片,特征方向一致)。

模型评估:关注“分布/参数差异”

目标是衡量模型效果或稳定性,距离选择需匹配模型输出形式

  • 分类模型预测效果 → 交叉熵(等价于KL散度,适合分布差异);
  • 生成模型生成质量 → 沃瑟斯坦距离(对GAN等非重叠分布更友好);
  • 模型训练稳定性 → 参数欧氏距离(衡量不同轮次参数波动)。

7.3 核心原则3:考量特征特性

即使数据类型和任务相同,特征的具体特性(如尺度、相关性、稀疏性)也会影响距离选择:

特征尺度是否一致?

  • 若尺度差异大(如“年龄(0-120)”与“月薪(0-100000)”)→ 用标准化欧氏距离或马氏距离(消除量纲影响);
  • 若尺度一致(如“考试分数(0-100)”)→ 可直接用欧氏或曼哈顿距离。

例子:比较两个城市的“气温(℃)”和“湿度(%)”,直接用欧氏距离会被湿度的大数值主导,标准化后更合理。

特征是否存在相关性?

  • 若特征强相关(如“房屋面积”与“房价”)→ 马氏距离(通过协方差矩阵抵消相关性,避免重复计算);
  • 若特征独立(如“身高”与“智商”)→ 标准化欧氏距离(计算更简单)。

原理:马氏距离的协方差矩阵逆矩阵会“削弱”相关特征的权重,例如“面积”和“房价”高度相关,马氏距离会将两者的差异合并计算,避免重复放大。

特征是否稀疏?

  • 高维稀疏数据(如文本词向量,多数维度为0)→ 杰卡德距离或余弦距离(忽略零值,聚焦非零元素);
  • 稠密数据(如图像像素,多数维度有值)→ 欧氏或曼哈顿距离。

反例:用欧氏距离计算两个文本的词向量距离,会因大量零值维度(共同未出现的词)导致距离被“无关信息”主导。

维度是否过高?

  • 高维数据(如维度>1000,如文本、推荐系统特征)→ 余弦距离(避免“维度灾难”,欧氏距离在高维会趋于相似);
  • 低维数据(如维度<10,如用户基本属性)→ 欧氏或马氏距离(信息密度高,距离区分度好)。

原因:高维空间中,欧氏距离会因“各维度差异平方和”被稀释,导致任意两个样本的距离趋于相等,而余弦距离关注方向,区分度更稳定。

7.4 常见误区与避坑指南

误区1:盲目使用欧氏距离

欧氏距离是“默认选项”,但在以下场景效果差:

  • 高维稀疏数据(如文本)→ 改用余弦距离;
  • 特征尺度差异大 → 改用标准化距离;
  • 特征强相关 → 改用马氏距离。

误区2:混淆“距离”与“散度”

  • 若需要对称性(如A到B的距离=B到A)→ 选距离(如欧氏、JSD),避免KL散度;
  • 若只需衡量“用Q逼近P的损失”(非对称场景)→ 可用KL散度或交叉熵。

误区3:忽略数据分布特性

  • 若数据服从高斯分布 → 马氏距离更适配(利用分布的协方差特性);
  • 若数据是离散多分类分布 → 交叉熵或KL散度更合适。

误区4:高维数据直接用基础距离

高维数据(如维度>100)中,欧氏、曼哈顿等基础距离的区分度会急剧下降,建议:

  • 先降维(如PCA)再用欧氏距离;
  • 直接用余弦距离或JSD(对高维更稳健)。

更多推荐