机器学习中的距离总结

在数据分析、机器学习、模式识别等领域,距离函数用于衡量两个对象(向量、集合、字符串等)之间的相似性或差异性。不同的距离函数适用于不同的数据类型和业务场景,以下是常见距离函数的总结,按应用场景分类整理:

一、适用于连续型向量的距离(数值型数据)

这类距离主要用于衡量欧几里得空间中两个点(向量)的距离,适用于连续数值特征(如身高、体重、像素值等)。

距离名称 定义与公式 适用场景 特点
欧几里得距离(Euclidean Distance) 两点之间的直线距离,是最常用的距离度量。 公式:对于向量 (a=(a_1,a_2,...,a_n)) 和 (b=(b_1,b_2,...,b_n)), (d(a,b) = \sqrt{\sum_{i=1}^n (a_i - b_i)^2}) 计算机视觉(如特征点匹配)、推荐系统(用户偏好向量比较)、聚类分析(K-Means默认距离) 直观且符合人类对"距离"的认知;但受量纲影响大(如厘米和米需先标准化)。
曼哈顿距离(Manhattan Distance) 各维度坐标差的绝对值之和,又称"城市街区距离"。 公式:(d(a,b) = \sum_{i=1}^n a_i - b_i )
切比雪夫距离(Chebyshev Distance) 各维度坐标差的最大值。 公式:(d(a,b) = \max_{i=1...n} a_i - b_i )
闵可夫斯基距离(Minkowski Distance) 欧几里得、曼哈顿、切比雪夫距离的推广,由参数 (p) 控制。 公式:(d(a,b) = (\sum_{i=1}^n a_i - b_i p){1/p})
标准化欧几里得距离 先对数据标准化(消除量纲),再计算欧几里得距离。 公式:(d(a,b) = \sqrt{\sum_{i=1}^n (\frac{a_i - b_i}{\sigma_i})^2}),其中 (\sigma_i) 是第 (i) 维度的标准差。 特征量纲差异大的场景(如"年龄(0-100)"和"收入(0-100万)") 解决了欧几里得距离的量纲问题,更适合跨维度比较。
马氏距离(Mahalanobis Distance) 考虑特征间协方差的距离,不受量纲影响,且能消除维度相关性。 公式:(d(a,b) = \sqrt{(a-b)^T \Sigma^{-1} (a-b)}),其中 (\Sigma) 是数据的协方差矩阵。 异常检测(如信用卡欺诈识别)、同一分布内的点距离度量 对高维、特征相关的数据更友好;但需已知数据分布(协方差矩阵)。

二、适用于向量方向的距离(不关注大小,仅关注方向)

这类距离更注重向量的"方向相似性",而非绝对数值大小,常用于文本、图像等高维稀疏数据。

距离名称 定义与公式 适用场景 特点
余弦距离(Cosine Distance) 基于余弦相似度的距离((1 - \text{余弦相似度}))。 余弦相似度公式:(\cos\theta = \frac{a \cdot b}{ a
角度距离(Angular Distance) 向量夹角的弧度值。 公式:(d(a,b) = \arccos(\cos\theta))((\cos\theta) 为余弦相似度) 需严格度量方向差异的场景(如方向传感器数据比较) 直接反映夹角大小,范围为 (0, \\pi),比余弦距离更直观。

三、适用于集合或二进制数据的距离(0-1特征、布尔值)

这类数据通常表示"有无"(如"是否购买商品""基因是否表达"),距离需反映集合的重叠程度。

距离名称 定义与公式 适用场景 特点
杰卡德距离(Jaccard Distance) 基于杰卡德系数(集合交集与并集的比值),衡量两个集合的不相似度。 公式:(d(A,B) = 1 - \frac{ A \cap B }{
汉明距离(Hamming Distance) 两个等长字符串(或二进制向量)中,对应位置元素不同的数量。 公式:对二进制向量 (a,b),(d(a,b) = \sum_{i=1}^n a_i - b_i )
dice距离(Dice Distance) 基于Dice系数的距离((1 - \text{Dice系数}))。 Dice系数公式:(\frac{2 A \cap B }{

四、适用于字符串的距离(序列数据)

用于衡量两个字符串(或序列)的差异,需考虑插入、删除、替换等操作。

距离名称 定义与公式 适用场景 特点
编辑距离(Levenshtein Distance) 将一个字符串转换为另一个所需的最少插入、删除、替换操作次数。 (无简洁公式,需动态规划计算) 拼写纠错(如"teh"到"the"的距离为1)、自然语言处理(文本相似度)、DNA序列比对 灵活处理不同长度的字符串;但计算复杂度较高((O(nm)),(n,m) 为字符串长度)。
最长公共子序列距离(LCS Distance) 基于最长公共子序列(LCS)长度的距离:(d = 1 - \frac{ LCS(a,b) }{\max(len(a), len(b))})

五、选择距离函数的核心原则

  1. 数据类型优先:连续数值优先用欧几里得/曼哈顿;二进制/集合用杰卡德/汉明;字符串用编辑距离。
  2. 业务目标:关注"大小差异"用欧几里得;关注"方向差异"用余弦距离;关注"极端值"用切比雪夫。
  3. 数据特性:高维稀疏数据优先余弦距离(避免维度灾难);特征相关数据用马氏距离;量纲差异大时用标准化距离。

实际应用中,常需通过实验(如对比不同距离下模型的准确率)选择最优方案。

相关推荐
鲲穹AI种草9 小时前
图片水印处理工具记录:多款 AI 去水印工具能力边界整理
人工智能·图片水印处理工具
企鹅的企10 小时前
2027北京AI健康科技与智慧医疗展官方精准邀约进行中
人工智能·科技
高德诚10 小时前
探索桌面智能的无限可能:小小舵机,撑起 AI 仿生交互的完整未来
人工智能
2601_9563198810 小时前
2026年零基础学量化:从看懂示例到写清条件和动作
人工智能·python
ArkAPI10 小时前
Claude Code 连发安全修复:AI 编程 Agent 的权限,正在成为新的“安全事故高发区”
人工智能·大模型·api·codex·ai工具·claude code·arkapi
Thecozzy10 小时前
大厂 AI Coding 面试大招
人工智能·面试·职场和发展
维核科技10 小时前
推理加速实战:投机解码与KV Cache优化让大模型“快起来“
人工智能
数智化管理手记10 小时前
海量数据如何沉淀有效数据资产?数据标准化治理方案如何搭建?
java·大数据·人工智能
过期的秋刀鱼!10 小时前
LangChain-D1-模型的工作流程
人工智能·python·langchain