zoukankan      html  css  js  c++  java
  • 推荐中相似度计算问题(选择与总结)

    《Dataminingguide》书阅读,第二章 推荐系统入门

    1、 曼哈顿距离

    最简单的距离计算方式。在二维计算模型中,每个人都可以用(X,Y)的点来表示。例如(X1,Y1)来表示艾米,(X2,Y2)来表示另一位人,那么他们之间的曼哈顿距离就是:
    |X1-X2|+|Y1-Y2|

    也就是x之差的绝对值加上y之差的绝对值。

    曼哈顿距离的优点之一就是计算速度快,对于Facebook这样需要计算百万用户之间的相似度时就非常有利。

    2、 欧几里得距离

    还是用(X,Y)来表示一个人,那么两个人之间的距离就是:

     
    欧几里得距离计算

    在计算两个用户之间的相似度距离时,只取双方都评价过的商品。

    曼哈顿距离和欧几里得距离在 数据完整 的情况下效果最好。

    3、闵克夫斯基距离

    可以将曼哈顿距离和欧几里得距离归纳成一个公式,这个公式称为闵可夫斯基距离:

     
    image.png

    R值越大,单个维度的差值大小会对整体距离有更大的影响。

    4、 皮尔逊相关系数

    分数膨胀:例如用户对乐队的评分,可以发现每个用户的打分标准非常不同,A的4分相当于B的4分还是5分?

    解决方法之一就是使用皮尔逊相关系数。

    皮尔森相关系数用于衡量两个变量之间的相关性,它的值在-1到1之间,1表示完全吻合,-1表示完全相悖。

    皮尔逊相关系数的计算公式是:

     
    image.png

    上面的公式除了看起来比较复杂,另一个问题是要获得计算结果必须对数据做多次便利,好在有另外一个公式,能够计算皮尔逊相关系数的近似值:

     
    image.png

    这个公式看起来更加复杂,而且计算结果不太稳定,有一定误差存在,但是最大的有点是用代码实现的时候可以只遍历一次数据。

    5、 余弦相似度

    余弦相似度的计算中会略过这些非零值。它的计算公式是:

     
    image.png

    举个例子:

     
    image.png

    总结

    该选择哪种相似度计算: 如果数据存在“分数膨胀”,就是用皮尔逊相关系数。

    如果数据之间比较“密集”,数据比较完整,变量之间基本存在公有值,且这些距离数据是非常重要的,那就使用欧几里得或曼哈顿距离。
    (空缺值处理:用0代替空缺值的方法可能会造成较大误差,“平均值”填充效果好于0值填充)

    如果数据是稀疏的,则使用余弦相似度。



    转自:https://www.jianshu.com/p/67f8bd5fc7ad
  • 相关阅读:
    paip.Answer 3.0 注册功能SQL注入漏洞解决方案
    paip.PHPasp—jsp实现事件机制 WEBFORM式开发
    paip.SQL特殊字符转义字符处理
    paip.提升效率更改数组LIST对象值for与FOREACH
    paip.提升效率源码生成流程图工具
    paip.提升安全性动态KEY
    paip.regf文件读取与编辑
    paip.提升开发效率终极方法组件化及其障碍
    提升安全性用户资金防篡改
    paip.提升安全性360,WI,AWVS三款WEB程序安全检测软件使用总结
  • 原文地址:https://www.cnblogs.com/luodaxia/p/12699426.html
Copyright © 2011-2022 走看看