(1)基于内容的推荐系统
𝑥1代表电影的浪漫程度,𝑥2代表电影的动作程度
增加一个特征常量X0=1,如=[1,0.99,0],假设参数向量𝜃(1)=[0,5,0]
代价函数。针对用户 𝑗,该线性回归模型的代价为预测误差的平方和,加上正则化项:
𝑖: 𝑟(𝑖,𝑗)表示我们只计算那些用户 𝑗 评过分的电影 ,m不影响求最小值,去掉
上面只是针对一个用户的,为了学习所有用户,将所有用户的代价函数求和,即:
如果用梯度下降求解代价函数的最小值,则对代价函数求导后带入的结果为:
(2)协同过滤( Collaborative Filtering )
在上一个例子当中,利用电影特征训练出了每一位用户参数。如果我们拥有用户参数,也可以训练得出电影特征。如下:
如果既没有电影特征,也没有用户参数,则可以用协同过滤算法同时学习这两者。我们的优化目标便改为同时针对𝑥和𝜃进行。
对代价函数求偏导数的结果如下:
注:在协同过滤从算法中,我们通常不使用方差项,如果需要的话,算法会自动学得。协同过滤算法使用步骤如下:
(3)协同过滤算法
(4)向量化:低秩矩阵分解
如继续以上电影例子。
左边数据转为右边矩阵
则矩阵Y所对应的预测值矩阵如下:
整理一下x和θ:
(5)实现细节:均值归一化
对于下面的用户数据,如果新增一个用户Eve,没有任何电影的评价
因此,首先对结果矩阵Y做均值归一化处理,将每一个用户对某一个电影的评分减去所有用户对该电影评分的平均值,如下:
Y = Y - u
之后利用新的Y矩阵训练算法。如果我们要用新训练出来的算法预测评分,则需要将平均值加回去
新模型会认为她给每部电影的评分都是该电影的平均分