当前位置: 首页 > news >正文

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

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

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

1. 余弦相似度(Cosine Similarity)

原理:计算两个向量夹角的余弦值,衡量方向一致性。
cos(θ)=A⋅B∥A∥∥B∥\text{cos}(\theta) = \frac{\mathbf{A} \cdot \mathbf{B}}{\|\mathbf{A}\| \|\mathbf{B}\|}cos(θ)=A∥∥BAB

优点

  • 对向量长度不敏感,适合高维稀疏数据(如文本TF-IDF向量)
  • 计算稳定,结果在 [−1,1][-1, 1][1,1],通常归一化到 [0,1][0, 1][0,1]

缺点

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

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

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

原理:衡量两个变量的线性相关性,基于协方差与标准差。
r=cov(X,Y)σXσYr = \frac{\text{cov}(X,Y)}{\sigma_X \sigma_Y}r=σXσYcov(X,Y)

优点

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

缺点

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

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

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

原理:两点间的直线距离。
d=∑(xi−yi)2d = \sqrt{\sum (x_i - y_i)^2}d=(xiyi)2

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

缺点

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

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

4. 曼哈顿距离(Manhattan Distance)

原理:各维度差值的绝对值之和。
d=∑∣xi−yi∣d = \sum |x_i - y_i|d=xiyi

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

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

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

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

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

原理:交集与并集之比。
J(A,B)=∣A∩B∣∣A∪B∣J(A,B) = \frac{|A \cap B|}{|A \cup B|}J(A,B)=ABAB

优点

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

缺点

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

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

6. Sørensen–Dice 系数

原理
D=2∣A∩B∣∣A∣+∣B∣D = \frac{2|A \cap B|}{|A| + |B|}D=A+B2∣AB

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

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

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

7. Tanimoto 系数(广义Jaccard)

原理(适用于实数向量):
T=A⋅B∥A∥2+∥B∥2−A⋅BT = \frac{\mathbf{A} \cdot \mathbf{B}}{\|\mathbf{A}\|^2 + \|\mathbf{B}\|^2 - \mathbf{A} \cdot \mathbf{B}}T=A2+B2ABAB

优点

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

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

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

三、基于信息论的相似度

8. 互信息(Mutual Information, MI)

原理:衡量两个变量共享的信息量。
I(X;Y)=∑x,yp(x,y)log⁡p(x,y)p(x)p(y)I(X;Y) = \sum_{x,y} p(x,y) \log \frac{p(x,y)}{p(x)p(y)}I(X;Y)=x,yp(x,y)logp(x)p(y)p(x,y)

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

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

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

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
http://www.dtcms.com/a/569601.html

相关文章:

  • 大型网站建设用什么系统好佛山网站设计哪里好
  • Perplexity AI 的 RAG 架构全解析:幕后技术详解
  • 免费查找资料的网站不同网站建设特点
  • 信诚网络公司网站莱芜吧莱芜贴吧
  • Web Js逆向——加密参数定位方法(Hook)
  • Python3 模块
  • APP网站建设什么用处昆明装饰企业网络推广
  • Vue开发系列——自定义组件开发
  • 网站网页和网址的关系乐陵森林覆盖率
  • 贵阳响应式网站开发汕头网站推广找哪里
  • 测试——bug
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段-二阶段(13):文法和单词-第三课
  • 网站开发环境设计wordpress微信小程序one
  • 建行业网站的必要性沈阳网站维护
  • AI问数架构supersonic简介
  • 教育培训东莞网站建设怎样自学设计室内装修效果图
  • 解决盲盒藏品重复率高难题——定制化小程序商业解决方案
  • 石狮做网站网站备案条件
  • 【CUDA 编程思想】FwdKvcacheMla 算子详细数据流程讲解
  • 网站做成小程序wordpress笔记本主题下载失败
  • 探索 Maxwell:高效捕获 MySQL 数据变更的轻量级中间件
  • 3 LangChain 核心组件详解:构建企业级AI应用的基础设施
  • Pytorch 学习TensorBoard的使用
  • 经营虚拟网站策划书友汇网网站建设管理后台设置
  • 网站上的3d产品展示怎么做石家庄免费建站模板
  • HTML中JS监听输入框值的即时变化
  • [HTB] 靶机学习(十二)Eureka
  • Vue3 前端项目 Docker 容器化部署教程
  • 子页网站设计高端网站开发找哪家好
  • 做外单的网站行业前10的网站建设公