机器学习算法原理与实践-入门(二):距离计算方式详解
在上一篇文章中,我们深入学习了KNN算法的基本原理。我们知道KNN的核心思想是"物以类聚",而要判断两个样本是否"相近",就需要用到距离计算。本文将系统讲解机器学习中常用的各种距离计算方式,这是理解KNN乃至许多其他机器学习算法的基础。
一、为什么需要多种距离计算方式?
距离计算是衡量样本相似度的关键工具。不同的距离度量方式适用于不同的场景和数据类型:
掌握各种距离计算方式,能够帮助我们在实际项目中选择最合适的度量方法,从而提高模型的准确性和效率。
二、常用的距离度量方法
1. 欧氏距离(欧几里得距离)
定义:计算两点之间的直线距离,是最直观的距离度量方式。

公式:对于n维空间中的两个点A和B:
![[
d(A,B) = \\sqrt{\\sum_{i=1}^{n}(a_i - b_i)^2}
]](https://www.171host.com/wp-content/uploads/2026/02/20260208081149-69884545a0121.png)
特点:
- 优点:直观易懂,符合日常生活中的距离概念
- 缺点:对量纲敏感,高维数据中效果会下降
- 适用场景:低维空间的数值型数据
2. 曼哈顿距离(城市街区距离)
定义:计算两点在网格状坐标系中的距离,只能沿着坐标轴方向前进。

公式:
![[
d(A,B) = \\sum_{i=1}^{n}|a_i - b_i|
]](https://www.171host.com/wp-content/uploads/2026/02/20260208081150-698845469dcbd.png)
特点:
- 优点:计算速度快,对异常值不敏感
- 缺点:不是实际的最短路径
- 适用场景:特征独立的网格数据
3. 切比雪夫距离
定义:计算两点在各个坐标上的差的最大绝对值。

公式:
![[
d(A,B) = \\max_{i=1}^{n}|a_i - b_i|
]](https://www.171host.com/wp-content/uploads/2026/02/20260208081151-69884547997d4.png)
特点:
- 优点:计算简单,对单一维度最大变化敏感
- 缺点:忽略了其他维度的信息
- 适用场景:棋盘类游戏AI、图像处理
4. 余弦相似度
定义:衡量两个向量的方向相似性,而不是距离。

公式:
![[
\\text{similarity}(A,B) = \\frac{A \\cdot B}{|A| |B|}
]](https://www.171host.com/wp-content/uploads/2026/02/20260208081152-69884548b6897.png)
特点:
- 优点:不受向量长度影响,只关注方向
- 缺点:完全忽略了向量的幅度信息
- 适用场景:文本相似度计算、推荐系统
5. 汉明距离
定义:比较两个等长字符串在相同位置上不同字符的数量。

公式:
![[
d(A,B) = \\sum_{i=1}^{n} \\mathbb{I}(a_i \\neq b_i)
]](https://www.171host.com/wp-content/uploads/2026/02/20260208081153-69884549c0e19.png)
特点:
- 优点:计算简单高效,对二进制数据特别有效
- 缺点:要求比较对象长度相等
- 适用场景:错误检测与纠正编码、DNA序列比对
6. 闵可夫斯基距离
定义:距离度量的通用形式,通过参数p的变化可以表示多种距离度量。

公式:
![[
d(A,B) = \\left(\\sum_{i=1}^{n}|a_i - b_i|p\\right){\\frac{1}{p}}
]](https://www.171host.com/wp-content/uploads/2026/02/20260208081154-6988454acf2e9.png)
特殊情形:
- p=1:曼哈顿距离
- p=2:欧氏距离
- p→∞:切比雪夫距离
特点:
- 优点:提供了距离度量的统一框架
- 缺点:p值的选择需要经验或调优
- 适用场景:需要灵活距离度量的场景
7. Jaccard指数(杰卡德相似系数)
定义:衡量两个集合的相似度,计算交集大小与并集大小的比值。

公式:
![[
J(A,B) = \\frac{|A \\cap B|}{|A \\cup B|}
]](https://www.171host.com/wp-content/uploads/2026/02/20260208081156-6988454c0f86b.png)
特点:
- 优点:直观反映了集合的重叠程度,对集合大小不敏感
- 缺点:对大型数据集可能产生偏差
- 适用场景:文档相似度、购物篮分析
8. 半正矢距离
定义:专门用于计算地球表面两点之间的距离,考虑了地球的曲率。

公式:
![[
d = 2R \\arcsin\\left(\\sqrt{\\sin^2\\left(\\frac{\\phi_2 - \\phi_1}{2}\\right) + \\cos(\\phi_1)\\cos(\\phi_2)\\sin^2\\left(\\frac{\\lambda_2 - \\lambda_1}{2}\\right)}\\right)
]](https://www.171host.com/wp-content/uploads/2026/02/20260208081157-6988454d36960.png)
特点:
- 优点:准确计算地球表面距离,考虑了地球曲率
- 缺点:计算相对复杂,仅适用于地理坐标数据
- 适用场景:地理信息系统、位置服务应用
三、距离度量的选择原则
在实际应用中,选择哪种距离度量需要考虑以下因素:
1. 数据类型
- 数值型数据:欧氏距离、曼哈顿距离
- 二元数据:汉明距离、Jaccard指数
- 文本数据:余弦相似度
- 地理位置数据:半正矢距离
2. 数据特性
- 高维数据:余弦相似度效果更好
- 稀疏数据:余弦相似度、Jaccard指数
- 分布不均匀的数据:需要先进行标准化处理
3. 应用需求
- 需要直观解释:欧氏距离、曼哈顿距离
- 关注方向相似性:余弦相似度
- 需要鲁棒性:曼哈顿距离对异常值更鲁棒
4. 计算效率
- 大规模数据:选择计算简单的距离
- 实时应用:曼哈顿距离、汉明距离
实践建议
下一篇预告
在掌握了KNN算法的基本原理和各种距离计算方式后,我们将在下一篇文章中深入讲解:
机器学习算法原理与实践-入门(三):使用数学方法实现KNN
我们将从数学原理出发,不使用现成的机器学习库,从头开始实现KNN算法的每个步骤,让你真正理解算法的内部工作原理。





