余弦相似度公式及推导案例


文章目录

  • 余弦相似度公式及推导案例
    • 定义
    • 公式推导
    • 案例

定义


余弦相似度通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。余弦相似度通常用于正空间,因此给出的值为0到1之间。
注意这上下界对任何维度的向量空间中都适用,而且余弦相似性最常用于高维正空间。例如在信息检索中,每个词项被赋予不同的维度,而一个维度由一个向量表示,其各个维度上的值对应于该词项在文档中出现的频率。余弦相似度因此可以给出两篇文档在其主题方面的相似度。
另外,它通常用于文本挖掘中的文件比较。此外,在数据挖掘领域中,会用到它来度量集群内部的凝聚力。

两个向量间的余弦值可以通过使用欧几里得点积公式求出:

给定两个属性向量,A和B,其余弦相似性θ由点积和向量长度给出,如下所示:

这里的Ai、Bi分别代表向量A和B的各分量。

公式推导


如果对于上述的公式不是很理解,那就请看这里的公式推导:
(由于不会键盘敲数轴和公式,就直接上笔了)

案例


看一个案例来加深理解:
某购物网站有如下数据:小明购买了T恤a、T恤b、T恤e,小红购买了T恤b、T恤c、小强购买了T恤a、T恤e。
把以上信息转为向量图,代入上述的公式来计算得出相似度,过程如下:
由上述的结果便可得到如下结论:小明和小红这两个用户有一定的相似度,但是不大,因为他们只有一个共同商品;小明和小强这两个用户相似度最大,因为他们有两个共同商品;而小红和小强的相似度为0,因为小红买的T恤小强都没有买。

转自:https://blog.csdn.net/smile_shujie/article/details/89516305

余弦相似度公式及推导案例相关推荐

  1. mysql计算余弦相似度_余弦相似度公式及推导案例

    定义 余弦相似度通过测量两个向量的夹角的余弦值来度量它们之间的相似性.0度角的余弦值是1,而其他任何角度的余弦值都不大于1:并且其最小值是-1.从而两个向量之间的角度的余弦值确定两个向量是否大致指向相 ...

  2. c语言余弦定理float,余弦相似度公式

    已计算出个文本间的余弦相似度值,怎么用kmeans聚类 K-MEANS算法: k-means 算法接受输入量 k :然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较 ...

  3. 使用余弦相似度算法计算文本相似度-数学

    20211201 也就是效果 皮尔逊>余弦>欧式 余弦相似度的局限 皮尔逊的优势,相当于是改进版余弦相似度 欧式与 余弦 欧式侧重于直线距离 归一化之后的欧式和余弦的效果也不同 比如 0, ...

  4. AI产品经理需要了解的数据知识:余弦相似度

    AI产品经理需要了解的数据知识:余弦相似度 本文概括介绍了余弦相似度是什么.如何应用以及案例说明,目的是希望我们产品经理在设计相关跟相似度功能或是利用相似性功能解决某一业务的场景时能利用上余弦相似度, ...

  5. python勾股定理中三个数的关系是、找出三十以内的_从勾股定理到余弦相似度-程序员的数学基础...

    大部分程序员由于理工科的背景,有一些高数.线性代数.概率论与数理统计的数学基础.所以当机器学习的热潮来临的时候,都跃跃欲试,对机器学习的算法以及背后的数学思想有比较强烈的探索欲望. 本文的作者就是其中 ...

  6. 余弦相似度 高维数据_从勾股定理到余弦相似度-程序员的数学基础

    大部分程序员由于理工科的背景,有一些高数.线性代数.概率论与数理统计的数学基础.所以当机器学习的热潮来临的时候,都跃跃欲试,对机器学习的算法以及背后的数学思想有比较强烈的探索欲望. 本文的作者就是其中 ...

  7. 相似度计算方法(三) 余弦相似度

    一. 余弦相似度算法基本概念         余弦相似度算法:一个向量空间中两个向量夹角间的余弦值作为衡量两个个体之间差异的大小,余弦值接近1,夹角趋于0,表明两个向量越相似,余弦值接近于0,夹角趋于 ...

  8. 从勾股定理到余弦相似度-程序员的数学基础

    大部分程序员由于理工科的背景,有一些高数.线性代数.概率论与数理统计的数学基础.所以当机器学习的热潮来临的时候,都跃跃欲试,对机器学习的算法以及背后的数学思想有比较强烈的探索欲望. 本文的作者就是其中 ...

  9. 余弦相似度的计算方法

    1.基于用户的协同过滤算法 仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法.学术界对协同过滤算法 进行了深入研究,提出了很多方法,比如基于邻域的方法(neighborhood-based).隐 ...

最新文章

  1. Zookeeper知识汇总
  2. python链表删除尾部节点_python单链表中如何查找和删除节点?
  3. 图解HashMap(一)
  4. 【Transformer】DETR: End-to-End Object Detection with Transformers
  5. 企业私有云部署im,视频服务
  6. javafx透明边框_JavaFX技巧6:使用透明颜色
  7. Mybatis基于XML配置SQL映射器(一)
  8. win10系统电脑wifi图标不见了的开启方法
  9. mysql innodb事务中 出现_MySql InnoDB事务死锁问题
  10. Python终端显示彩色字符(封装了Colored类)
  11. SpringBoot整合sigar实现服务端监控
  12. SAP培训及ABAP学习入门必读
  13. 【数字信号调制】Matlab实现PCM编码和QAM调制
  14. Nutch 深入浅出
  15. 同步软件Activesync4.5遇到的一些棘手问题
  16. Android Studio与夜神模拟器联合调试
  17. IE浏览器主页被劫持,如何解决主页被篡改问题?
  18. deeplearning.14深度学习猫咪识别阶段性检测记录
  19. flex布局遇到white-space失效问题
  20. 《惢客创业日记》2020.07.25-26(周六)光盘行动的痛点(三)

热门文章

  1. 请问FXAA、FSAA与MSAA有什么区别?效果和性能上哪个好?
  2. 360浏览器 与 IE的兼容性模式笔记
  3. 【农业害虫识别论文一】Crop pest classification based on deep convolutional neural network and transfer learning
  4. 构建企业私有云的最佳实践
  5. mysql FROM_UNIXTIME 毫秒值转换
  6. 【selenium-python】预期条件--expected_conditions
  7. 磁场发生器WD-100电磁铁
  8. 自然语言处理NLP文本分类顶会论文阅读笔记(一)
  9. Robotium自动化测试学习【一】(2021-02-19)
  10. ffmpeg命令报错: error while loading shared libraries: libavdevice.so.58: cannot open