Problem Formulation
在介绍推荐系统之前,我们先以电影评分为作为开始。
现假设我们拥有类似豆瓣电影这种对电影评分的平台,有四位用户对五部电影的评分如下:

前三部电影为爱情片,后两部为动作片。从图中,我们可知四位用户对这两种类型电影的评分,其中“?”表示该用户未对相应电影评分。这时,我们希望构建一个推荐系统对这些用户未评分的电影根据用户的喜好模拟评分。
为了更好地介绍推荐系统,我们引入如下标记:
- nu:表示用户的数量
- nm:表示电影的数量
- r(i, j):表示如果用户i对电影j进行过评分,则r(i, j) = 1
- y^(i, j):表示用户i对电影j的评分
基于内容的推荐系统(Content Based Recommendations)
我们仍以电影评分为例,在该例中我们假设每部电影有两个特征变量,x1表示电影的浪漫程度,x2表示电影的武戏程度。

我们设置一个偏置特征x0 = 1,则我们可以根据之前学过的线性回归构建如下特征向量:
- x(1) = [1, 0.9, 0]T
- x(2) = [1, 1, 0]T
- x(3) = [1, 0.99, 0]T
- x(4) = [1, 0.1, 1]T
- x(5) = [1, 0, 0.9]T
除此之外,我们还可以对四位用户根据线性回归模型构建参数向量θ(j)。
现我们想要预测用户Alice对第三部电影的评分,假设θ(1) = [0, 5, 0]T,根据线性回归模型的假设函数h(x) = θTx,我们可得h(x) = 4.95。
代价函数
在介绍代价函数J(θ)之前,我们再添加一个标记(仅用于此例):m(j),其表示用户j评过分的电影数量。
我们针对用户j,其线性回归模型的代价函数J(θ)为:

进而推广至所有用户的代价函数为:

如果我们采用梯度下降算法来最小化代价函数J(θ),其数学表达式为:

网友评论