欧氏距离 vs 余弦相似度

 欧氏距离余弦相似度
关注什么 绝对数值大小差异 方向 / 趋势是否一致
结果含义 越小越相似 越大越相似
适用场景 身高、体重、分数等数值 文本、用户偏好、推荐系统

 

 

这俩是机器学习、推荐、NLP 里最容易混淆、但选择逻辑非常清晰的两个指标。

 

我用最简单、最实用的方式告诉你:什么时候用哪个,为什么,一眼判断。

 

一句话结论

 
  • 关心方向 / 趋势是否一致 → 用余弦相似度
  • 关心数值大小 / 绝对差异 → 用欧氏距离
 

 

一、什么时候用 余弦相似度

 

适用场景

 
  • 文本相似度(词频向量)
  • 用户偏好、推荐系统
  • 图像特征向量
  • 任何维度高、数值大小不重要、方向更重要的场景
 

核心特点

 
只看方向,不看长度。
 
向量长度被自动忽略,只比较趋势是否一致。
 

经典例子

 
用户 A:[1,1,1,0]
 
用户 B:[100,100,100,0]
 
  • 余弦相似度 ≈ 1(完全相似)
  • 欧氏距离 非常大(完全不像)
 
→ 说明:虽然量级差 100 倍,但偏好完全一致,余弦能识别,欧氏不行。
 

 

二、什么时候用 欧氏距离

 

适用场景

 
  • 身高、体重、年龄、分数
  • 聚类(K-Means)
  • 坐标点、位置
  • 任何数值大小本身有意义的场景
 

核心特点

 
关心绝对差异,差一点就是差一点。
 

经典例子

 
A:[170, 65](身高 170,体重 65)
 
B:[172, 67]
 
C:[200, 100]
 
  • A 与 B 距离小 → 相似
  • A 与 C 距离大 → 不相似
 
→ 欧氏距离非常合适。
 

 

三、最关键的判断标准(你以后就按这个选)

 

1. 如果数据量级差异大,但趋势一致

 
→ 用余弦相似度
 
例:
 
文章 1:[2,3,1]
 
文章 2:[200,300,100]
 
→ 内容相似,只是长度不同,余弦相似度接近 1。
 

2. 如果数据单位统一、数值大小有实际意义

 
→ 用欧氏距离
 
例:温度、价格、距离、成绩。
 

3. 高维稀疏向量(文本、词袋)

 
→ 必须余弦相似度
 
欧氏距离在高维会失效,变得不可靠。
 

4. 需要做聚类、KNN

 
→ 通常欧氏距离
 
除非是文本 / 高维稀疏 → 余弦。
 

 

四、一张表秒懂对比

 
表格
 
特征余弦相似度欧氏距离
关注 方向、趋势 绝对距离
受数值大小影响 不受 严重受
高维稀疏数据 很好 很差
结果范围 [-1,1]  
posted on 2026-04-04 15:05  zhaofeng555  阅读(40)  评论(0)    收藏  举报