相似度计算算法系统性总结

相似度计算算法系统性总结

一、基于数值/向量的相似度算法

1. 余弦相似度(Cosine Similarity)

原理:计算两个向量夹角的余弦值,衡量方向一致性。

优点

对向量长度不敏感,适合高维稀疏数据(如文本TF-IDF向量)计算稳定,结果在

[

1

,

1

]

[-1, 1]

[−1,1],通常归一化到

[

0

,

1

]

[0, 1]

[0,1]

缺点

忽略向量大小(模长),无法反映绝对差异无法处理评分偏置(如用户A习惯打高分,B习惯打低分)

适用场景:文本相似度、推荐系统、信息检索

2. 皮尔逊相关系数(Pearson Correlation Coefficient, PCC)

原理:衡量两个变量的线性相关性,基于协方差与标准差。

优点

自动中心化(减去均值),消除用户评分偏置能捕捉线性趋势

缺点

仅适用于线性关系对异常值敏感,要求数据近似正态分布

适用场景:协同过滤推荐系统、金融数据分析

3. 欧几里得距离(Euclidean Distance)

原理:两点间的直线距离。

优点:直观、几何意义明确

缺点

对维度敏感(“维度灾难”)未考虑方向,仅反映绝对距离

适用场景:低维空间聚类、图像像素比较

4. 曼哈顿距离(Manhattan Distance)

原理:各维度差值的绝对值之和。

优点:计算简单,对噪声鲁棒性略强于欧氏距离

缺点:同样受维度影响,不适用于高维稀疏数据

适用场景:网格路径规划、特征选择

二、基于集合的相似度算法

5. 杰卡德相似度(Jaccard Similarity)

原理:交集与并集之比。

优点

适用于二值或集合数据(如标签、关键词)计算简单直观

缺点

忽略元素频率(只看是否出现)对小集合敏感(如两个集合都为空,结果未定义)

适用场景:文本去重、用户兴趣标签匹配、图像分割评估(IoU)

6. Sørensen–Dice 系数

原理

优点:对小集合更友好,重叠比例直观

缺点:与Jaccard类似,忽略频率;对不平衡集合有偏

适用场景:生物信息学、医学图像分割

7. Tanimoto 系数(广义Jaccard)

原理(适用于实数向量):

优点

支持非二值数据,适合稀疏向量在化学/生物信息学中效果好

缺点:对噪声敏感,计算复杂度较高

适用场景:分子结构相似性、文档相似度(带权重)

三、基于信息论的相似度

8. 互信息(Mutual Information, MI)

原理:衡量两个变量共享的信息量。

优点:可捕捉非线性依赖关系

缺点:需估计概率分布,数据稀疏时不准

适用场景:特征选择、文本共现分析

9. KL散度 / 相对熵(Kullback–Leibler Divergence)

注意:不是对称相似度,而是分布差异度量

适用场景:语言模型评估、生成模型训练(如VAE)

四、文本专用相似度算法

10. TF-IDF + 余弦相似度

经典组合:将文本转为加权词向量后计算余弦

优点:简单有效,工业界广泛使用

缺点:忽略语义、词序、同义词

11. BM25

原理:改进的词频加权,考虑文档长度归一化

优点:比TF-IDF更适合搜索排序

适用场景:搜索引擎相关性排序

12. 语义嵌入相似度(BERT/SBERT等)

原理:用预训练语言模型生成句向量,再算余弦

优点:捕捉深层语义,支持上下文理解

缺点:计算开销大,需GPU加速

适用场景:问答匹配、语义搜索、智能客服

五、图像/音频相似度算法

类型 算法 特点
图像 SSIM 模拟人眼感知,优于MSE
图像 pHash / dHash 快速去重,抗轻微变形
音频 DTW(动态时间规整) 对齐不同长度音频
音频 MFCC + 余弦 提取声学特征后比较

六、大规模相似检索技术

MinHash + LSH:快速估算Jaccard相似度FAISS / Annoy / HNSW:高效近似最近邻搜索(ANN)SimHash:用于网页/文本去重

总结对比表

算法 数据类型 是否考虑大小 是否考虑顺序 是否处理稀疏 典型场景
余弦相似度 向量 ❌(只方向) 文本、推荐
皮尔逊相关 数值 ✅(中心化) ⚠️ 用户评分
Jaccard 集合 标签、关键词
Dice 集合 图像分割
Tanimoto 实数向量 化学、文档
TF-IDF+Cos 文本 ⚠️(加权) 信息检索
BERT相似度 文本 语义匹配
欧氏距离 向量 聚类、图像

选择建议

短文本/字符串匹配 → Levenshtein、Jaro-Winkler长文本/语义理解 → SBERT、TF-IDF+Cosine、BM25用户行为/评分数据 → 皮尔逊、修正余弦标签/集合数据 → Jaccard、Dice高维稀疏向量 → 余弦、Tanimoto大规模检索 → FAISS + Embedding 或 MinHash + LSH

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...