推荐系统

例子(正)

可以把这些电影看成一个一个的样本,而评价结果看成是标签,x1,x2看成是电影的特征。

符号约定

 

 特征矩阵:

参数矩阵:

 

 思想(正)

将问题视为一个线性回归问题,定义代价函数:(这里x有1项,θ有θ0)

利用梯度下降算法或其他高级算法更新参数:

例子(反)

若已知用户的偏好θ和评分结果,倒推出每个样本(电影)的特征是什么:

思想(反)

同样采用线性回归定义代价函数,再用梯度下降之类的算法:

协同过滤算法(低秩矩阵分解)

这是一种综合改进

①先随机初始化x(1)......θ(nu)到比较小的数值,注意这里不考虑x0,θ0的偏置项。

②将以上2个代价函数相加,定义新的代价函数:

等价的矩阵表示:

 注意这里的矩阵:

X num_movies x num_features matrix of movie features
Theta num_users x num_features matrix of user features
Y num_movies x num_users matrix of user ratings of movies
R num_movies x num_users matrix, where R(i, j) = 1 if the i-th movie was rated by the j-th user,且是一个逻辑数组

③利用梯度下降算法或其他高级算法更新参数(符号标记见上):

等价的矩阵表示:

④给定一个已知θ的用户,根据训练出来的特征x,预测电影的评分:

 推荐

为了推荐与电影j相似的电影,得到其他电影的特征向量,然后计算与电影j特征向量最近的特征向量,那么就找到了相似的电影了。

 均值归一化

评分矩阵(label)(假定新来了一个用户,他没有对任何电影进行评分):

再求出每一行有数字的均值,然后更新原来的元素-均值,使得每行的均值为0

将这组新数据替换原来的标签,利用协同过滤算法学到θ和x,其中有:

修改预测公式(其中μ是之前求得的均值):

 

 

posted @ 2019-05-09 17:04  Jary霸  阅读(146)  评论(0)    收藏  举报