机器学习系列24:协同过滤

  • 2019 年 10 月 7 日
  • 笔记

在上一次中,我们是先知道电影的特征,然后通过算法计算出用户的特征。下面我们来考虑一下能不能知道用户的特征,让算法学习出电影的特征呢?

我们可以看到,这个算法与之前的算法是一样的,只不过传入的特征不同而已。我们可以先随机地求出一些用户特征 θ,用这些特征计算出电影的特征 x,通过电影的特征又能更好地计算出用户的特征,不断迭代… 最终会收敛到一个最优的位置,这时用户的特征和电影的特征被计算出来,这种方法就叫协同过滤(Collaborative filtering)

为了简化一下这种方法,不让它进行多次来回重复,我们将它合并成一个代价函数,这个代价函数同时传入电影特征 x 和用户特征 θ:

它会同时最小化电影特征 x 和用户特征 θ,虽然这个代价函数看起来很长很复杂,但是仔细分析一下你就会发现,这个代价函数就是把之前的两个代价函数合并起来了而已。

如何寻找相关联的电影呢?比如说,你已经知道该用户对动作电影感兴趣,你向他推荐了一部动作电影,用户看完之后,如果你还想向他推荐动作电影该如何进行处理呢?一种方法就是计算两个电影特征的绝对值,如果绝对值比较小,就代表这两个电影高度相关,你就可以把这部电影也推荐给该用户。

最后总结一下协同过滤算法:

1.随机初始化一些用户特征 θ 和电影特征 x;

2.运用梯度下降最小化代价函数,得到最佳的用户特征 θ 及电影特征 x;

3.传入一个用户特征,该算法就可以根据之前的学习成果向该用户推荐可能感兴趣的电影。