内容来自 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部分:
分解的时候可以用梯度下降的方式,先给一个随机值再更新,使用平方求和的方式算误差。