协同过滤推荐算法是最早也是比较著名的推荐算法。主要功能是预测和推荐。该算法通过挖掘历史用户行为数据发现用户偏好,根据不同偏好对用户进行分组,推荐口味相近的产品。协同过滤推荐算法分为两类:基于用户的协同过滤算法和基于项目的协同过滤算法。简单来说:人聚成群,物分群。下面分别介绍这两类推荐算法的原理和实现方法。
基于用户的协同过滤算法(user-based)
基于用户的协同过滤算法是通过用户的历史行为数据,发现用户对产品或内容(如产品购买、收藏、内容评论或分享)的喜好,并对这些喜好进行衡量和评分。根据不同用户对同一产品或内容的态度和偏好,计算用户之间的关系。在具有相同偏好的用户中推荐产品。简单来说,如果用户 A 和 B 都购买了三本书 x、y 和 z,并给予 5 星好评。那么 A 和 B 属于同一类用户。A读过的书w也可以推荐给用户B。
1.寻找有相似偏好的用户
我们模拟五个用户对两个项目的评分来说明如何通过他们对不同项目的态度和偏好来找到相似的用户。在示例中,5 个用户分别对两个项目进行评分。这里的分数可能代表真实的购买,也可能是用户对产品不同行为的量化指标。例如浏览产品的次数、向朋友推荐产品的次数、收藏、分享或评论等。这些行为都可以表明用户对产品的态度和偏好。
从表中很难直观地找到五个用户之间的关系。当我们用散点图展示五个用户在两个产品上的得分后,用户之间的关系就很容易找到了。散点图中,Y轴是物品1的评分,X轴是物品2的评分。通过用户分布可以发现,A、C、D三个用户比较接近. 用户 A(3.3 6.5) 和用户 C(3.6 6.3),用户 D(3.4 < @5.8) 两个item的评分比较接近,用户E和用户B组成另外一组。
散点图虽然直观,但无法投入实际应用,也无法准确衡量用户之间的关系。因此,我们需要通过数字准确衡量用户之间的关系,并根据这些关系完成产品的推荐。
欧几里得距离评估
欧式距离评估是一种比较简单的用户关系评估方法。原理是通过计算散点图中两个用户之间的距离来判断不同用户的偏好是否相同。以下是欧几里得距离评估的计算公式。
通过公式,我们得到了五个用户之间的欧几里得系数,即用户之间的距离。系数越小,说明两个用户之间的距离越近,偏好越接近。但是,这里有一个问题。太小的值可能无法准确地表示不同用户之间的距离差异。因此,我们取得到的系数的倒数,使用户之间的距离近似接近,取值越大。在下表中,可以发现用户A&C、用户A&D和用户C&D比较接近。同时,用户B&E的距离也比较近。这与我们之前在散点图中看到的一致。
皮尔逊相关分数
相关性评估是另一种计算用户之间关系的方法。计算起来比欧式距离评估稍微复杂一些,但是在评分数据不标准化的情况下,皮尔逊相关性评估可以给出更好的结果。下面是多个用户对多个项目进行评分的示例。这个例子比前两项要复杂一些,但也更接近实物。我们按 相关性对用户进行分组并推荐产品。
皮尔逊相关系数
皮尔逊相关系数计算如下基于用户的协同过滤算法(--)推荐算法,结果是一个介于-1和1之间的系数。这个系数用来描述两个用户之间的联系强度。
相关系数的分类
我们通过计算 5 个用户对 5 个项目的评分来获得用户之间的相似度数据。在这里我们可以看到用户 A&B、C&D、C&E 和 D&E 之间的相似度很高。接下来,我们可以根据相似度向用户推荐产品。
2.为相似用户提供推荐商品为用户C推荐商品
当我们需要向用户 C 推荐产品时,首先查看之前的相似度列表协同过滤推荐算法java,发现用户 C 与用户 D 和 E 的相似度很高。也就是说,这三个用户是一个偏好相同的群体。因此,我们可以向用户 C 推荐项目 D 和 E。但是这里有一个问题。我们不能直接推荐上述第 1 项到第 5 项的产品。因为用户C浏览或购买了这些商品。建议不能重复。因此,我们要推荐用户 C 没有浏览或购买的产品。
加权排名推荐
我们提取了用户 D 和用户 E 评价的项目 A - 项目 F 的其他 5 个项目。对不同产品的分数进行相似度加权。这5个商品按加权结果排序,推荐给用户C。这样用户C就得到了用户D和E评价过的与他的喜好相似的产品。在具体的推荐顺序和展示中,我们按照用户 D 与用户 E 和用户 C 的相似度进行排序。
以上是基于用户的协同过滤算法。该算法依赖于用户的历史行为数据来计算相关性。也就是说,必须有一定的数据积累(冷启动问题)。对于新网站或者数据较少的网站,还有基于item的协同过滤算法。
基于item的协同过滤算法(item-based)
基于项目的协同过滤算法很像基于用户的协同过滤算法,为用户交换项目。物品之间的关系是通过计算不同用户对不同物品的评分得到的。根据物品之间的关系向用户推荐相似的物品。这里的评分代表了用户对产品的态度和偏好。简单来说,如果用户A同时购买了商品1和商品2,则说明商品1和商品2是高度相关的。当用户 B 也购买了商品 1 时,可以推断出他也有购买商品 2 的需求。
1、查找相似物品
表中是两个用户对 5 个项目的评分。在这张表中,我们的用户和产品的位置是交换的,通过两个用户的评分得到五个产品之间的相似度。单从表格中还是很难找到联系的,所以我们选择通过散点图来展示。
在散点图中,X 轴和 Y 轴分别是两个用户的评分。5个项目根据获得的评分值分布在散点图中。我们可以发现项目 1、3 和 4 在用户 A 和 B 中具有相似的评分,表明这三个项目高度相关。而货物 5 和 2 在另一组中。
欧几里得距离评估
在基于item的协同过滤算法中,我们仍然可以使用欧几里得距离评估来计算不同item之间的距离和关系。以下是计算公式。
从欧几里得系数可以发现,商品之间的距离和关系与前面散点图中的表现是一致的协同过滤推荐算法java,商品1、3、4之间的距离密切相关。商品 2 和商品 5 比较接近。
皮尔逊相关分数
我们选择使用 相关性评估来计算多个用户和多个项目之间的关系。下面是 5 个用户对 5 个项目的评分表。我们使用这些分数来计算项目之间的相关性。
皮尔逊相关公式
通过计算可以发现商品1&2、商品3&4、商品3&5和商品4&5高度相似。下一步,我们可以根据这些产品之间的相关性向用户推荐产品。
2. 为用户提供基于相似物品的推荐
在这里,我们遇到了与基于用户推荐产品相同的问题。当我们需要根据产品3向用户C推荐产品时,我们需要一个新产品与现有产品的相似度列表。在前面的相似度计算中,item 3与item 4和item 5高度相似,所以我们计算得到item 4和5与其他item的相似度列表。
以下是计算得到的新产品与现有产品的相似度数据。
加权排名推荐
这里是用户 C 已经购买的产品 4 和 5 与新产品 A、B 和 C 之间的直接相似程度。我们将用户 C 对项目 4 和 5 的评分作为权重。对A、B、C项进行加权排序。首先推荐评分较高且与用户C相似度较高的产品。
- 【所有文章和图片版权归蓝鲸(王艳萍)所有。欢迎转载,但请注明转载自“蓝鲸网站分析博客”。]—
阅读更多:
文章来源:https://blog.csdn.net/czp11210/article/details/51161541