基于用户的推荐算法和基于商品的推荐算法

基于用户的协同过滤

    如图1所示,在推荐系统中,用m×n的打分矩阵表示用户对物品的喜好情况,一般用打分来表示用户对商品的喜好程度,分数越高表示该用户对这个商品越感兴趣,而数值为空表示不了解或是没有买过这个商品。

基于用户的推荐算法和基于商品的推荐算法_第1张图片 

图1 用于个性化推荐系统的打分矩阵

    如图2所示,基于用户的协同过滤推荐算法是指找到与待推荐商品的用户u兴趣爱好最为相似的K个用户,根据他们的兴趣爱好将他们喜欢的商品视为用户u可能会感兴趣的商品对用户u进行推荐。

基于用户的推荐算法和基于商品的推荐算法_第2张图片 

图2 基于用户的协同过滤算法

    从以上介绍可以看出,基于用户的协同过滤推荐算法主要分为两步,第一步是求出用户之间的相似度,第二步是根据用户之间的相似度找出与待推荐的用户最为相似的几个用户并根据他们的兴趣爱好向待推荐用户推荐其可能会感兴趣的商品。

    用户之间的相似度的计算主要可以通过Jaccard公式和余弦相似度公式得到。

    Jaccard公式如下:


    余弦相似度公式为:


    其中,N(u)为用户u感兴趣的商品,N(v)为用户v感兴趣的商品。

    而计算用户u对商品i的感兴趣程度打分公式如下:


    S(u,K)包含了和用户u兴趣最接近的K个用户,N(i)表示对商品i有过打分行为的用户集合,Wuv表示计算出的用户u和用户v的兴趣相似度,rvi表示用户v对商品i打的分数。

    得到了用户u对所有未打分商品的感兴趣程度分数后,将分数最高的几个商品最为用户u最有可能感兴趣的商品推荐给用户u。

基于商品的协同过滤

    基于用户的协同过滤基本思想非常简单,就是找到志同道合的朋友,并把朋友感兴趣的而用户没有接触过的商品推荐给用户。

    但是这有一个问题,由于新用户的注册量非常高,基于用户的协同过滤推荐需要计算新用户和之前的用户之间的相似度,这会将数据稀疏,延展性差等问题暴露的非常明显。

    所以基于商品的协同过滤方法被提出,相较于用户之间的相似度,商品之间的相似度相对是静态的,当新用户注册并有了一些自己感兴趣的商品信息时,无需再进行计算,直接根据之前存储的商品之间的相似度,将用户可能感兴趣的商品推荐给用户。

    基于用户的推荐算法和基于商品的推荐算法_第3张图片

图3 基于商品的协同过滤

  可以看出基于商品的协同过滤推荐算法也是分为两步,第一步是根据数据库中已有的信息求出商品的相似度,第二步是利用求出的商品之间的相似度计算用户对某种商品可能的兴趣程度。

     商品之间的相似度可以利用皮尔逊相似度,余弦相似度或是改进的余弦相似度来进行计算。

     皮尔逊相似度:


     U表示所有用户的集合,Ru,i表示用户u对商品i的打分,Ru,j表示用户u对商品j的打分,RiRj分别表示用户对商品i和商品j的评分的平均值。

     余弦相似度计算商品i和商品j的相似度的公式为:

  

    i其中表示在打分矩阵中所有用户对商品i的打分(若没有打分则默认置为0)构成的向量,j表示打分矩阵中所有用户对商品j打分构成的向量。分子是两个向量的内积。

    由于余弦相似度并没有考虑到用户打分尺度的问题,比如有人喜欢给高分而有人喜欢给低分,由于这种打分习惯的不同,有可能计算出来的相似度和实际差距很大,所以为了解决这个问题,提出了修正的余弦相似度计算。具体公式如下:

    其中Ru,iRu,j表示用户u对商品i和j的打分,Ru表示用户u对所有商品打分的平均值。 

    用于预测的打分函数公式则可以如下定义:

    其中,Si,N为物品i和物品N之间的相似度,Ru,N为用户u对物品N的打分。这个公式的意义相当于是对用户u对商品i的可能得分取了一个加权平均。


参考文献:

1.Item-Based Collaborative Filtering Recommendation Algorithms

2.赵晨婷,马春娥.探索推荐引擎内部的秘密2部分: 深入推荐引擎相关  算法协同过滤[EB/OL].(2012-02-13)[2017-06-12].http://topgeek.org/blog/2012/02/13/探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎/

你可能感兴趣的:(数据挖掘)