相似度计算、协同过滤、推荐系统(一)

目录

一、相似度计算方法

1.1欧几里得距离(欧氏距离)

1.2皮尔逊相关系数(百度用来判断tiele相似度的算法)

1.3 Cosine 相似度

二、协同过滤

2.1基于用户的协同过滤(用的很少了)

2.1.1 基于用户的协同过滤要解决的问题

2.1.2 基于用户协同过滤要解决的问题

2.1.3 针对存在问题的基础解决方案

2.1.4 基于用户的协同过滤为什么不流行

2.2 基于物品的协同过滤

2.2.1 基于物品协同过滤的优势

2.2.2 基于物品协同过滤的案例分析

2.3 基于用户和物品的协同过滤算法比较

三、冷启动问题


一、相似度计算方法

1.1欧几里得距离(欧氏距离)

        最初用于计算欧几里德空间中两个点的距离,假设 x,y 是 n 维空间的两个点,它们之间的欧几里德距离是:

        可以看出,当 n=2 时,欧几里德距离就是平面上两个点的距离。当用欧几里德距离表示相似度,一般采用以下公式进行转换:距离越小,相似度越大。

       类名:EuclideanDistanceSimilarity

       原理:利用欧式距离d定义的相似度s,s=1 / (1+d)。

      范围:[0,1],值越大,说明d越小,也就是距离越近,则相似度越大。

       说明:同皮尔森相似度一样,该相似度也没有考虑重叠数对结果的影响,同样地,Mahout通  过增加一个枚举类型(Weighting)的参数来使得重叠数也成为计算相似度的影响因子。

公式如下:

1.2皮尔逊相关系数(百度用来判断tiele相似度的算法)

      皮尔逊相关系数一般用于计算两个定距变量间联系的紧密程度,它的取值在 [-1,+1] 之间。           sx, sy是 x 和 y 的样品标准偏差。

      类名:PearsonCorrelationSimilarity

      原理:用来反映两个变量线性相关程度的统计量

      范围:[-1,1],绝对值越大,说明相关性越强,负相关对于推荐的意义小。

      说明:1、 不考虑重叠的数量;2、 如果只有一项重叠,无法计算相似性(计算过程被除数有n-1);3、 如果重叠的值都相等,也无法计算相似性(标准差为0,做除数)。

       该相似度并不是最好的选择,也不是最坏的选择,只是因为其容易理解,在早期研究中经常被提起。使用Pearson线性相关系数必须假设数据是成对地从正态分布中取得的,并且数据至少在逻辑范畴内必须是等间距的数据。Mahout中,为皮尔森相关计算提供了一个扩展,通过增加一个枚举类型(Weighting)的参数来使得重叠数也成为计算相似度的影响因子。

公式如下:

1.3 Cosine 相似度

     Cosine 相似度被广泛应用于计算文档数据的相似度:

     类名: UncenteredCosineSimilarity

     原理:多维空间两点与所设定的点形成夹角的余弦值。

     范围:[-1,1],值越大,说明夹角越大,两点相距就越远,相似度就越小。

     说明:在数学表达中,如果对两个项的属性进行了数据中心化,计算出来的余弦相似度和皮尔森相似度是一样的,在mahout中,实现了数据中心化的过程,所以皮尔森相似度值也是数据中心化后的余弦相似度。另外在新版本中,Mahout提供了UncenteredCosineSimilarity类作为计算非中心化数据的余弦相似度。

公式如下ss:

二、协同过滤

2.1基于用户的协同过滤(用的很少了)

例如有3个用户对4个产品进行打分如下所示:

        A,B,C可以组成评分向量与购买向量。通过相似度计算,A与B,C比较可以发现,A与C最近,例如C买了物品A,C,D,而用户A买了A,C所以可以将D推荐给用户A

2.1.1 基于用户的协同过滤要解决的问题

    (1)已知用户的评分矩阵Matrix R(一般都是非常稀疏的)

    (2)我们需要推断出矩阵中空格empty cells 处的值

       

2.1.2 基于用户协同过滤要解决的问题

     (1)对于一个新用户(什么都没有购买)很难找到邻居用户(不好推荐)

     (2)对于一个物品(好的物品,也是用户需要的),所有最近的邻居都在其上没有多少打分(但是恰巧最近的邻居都没有买这个物品,那么这个好物品就卖不出去了)

2.1.3 针对存在问题的基础解决方案

      (1)相似度计算最好使用皮尔逊相似度

    (2)考虑共同打分物体的数目,如乘上min(n,N)/N 其中n表示共同打分数,N表示指定的阈值

    (3)对打分进行归一化处理

    (4)设置一个相似度阈值

2.1.4 基于用户的协同过滤为什么不流行

     (1)稀疏问题:由于商品的数量太多,而人购买的少,所以对于某一个商品的评价矩阵大多数都是0,只有少数的1

     (2)由于协同过滤是基于统计的方式进行计算的,对于数百万的用户两两之间计算相似度,计算量太大

     (3)人是善变的,今天喜欢,过几天就不喜欢了

2.2 基于物品的协同过滤

     有三个用户对三个物品的评分如下:

     通过相似度计算发现物品A和物品C的相似度最高,因此我们就可以把物品C推荐给用户C

2.2.1 基于物品协同过滤的优势

      (1)计算性能高,通常用户的数量远大于物品的数量

      (2)可预先计算保留,物品并不善变

2.2.2 基于物品协同过滤的案例分析

        有六个电源,12个用户对其进行打分如下所示:

      例如我现在想知道第五个用户是否喜欢第一类电源?

      假如计算大于3.5表示喜欢,则进行推荐,否则表示不喜欢不进行推荐

      step1:计算相似度(选取皮尔森相似度)。上图中右图表示计算出的相似度,正的表示正相关,负的表示负相关

      step2:判断。通过观察发现最大的相似度是0.41 和0.59

      step3:计算

      step4:结论。发现2.6<3.5小于定的阈值所有不推荐。

2.3 基于用户和物品的协同过滤算法比较

三、冷启动问题

      由于在协同过滤的时候,不管是基于用户的协同过滤还是基于物品的都是在乎的是评分,而没用在意物品的内在属性。所以两者协同过滤方式都存在冷启动问题。

参考资料:

https://www.cnblogs.com/luodaxia/p/12699545.html

 

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI炮灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值