【机器学习|学习笔记】机器学习中的距离度量详解(KNN & K-Means 背后核心)

【机器学习|学习笔记】机器学习中的距离度量详解(KNN & K-Means 背后核心)



欢迎铁子们点赞、关注、收藏!
祝大家逢考必过!逢投必中!上岸上岸上岸!upupup

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “学术会议小灵通”或参考学术信息专栏:https://blog.csdn.net/2401_89898861/article/details/148514108


✅ 一、背景:为什么“距离”如此重要?

  • 在 KNN / K-means / DBSCAN / 向量检索 等众多机器学习方法中,“样本之间的距离”是判断相似性/聚类归属的基础。选择合适的距离函数将直接影响算法效果。

📐 二、常用的距离计算方式及数学公式

1️⃣ 欧式距离(Euclidean Distance) – 默认最常用

  • 公式:
    在这里插入图片描述
  • 含义:两点之间的“直线距离”
  • 特点:连续空间中,最符合“直觉几何”

👉 KNN、K-means 默认距离

2️⃣ 曼哈顿距离(Manhattan Distance / L1 距离)

  • 公式:
    在这里插入图片描述
  • 含义:城市街区中的“网格走法”
  • 特点:比欧式更“保守”,对异常值更稳定

3️⃣ 闵可夫斯基距离(Minkowski Distance)

  • 欧式与曼哈顿是该距离的特例:
    在这里插入图片描述
  • p = 2 p=2 p=2:欧式距离
  • p = 1 p=1 p=1:曼哈顿距离
from scipy.spatial.distance import minkowski

# 示例:p=1 是曼哈顿,p=2 是欧式
minkowski([1, 2, 3], [4, 5, 6], p=1)  # 曼哈顿
minkowski([1, 2, 3], [4, 5, 6], p=2)  # 欧式

4️⃣ 余弦距离(Cosine Distance)

  • 公式:
    在这里插入图片描述
  • 关注的是角度相似度,与“方向”相关
  • 常用于文本/图像嵌入空间(向量大小不重要)

5️⃣ 马氏距离(Mahalanobis Distance)

在这里插入图片描述

  • 考虑特征间协方差,能处理有相关性特征
  • 适用于特征尺度差异大/不独立的情况

📊 三、Python 示例:KNN 中换用不同距离度量

from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report

X, y = make_classification(n_samples=500, n_features=4, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y)

# 使用不同距离度量
models = {
    "Euclidean (默认)": KNeighborsClassifier(n_neighbors=5, metric='euclidean'),
    "Manhattan": KNeighborsClassifier(n_neighbors=5, metric='manhattan'),
    "Cosine": KNeighborsClassifier(n_neighbors=5, metric='cosine'),
}

for name, clf in models.items():
    clf.fit(X_train, y_train)
    y_pred = clf.predict(X_test)
    acc = clf.score(X_test, y_test)
    print(f"{name} 准确率: {acc:.4f}")

🤔 四、为什么 KNN 和 K-means 默认不用曼哈顿距离?

原因解释
📏 欧式更贴近“最短路径”对连续空间中的样本差异表达更自然
📐 欧式距离支持几何推导K-means 聚类中心用的是“均值”,自然搭配 L2
🧮 曼哈顿更新不一致曼哈顿距离不适合用“均值”表示中心点(几何中心不唯一)
⚠ 曼哈顿对异常值更稳健但它不能反映空间的“几何意义”,尤其在高维场景

🧠 五、如何选择距离度量?

场景推荐距离
连续特征、空间几何关系欧式距离
文本向量、BERT、embedding余弦距离
特征之间差异大或异常值多曼哈顿或马氏距离
特征相关性明显马氏距离

🧮 六、距离度量与机器学习发展的联系

发展阶段距离度量使用
早期算法(KNN/K-means)默认欧式/曼哈顿
大数据阶段加权欧式、稀疏距离、距离学习
深度学习 + 向量化余弦相似度、向量检索距离
大模型检索(RAG)嵌入 → cosine / faiss 中 L2/cosine 高效搜索

✅ 七、总结对比表:距离函数一览

距离是否考虑方向是否考虑缩放优势劣势
欧式距离直观、快速受尺度影响大
曼哈顿距离对异常值稳定不适合均值建模
余弦距离适合高维嵌入不反映绝对差异
马氏距离可处理相关特征要求协方差可逆
闵可夫斯基可调泛化能力强需调参 p p p
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐