背景知识:

  1. 协同过滤:简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,即群体的智慧
  2. 矩阵分解:将(用户、物品、行为)矩阵分解成(用户、隐向量)和(物品,隐向量)两个子矩阵,通过隐向量实现推荐
  3. ALS:交替最小二乘法,先假设U的初始值U(0),可以根据U(0)可以计算出V(0),再根据V(0)计算出U(1),迭代到收敛

演示目标:

  1. 实现矩阵分解,得到user embedding和item embedding
  2. 对于目标user,近邻搜索得到推荐的item列表(需要去除已看、需要查询电影名称)

延伸:

  1. user embedding自身的搜索,可以实现兴趣相投的人的推荐
  2. item embedding自身的搜索,可以实现相关推荐

image.png

实现sparkALS的矩阵分解
对于给定用户算出可能最喜欢的10个电影

思路:

  1. 查询目标用户的embedding
  2. 计算目标用户embedding跟所有movie embedding的sim value
  3. 计算用户看过的集合
  4. 第2步骤过滤掉看过的集合,然后挑选出前10个电影
计算 user embedding 和 item embedding 的相似度
查询ID的电影名和信息展现给用户