zoukankan      html  css  js  c++  java
  • 相似度计算方法学习总结

    无论什么推荐算法,计算相似度都是避不开的,下面就总结一下已经了解的相似度计算方法。

    1.余弦相似度

     

    这个算是最常用的了,典型例子是计算文本相似度。通过计算两个向量间的夹角,越是相似夹角度数越接近0,所计算的值也就越接近1

    但是余弦相似度只对方向敏感,对距离并不敏感。

     2.欧式距离(欧几里得距离)

     

    就是计算空间上两点间的距离。下图很好体现了欧氏距离和余弦相似度的差异。

     

    所以可以看出 欧氏距离 适用于 那些 对数值差异大小敏感的 相似度计算,

    余弦相似度 更适用于 判别方向上的差异,而对绝对的数值不敏感的,比如 通过用户对 内容的评分来区分兴趣的相似度,修正了不同用户之间可能存在度量标准不统一的问题(有的用户默认高分,有的用户默认低分,对于默认低分用户来说7分就表示他喜欢了,而对默认高分用户来说10分才表示喜欢)。

     3.皮尔逊相关系数(PC)

     

    其实就是 升级版的余弦相似度。

    举个例子:

    用户对内容评分,按5分制,XY两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得到的结果是0.98,两者极为相似。但从评分上看X似乎不喜欢2这个 内容,而Y则比较喜欢,余弦相似度对数值的不敏感导致了结果的误差,需要修正这种不合理性就出现了调整余弦相似度,即所有维度上的数值都减去一个均值,比如XY的评分均值都是3,那么调整后为(-2-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负值并且差异不小,但显然更加符合现实。

    此外,还有

    斯皮尔曼等级相关系数、平局平方差异(MSD)、Jaccard距离和Dice系数等... 不太懂,以后涉及到深处在研究哈。

    https://www.cnblogs.com/chenliyang/p/6548306.html)

  • 相关阅读:
    crm 4 注释与上传附件权限
    动态图片轮播
    PHP 连接 MSSQL
    php mssql 中文各种乱码
    百度地图逆地址解析
    Microsoft Visual C++ 2015 Redistributable(x64)
    服务器 vps 空间
    Python之路【第二篇】:Python基础(二)
    Python之路【第一篇】:Python简介和入门
    2016年会成为Java EE微服务年吗?
  • 原文地址:https://www.cnblogs.com/dsgcBlogs/p/8619549.html
Copyright © 2011-2022 走看看