余弦相似度
2015-06-18 16:40
323 查看
定义
余弦相似度(cosine similarity),又称为余弦相似性。通过计算两个向量的夹角余弦值来评估他们的相似度。
概念
向量,是多维空间中有方向的线段,如下图是二维空间的两个向量:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/26/c0abd0a03258104dd857d68eb4e08243.png)
如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近。
要确定两个向量方向是否一致,可以用余弦定理计算向量的夹角。夹角越小,余弦值越接近于1,它们的方向更加吻合,则越相似。
计算
对于二维空间,根据向量点积公式可得:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/26/386e51de3c66f6b28874b7295054da5e.png)
假设向量a、b的坐标分别为(x1,y1)、(x2,y2) 。则:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/26/5d4f34b8844e30b0b618bbf11ae947c4.png)
设向量 A = (A1,A2,...,An),B = (B1,B2,...,Bn) 。推广到多维:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/26/31ccd4c9b6e2472339d5d39567567040.png)
例如计算N维向量,展开之后就是:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/26/db6eb4ecf83eb1150b0cad30e96682fa.png)
应用
最常见的应用就是计算文本相似度。将两个文本根据他们词,建立俩个向量,计算这两个向量的余弦值,就可以知道两个文本的相似度情况。
余弦相似度(cosine similarity),又称为余弦相似性。通过计算两个向量的夹角余弦值来评估他们的相似度。
概念
向量,是多维空间中有方向的线段,如下图是二维空间的两个向量:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/26/c0abd0a03258104dd857d68eb4e08243.png)
如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近。
要确定两个向量方向是否一致,可以用余弦定理计算向量的夹角。夹角越小,余弦值越接近于1,它们的方向更加吻合,则越相似。
计算
对于二维空间,根据向量点积公式可得:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/26/386e51de3c66f6b28874b7295054da5e.png)
假设向量a、b的坐标分别为(x1,y1)、(x2,y2) 。则:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/26/5d4f34b8844e30b0b618bbf11ae947c4.png)
设向量 A = (A1,A2,...,An),B = (B1,B2,...,Bn) 。推广到多维:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/26/31ccd4c9b6e2472339d5d39567567040.png)
例如计算N维向量,展开之后就是:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/26/db6eb4ecf83eb1150b0cad30e96682fa.png)
应用
最常见的应用就是计算文本相似度。将两个文本根据他们词,建立俩个向量,计算这两个向量的余弦值,就可以知道两个文本的相似度情况。
相关文章推荐
- Strategy Pattern 策略模式(一)
- PB中的DataStore是个好东西
- iframe自适应高度
- 【抓包工具】wireshark
- 搭建nexus服务器后,执行mvn出错解决办法
- jQuery 开发之jQuery事件一
- Win10不激活出现卡顿怎么办?
- Reservoir Sampling - 蓄水池抽样
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- ls -l文件类型
- java中Math.round(),Math.ceil(),Math.floor()运算
- java ThreadLocal 用法
- 找女神要QQ号码
- 我们一起学习WCF 第二篇WCF承载多个接口
- 阅读《一个程序猿的生命周期》有感
- SeGue 多控制器跨界面传递数据原理
- Oracle Study之--Oracle 11gR2 RAC crs启动故障(CRS-4000)
- 宣布Office 2016 applications DLP 公共预览版
- Django异常 - ImportError: No module named django.core.management
- 面向“接口”编程和面向“实现”编程