0%

基于用户的协同过滤算法 (UserCF)

在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单。该算法 1992 年提出并用于邮件过滤系统,两年后 1994 年被 GroupLens 用于新闻过滤。一直到 2000 年,该算法都是推荐系统领域最著名的算法。

img

基本思想

核心思想:相似的用户可能喜欢相同物品。当一个用户 A 需要个性化推荐时,可以先找到和他兴趣相似的用户群体 B,然后把 B 喜欢的、并且 A 没有听说过的物品推荐给 A,这就是基于用户的协同过滤算法。

实现步骤

  1. 找到与目标用户兴趣相似的用户集合
  2. 找到这个集合中用户喜欢的、并且目标用户没有听说过的物品推荐给目标用户

发现兴趣相似的用户

协同过滤算法主要利用行为的相似度计算兴趣的相似度。

获得数据

假设目前共有 4 个用户: A、B、C、D;共有 5 个物品:a、b、c、d、e。用户与物品的关系(用户喜欢物品)如下图所示:

img

构建倒排表

建立 “物品 — 用户” 的倒排表

img

构建用户相似度矩阵

构建用户相似度矩阵 matrix,其中 matrix [A][B] 表示用户 A 和用户 B 共同喜欢的电影的数量。

img

计算用户相似度

img

基于热度惩罚的用户相似度改进

生成推荐

评测指标

对用户 $u$ 推荐 $N$ 个物品 (记为 $R (u)$ ),令用户 $u$ 在测试集上喜欢的物品集合为 $T (u)$ ,然后可以通过准确率、召回率、覆盖率评测推荐算法的精度:

召回率

准确率

覆盖率

覆盖率反映了推荐算法发掘长尾的能力,覆盖率越高,说明推荐算法越能够将长尾中的物品推荐给用户。

分子部分表示实验中所有被推荐给用户的物品数目 (集合去重),分母表示数据集中所有物品的数目。

支持一根棒棒糖!