推荐系统矩阵分解的直观理解

内容来自 How does Netflix recommend movies? Matrix Factorization ( https://www.youtube.com/watch?v=ZspR5PZemcs ),讲得非常清晰易懂

代码在 https://github.com/yanneta/pytorch-tutorials/blob/master/collaborative-filtering-nn.ipynb

我们可以假设每个人和每个电影有内在的一些feature,假如考虑两个feature,Comedy和Action:

  • 每个电影包含的两部分的量和每个人对两部分的喜爱与否是下表所示:
    • 分解量的直观理解
    • 这里√可以写成1,×可以写成0,所以预期评分就是两部分的内积
  • 最后可以算出一个评分表,就代表每个人对于电影的喜爱程度:
    • 算出的矩阵

左边的两个矩阵相对较小,而右边的矩阵相对较大。这样做也可以起到节省存储空间的作用。

矩阵表示

也可以用图的方式来观察,相当于是有中间的feature部分:

图形式

分解的时候可以用梯度下降的方式,先给一个随机值再更新,使用平方求和的方式算误差。

Error function