1、定义
以上均来自维基百科(https://en.wikipedia.org/wiki/Cosine_similarity)
简单来说,余弦相似度,就是计算两个向量间的夹角的余弦值。余弦距离就是用1减去这个获得的余弦相似度。
2、性质
根据数学上的定义,在一个集合中,如果一对元素均可确定一个实数,使得三条距离公式(非负性,对称性,三角不等式)成立,则该实数可称为这对元素之间的距离。
a、非负性
由上面的余弦距离可以知道,余弦距离的取值范围为[0,2] ,这就满足了非负性的性质。
b、对称性
由于dist(A,B)=dist(B,A),因此满足对称性。
c、三角不等式
以上来自于(https://blog.csdn.net/Gary___/article/details/82938020)
3、SKlearn中比较(sklearn cosine_similarity vs pairwise_distances)
>>> from sklearn.metrics.pairwise import cosine_similarity
>>> from sklearn.metrics.pairwise import pairwise_distances
>>> a=[[1,3],[2,2]]
>>> cosine_similarity(a)
array([[ 1. , 0.89442719],
[ 0.89442719, 1. ]])
>>> pairwise_distances(a,metric="cosine")
array([[ 0. , 0.10557281],
[ 0.10557281, 0. ]])
>>>
因此,Cosine distance 等于 1.0 减 cosine similarity.
以上来自于(https://www.jianshu.com/p/06eaeb39738d)
4、总结
在日常使用中需要注意区分,虽然不是一个严格意义上的距离度量公式,但是形容两个特征向量之间的关系还是有很大用处的。比如人脸识别,推荐系统(http://python.jobbole.com/85516/)之类,都可以用到余弦相似度以及余弦距离。