协同过滤推荐算法讲解Demo
在某项目中,在给用户推送内容的时候,需要用到协同过滤推荐算法与内容推荐算法,这里讲解一下协同过滤算法。
协同算法:预测和推荐
协同过滤算法分为两类:基于用户的协同过滤算法,和基于物品的协同过滤算法,通俗的说:人以类聚,物以群分。下面分别讲解一下这两个算法。
基于用户的协同算法
通过用户的历史数据行为数据发现用户对某种物品的内容或者物品“喜欢”(包括对物品的购买,文章的评价),并对这些物品或者物品内容进行以后的活动,(好评等等,继续浏览)。根据不同用户对相同文章或者内容态度或者偏好程度计算用户之间的关系。在有相同喜好的用户间进行文章推荐,简单的说就是如果甲乙两个用户都阅读了x,y,z三篇文章,并且点赞与评价不错,那么甲乙就属于同一种用户。
本文评分标准:总分=(用户阅读时间)/(预测阅读时间) + 点赞与否 + 转发与否 + 评论与否
阅读时间及页面停留时间。
寻找偏好相似的用户
模拟5个用户对文章进行的评分。来说明如何通过用户对不同文章的态度和偏好寻找相似的用户。
从表格中很难直观发现5个用户间的联系,我们将5个用户对2篇文章的评分用散点图表示出来后,用户间的关系就很容易发现了。在散点图中,Y轴是article1的评分,X轴是article2的评分,通过用户的分布情况可以发现,A,C,D三个用户距离较近。用户A(3.3 6.5)和用户C(3.6 6.3),用户D(3.4 5.8)对两件商品的评分较为接近。而用户E和用户B则形成了另一个群体。
欧里几得距离评价
欧几里德距离评价是一个较为简单的用户关系评价方法。原理是通过计算两个用户在散点图中的距离来判断不同的用户是否有相同的偏好。以下是欧几里德距离评价的计算公式。
通过公式我们获得了5个用户相互间的欧几里德系数,也就是用户间的距离。系数越小表示两个用户间的距离越近,偏好也越是接近。
皮尔逊相关度评价
皮尔逊相关度评价是另一种计算用户间关系的方法。他比欧几里德距离评价的计算要复杂一些,但对于评分数据不规范时皮尔逊相关度评价能够给出更好的结果。
以下是一个多用户对多篇文章进行评分的示例。这个示例比之前的两篇文章的综合评分的情况要复杂一些,但也更接近真实的情况。我们通过皮尔逊相关度评价对用户进行分组,并推荐文章。
皮尔逊相关系数
皮尔逊相关系数的计算公式如下,结果是一个在-1与1之间的系数。该系数用来说明两个用户间联系的强弱程度。
相关系数
0.8~1.0 极强相关
0.6~0.8 强相关
0.4~0.6 中等程度相关
0.2~0.4 弱相关
0.0~0.2 极弱相关或者无相关