《A Guide to Singular Value Decomp osition for Collab orative Filtering》
用户对电影的打分可以用feature建立联系:用户喜欢动作片还是科幻片,该电影是喜剧还是传记。
建立两个矩阵:每个用户对各个feature的喜欢程度,电影的各个feature程度。则两矩阵相乘的结果与原来的评分越近越好,即期望越销越好。
E=21i=1∑nj=1∑mIij(Vij−p(Ui,Mj))2+2kui=1∑n∣∣Ui∣∣2+2kmj=1∑m∣∣Mj∣∣2 其中n表示用户数目,m表示物品数目,Iij是用来表示用户i有没有对物品j评过分,因为我们只需要评过分的那些越接近越好,没评过的就不需要考虑,Vij表示训练数据中给出的评分,也就是实际评分,p(Ui,Mj)表示我们对用户i对物品j的评分的预测,结果根据两向量点乘得到,后面的两项主要是为了防止过拟合,之所以都加了系数1/2是为了等会求导方便。
用梯度下降法求解,算法流程:
1. Set the starting values of matrices U,M.
2. Repeat
- (a) Compute gradients \Delta_U and \Delta_M
- (b) Set U \leftarrow U-\mu\Delta_U , M \leftarrow M-\mu_\Delta_M .
until the vaildation RMSE start to increase
其中梯度:
∂Ui∂E=j=1∑mIij((Vij−p(Ui,Mj))Mj)−KuUi,i=1,…,n∂Mj∂E=i=1∑nIij((Vij−p(Ui,Mj))Uj)−KmMj,j=1,…,m 上述算法被称为批处理式学习算法,因为它计算的是整个矩阵。
不完全增量式学习
Ei=21i=1∑nj=1∑mIij(Vij−p(Ui,Mj))2+2kui=1∑n∣∣Ui∣∣2+2kmj=1∑mIij(∣∣Mj∣∣)2 梯度:
完全增量式学习是对每一个评分进行期望计算,期望如下:
评测效果,就是误差平方和:
基于矩阵分解的推荐算法
基于矩阵分解的推荐算法,简单入门 跟上面基本一样
参考佳文
SVD在推荐系统中的应用与实现(c++)
浅谈矩阵分解在推荐系统中的应用
非负矩阵分解(NMF)
推荐算法概览
饿了么推荐系统:从0到1
推荐系统中基于深度学习的混合协同过滤模型
推荐系统本质与网易严选实践