矩阵分解模型MF如何进行在线更新

目前在评分预测方面,Matrix factorization模型是performance最好的一个模型。但它的缺点是整个模型训练完后是静态的。所谓静态是指模型无法对更新做出灵活的改变。而更新在现实情境下十分常见的,比如用户新评价了一个物品,一个新用户注册了,一个新物品被添加了。这就要求模型能较好地反映出这些变化。那为什么即使用SGD训练模型,也不能直接在评分r_ij对应的用户i特征向量和物品j特征向量更新呢?因为对SGD来说,顺序很重要。它训练的过程是:

for i in 1:总共要迭代的次数

   for j in 1:物品个数
           使用物品 j 更新模型
   end

end


因此,拿新来的评分直接更新原有的模型会产生不同的更新序列。[1]指出,对于现有的评分集合R和新来的评分r,分别使用R和R∪r更新模型,产生的模型整体上差别应该不大;而且若该评分对应的用户(物品)已给出(获得)很多的评分,那么该用户(物品)对应的特征向量也不需要更新。结合上述两点,要依据新评分更新模型时,只用更新对应用户(物品)的参数,而保持其他参数不变即可。


但是如何判断要不要依据新评分更新模型呢?作者提出了两点:①更新的概率随用户评论增多而减少②看现有评分能不能足够好地预测该新评分。若可以则忽略该新评分,否则更新。个人觉得第二种方法十分reasonable,因为就算用户评论的物品再多,没有代表性的话,对用户特征贡献度也是不大的。作者在Netflix和Moivelen上的实验显示,这样的更新策略能很好地近似使用所有评分训练得到的模型。


最后,值得指出的是作者在MF中引入了kernel函数。Kernel函数本身可以是线性的,多项式的,或者是RBF等等。从论文的数据看,logistic kernel在文中获得了最好的性能。


参考文献:

[1]Online-Updating Regularized Kernel Matrix Factorization Models for Large-Scale Recommender Systems

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值