косинусное сходство

алгоритм
косинусное сходство

определение

余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。
余弦相似度将向量根据坐标值,绘制到向量空间中,如最常见的二维空间。


余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。
向量是有方向的。
如果2个向量之间的夹角是0度角,则其余弦值是1,而其他任何角度的余弦值都小于1,并且其最小值是-1。
从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。
两个向量有完全相同的指向时,余弦相似度的值为1;
两个向量夹角为90°时,余弦相似度的值为0;
两个向量指向完全相反的方向时,余弦相似度的值为-1。

这结果是与向量的长度无关的,仅仅与向量的指向方向相关。
所以说,有的场景适合用余弦相似度,有的场景不适合。
余弦相似度通常用于正空间,因此给出的值为-1到1之间。

image.png

Формула расчета

природа

余弦值的范围在[-1,1]之间,值越趋近于1,代表两个向量的方向越接近;
越趋近于-1,他们的方向越相反;
接近于0,表示两个向量近乎于正交。

Сценарии применения

<1>比如陌陌,脉脉这样的app
   在进行群推荐的时候,我们可以用`余弦相似度`来计算2个群的相似度.
   比如a群有张三,李四,王五3个人
   比如b群有孙悟空,猪八戒,沙和尚,张三4个人。
   
   然后我们计算这2个群的相似性。把2个群的人相加,然后去重,得到一个6维的空间
   则a群的向量是:
   张三 李四 王五 孙悟空 猪八戒 沙和尚 
   1    1   1   0     0     0
   
   b群的向量是:
   张三 李四 王五 孙悟空 猪八戒 沙和尚 
   1    0   0   1     1     1
   
   然后计算这2个向量的余弦相似度,如果余弦相似度很大,
   则以后如果有新的用户加入到了a群,那么我们就把b群推荐给这个新用户。
   

<2>快手 抖音等app的用户推荐
   user  军事类 汽车类 搞笑类 教育类 服装类 ......
   
   1     0.1   0.5   0.02  0.03  0.12  ......
   2     0.11  0.45  0.03  0.025 0.115 ......
   3
   4
   ...
   ...
   在计算2个用户的相似度的时候,不适合用余弦相似度,因为在计算2个向量的向量相似度的时候,
   需要考虑大小,所以用欧式距离计算相似度比较合适。
   
   

<3>文本的情感分析
   监督学习机器学习算法
   对训练数据进行切分词,然后构建词向量。向量中每个词都有自己的权重。
   
   对新的评论进行切分词,然后也构建词向量。