发布于 

机器学习VII - 推荐系统(Recommender System)

10. 推荐系统(Recommender System)

10.1 基于内容推荐(Content Based Recommendations)

推荐系统的目的是根据用户的历史评分的特征,以及产品的特征,对客人进行推荐。

定义:

$n_u$ 用户量(No. of Users)

$n_m$ 电影量(No. of Movies)

$r(i, j) = 1$ 当用户$i$给电影$j$进行了评分

$y^{(i,j)}$ 用户$i$给电影$j$的评分

以电影网站为例,我们目前有以下数据:

电影 用户A 用户B 用户C 用户D
Love at Last 5 5 0 0
Romance Forever 5 ? ? 0
Cute Puppies of Love ? 4 0 ?
Nonstop Car Chase 0 0 5 4
Sword and Karate 0 0 5 ?

该如何预测用户对于没有评分的电影,从而进行推荐呢?我们需要根据已有的评分,计算电影的特征$x1, x2$(分别代表浪漫性和动作性),以及用户对于电影特征的偏好$\theta$

电影 用户A 用户B 用户C 用户D $x_1$ $x_2$
Love at Last 5 5 0 0 0.9 0
Romance Forever 5 0 1 0.01
Cute Puppies of Love 4 0 0.99 0
Nonstop Car Chase 0 0 5 4 0.1 1.0
Sword and Karate 0 0 5 0 0.9

假设用户A对于电影的$\theta^T = [0\quad 5\quad 0]$,则预测评分为4.95

计算电影的特征算法如下,

根据$\theta^{(1)}, \theta^{(2)},…, \theta^{(n_u)}$,学习$x^{(1)}, x^{(2)}, …, x^{(n_m)}$:

计算用户对于不同电影特征的偏好$\theta$的算法如下,

10.2 协同过滤(Collaborative Filtering)

上面我们说了,需要根据$\theta$来预测$x$。但是该如何获得$\theta$呢?我们同样需要根据$x$来计算$\theta$。理念是随机一个很小的$\theta$作为起始,然后预测$x$,然后矫正$\theta$,等等。

代价函数如下:

步骤为:

  1. 初始化$x^{(1)}, …, x^{(n_m)}, \theta^{(1)}, …, \theta^{(n_u)}为一个随机的较小的值

  2. 最小化代价函数,例如$for \ \ j = 1, …, n_u, i = 1, …, n_m:$

  3. 根据用户的$\theta$来计算$\theta^Tx$以预测评分