机器学习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$,等等。
代价函数如下:
步骤为:
初始化$x^{(1)}, …, x^{(n_m)}, \theta^{(1)}, …, \theta^{(n_u)}为一个随机的较小的值
最小化代价函数,例如$for \ \ j = 1, …, n_u, i = 1, …, n_m:$
根据用户的$\theta$来计算$\theta^Tx$以预测评分