说明
1.SVD++相对SVD做了进一步的改进,主要的改进点还是在于兴趣矩阵的计算上, 相对于之前的兴趣度计算方式,就入了更多的特征项 来作为更好的评估依据,其主要增加了增加了用户对商品行为的隐式反馈向量的计算get_Yi ,训练,更新;以及用户对商品的行为集合构建。
2.其相对SVD的调整主要在这里把兴趣公式改成下式,其相对SVD结构,加入了右边的形式,通过隐式参数形式讲用户的喜好体现在模型中,其中Iu是用户u评论过的物品的集合,yj为隐藏的评价了物品j的个人喜好偏置,也通过梯度下降算法优化。这里的-1/2是个可调节的参数,具体新加内容的计算过程可以参见代码中的 getY函数。
。
代码实现: rating = self.avg + self.bi[iid] + self.bu[uid] + np.sum(self.qi[iid] * (self.pu[uid] + u_impl_prf))
代码
数据集下载地址: https://pan.baidu.com/s/1D4H4dMDdp-5P6B7mebAIVQ 提取码:0i46
因为兴趣计算式比SVD更复杂,所以其计算时间是比较漫长的,但是效果要比SVD好得多。
# -*- encoding:utf-8 -*-
# author: wangle
import numpy as np
import random
import time
import pickle
'''
可以参考知乎这里的说明, https://zhuanlan.zhihu.com/