zoukankan      html  css  js  c++  java
  • 基于用户的相似性度量

    一:有偏好值的相似性度量

       1.基于皮尔逊相关系数的相似度

      皮尔逊相关系数是一个介于-1和1之间的数,它度量两个一一对应的数列之间的线性相关程度。也就是说,它表示两个数列中对应数字一起增大或一起减小的可能性。它度量数字一起按比例改变的倾向性,也就是说两个数列中的数字存在一个大致的线性关系。当该倾向性强时,相关值趋于1。当相关性很弱时,相关值趋于0。在负相关的情况下(一个序列的值高而另一个序列的值低),相关值趋于-1。

      数学上,皮尔逊相关系数是两个序列协方差与二者方差乘积的比值。协方差计算的是两个序列变化趋势一致的绝对量。当两个序列相对于各自的均值点向同一方向移动得越远,协方差值就越大。除以方差是为对这一变化进行归一化。

      Mahout中,用PearsonCorrelationSimilarity实现。

      2.基于欧氏距离定义相似度

      这一实现基于用户之间的距离。将用户想象成多维空间中的点(维数等于总的物品数),偏好值是坐标。这种相似性度量计算两个用户之间的欧氏距离d。欧氏距离就是各维坐标之差的平方和的平方根。这个值本身并不代表相似度,因为该值越大表示距离越远,也就是说两个用户越不相似。用户越相似,该值越小。因此,实际应用中取1/(1+d)为相似度。

      Mahout中,用EuclideanDistanceSimilarity实现。

      3.采用余弦相似性度量

      余弦相似性度量也将用户偏好值视为空间中的点,并基于此进行相似性度量。需要将用户偏好值视为n维空间中的点。现在,假设有两条从原点出发,分别到这两个点的射线。两条射线之间的夹角的余弦代表相似度值。

      Mahout中,还是用PearsonCorrelationSimilarity实现,与皮尔逊相关系数一样,因为根据数据推理,这两个相似度量的数学表达式是一样的。

      4.采用斯皮尔曼相关系数基于相对排名定义相似度

      该相关系数并非基于原始的偏好值,而是基于偏好值的相对排名来计算。它是皮尔逊相关系统的一个变体。

      Mahout中,用SpearmanCorrelationSimilarity实现。

    二:忽略偏好值的相似性度量

      1.基于谷本系数计算相似度

      谷本系数是指两个用户各自表达过偏好的两个物品集合的交集与并集大小的比值。换句话说:“它是两个偏好物品集合的交集大小与并集大小的比值。

      在Mahout中,用TanimotoCoefficientSimilarity实现。

      2.基于对数似然比更好地计算相似度

      这一相似性度量试图判断两个用户口味不相似的不可能性有多大;不可能性越大,两个用户的相似度越高。

      在Mahout中,用LogLikelihoodSimilarity实现,基于对数似然比的相似度往往优于基于谷本系数的相似度,它是一个更智能的度量标准。

    做个小推广:程序员经常久坐,颈椎毛病比较多,特别推荐ventry颈椎保健枕

  • 相关阅读:
    spring MVC 后台token防重复提交解决方案
    redis实现分布式锁
    java spring boot项目部署-上
    倒计数锁存器(CountDown Latch)和 CyclicBarrier(同步屏障)
    通过条件注解@Conditional细粒度的选择bean实例
    Netflix中的负载均衡策略
    C# lambda表达式参数的正确使用姿势
    RabbitMQ如何保证发送端消息的可靠投递-发生镜像队列发生故障转移时
    RabbitMQ如何保证发送端消息的可靠投递
    vue项目目录结构详解
  • 原文地址:https://www.cnblogs.com/longzhongren/p/4091557.html
Copyright © 2011-2022 走看看