Collaborative Filtering 协同过滤

用户-用户过滤

  1. 数据为打分矩阵,每一行代表一个用户,每一列代表一样商品,每一个元素代表用户对商品的评分
  2. 要预测的是:用户x,对商品i的打分是多少
  3. 步骤:
    找出与x打分“近似”且对商品i打过分的k个用户的集合N
    根据N中用户对商品i打分的情况进行“聚合”,输出为预测值

示例数据:

直觉上来看AB之间的“近似”程度应该> AC

考虑几个“近似”程度的度量:

  1. Jaccard相似度
  2. cosine相似度

Jaccard相似度:

发现AB相似度反而小于AC,因为Jaccard相似度的计算并不需要打分分值。

cosine相似度:

发现AB的相似度仅仅略高于AC。

修正:对每一行(每个用户),将其各个打分分值均减去该用户的打分平均值。这样可以消除一些偏差(消除普遍喜欢打高分和普遍喜欢打低分的用户之间的差异)。

用户-用户协同过滤:

  1. 找出给商品i打过分的用户中,与用户u打分情况最相似的k个用户
  2. 对这k个用户给商品i的打分进行聚合:
    选择1:平均值
    选择2:用相似度修正的平均数

预测例子数据中“A”用户对商品"HP2"的打分

如果只考虑与A最近似的一个给i打过分的用户,则该用户为B,预测结果为5

如果考虑与A最近似的两个给i打过分的用户,则用户为B和D,如果仅是简单平均数,预测结果为4

如果考虑与A最近似的两个给i打过分的用户,则用户为B和D,如果是相似度修正的平均数,预测结果为5(因为D与A非常的不相似)

商品-商品过滤

与用户-用户过滤类似,在用户曾经打过分的商品中,找出与要预测的商品最“近似”的若干商品,然后根据用户对这些近似商品的打分情况,对目标商品进行预测。

协同过滤中,最耗时的步骤是找出最相似的k个用户/商品,处理方法:

  1. LSH
  2. 聚类
  3. 降维

协同过滤的优缺点:

  • 优点:
    不需要特征工程、特征选取,对任意类型商品均可
  • 缺点:
    冷启动:需要系统中有足够多的初始用户评价才可以发挥作用
    稀疏:打分矩阵非常稀疏
    未有人打过分的商品,永远不会被推荐
    倾向于推荐流行产品

克服方法:

  1. 将协同过滤方法与基于内容的方法进行结合
  2. 构建多个推荐系统,然后对推荐结果进行聚合

全局基准方法:

如果找不到相似的用户/商品,可以用全局基准作为预测。

  1. 系统中所有评分的均值mu_M
  2. 用户x所给出所有评分的均值mu_x
  3. 要预测的商品i所受到的所有评分的均值mu_i
  4. 预测全局基准分为:mu_x + mu_i - mu_M

通常会将全局基准方法结合进最终的打分聚合中。

Leave a Reply

Your email address will not be published. Required fields are marked *