您的位置:首页 > 大数据 > 人工智能

结合因式分解(SVD++)与近邻模型的混合协同过滤推荐系统

2017-12-25 16:25 477 查看

一、 介绍

推荐系统现在的应用已经非常广泛了,协同过滤(CF)是一种常见的推荐系统,仅根据用户过去的行为来进行推荐,不需要domain knowledge,也不需要进行大规模的数据收集。CF又分为 Neighborhood model (比如User-based 和 Item-based) 和 Latent factor model (例如SVD)。Neighborhood models 可以发现局部的强关联,但是不能发现全局性的特征和关联(因为其本质上是KNN),  Latent
factor model 可以挖掘全局性特征,却不能发现局部强关联。因此本文介绍的混合推荐系统将这两种模型结合起来,以期待既挖掘出局部强特征,又保留全局性特征。CF 算法的 Baseline estimates 是


其中 μ 代表所有物品的平均评分,  bu 代表用户的个人偏差,即用户 u 的平均评分相对于 μ 的偏差,bi 代表该物品相对于 μ 的偏差,三者相加之和是用户 u 对物品 i 的预测得分。Baseline 的损失函数如下,其中 lambda 1 是正则化系数,

代表已知的用户 u 对物品 i 的评分,K 是所有已知评分的集合。

是用户
u 对 物品 i 的预测得分。

    


二、 Neighborhood models
 

对物品相似度的计算有各种不同的方法,jaccard、cosin similarity等,SVD++ 论文中所采用的方法是

,其中
nij 是物品 i 和 j 共同被用户打分过的次数, pij 是物品 i 和 j 的被打分向量的皮尔森系数, lambda 2 是正则化系数,控制除数不为0,且当 nij 较小时,两物品的相似度的权重也较低,经验取值是100(具体应用要根据具体的数据集来定)。依据该相似度度量方法, item-based Neighborhood model 的预测公式如下,

在 baseline 的基础上增加了对被预测物品的各相似物品的误差的拟合,各相似物品的误差权重即为两者相似度,并对误差之和归一化。

其中 Sk 意为与物品 i 较像的 k 个物品的集合。



该模型具有可解释性、易实现等优势,缺点是如果用户 u 没有对物品 i 的相似物品打过分,预测得分就会变成 baseline, 而且只考虑 i 的相似物品集,未考虑全局特征。

三、 Latent factor models

这个类型的模型有很多,在这里我们使用 SVD 模型。SVD 模型的预测公式为:

 其中 pu 来自于对 用户-物品打分矩阵 分解出来的 low rank 矩阵 P,是用户 u 的特征向量,qi 来自于分解出的 low rank 矩阵Q,是物品 i 的特征向量。分解过程可以使用 ALS 算法等。由于打分矩阵是稀疏的,缺失值的处理显得至关重要。可以用
0 或者均值,或者其余模型的预测值来填补,不过由于填补之后运算量变大,且填补的值本身带有很大的误差,在这里我们不进行缺失值填补,只对已知的打分数值进行拟合。拟合过程为



四、  隐式反馈

打分是用户对数据集的显式反馈,还有一些隐式反馈,如点击而未打分等。 SVD++ 综合利用了显式反馈和隐式反馈,使用更多的反馈数据可以提高模型的准确度。

五、 新 Neighborhood model

在增加隐式反馈的基础上,我们改进一下上面的Neighborhood model, 第一步将预测公式改进为



这里有两个较大的改动,一个是用 wij 代替 sij,之前的 sij 是基于皮尔逊系数的物品之间的相似度,这里的 wij 则是通过学习来得到的权重系数,不止局限于有共同打分记录的物品间,而是全局每两个物品之间都会有一个权重系数,并且未对 wij 进行归一化操作。这样,当两个物品的关联系数较小时,哪怕物品 j 的 baseline 拟合误差很大,对物品 i 的影响也很小。而当两个物品的关联系数很大时,哪怕物品 j 的baseline拟合误差很小,也会对
i 产生较大影响。

第二步的改动是



与第一步的区别是加了 cij, cij 是另一组需要学习的权重系数,和 wij区别在于来自的集合不同。 wij 中的物品 j 来自于显式反馈集合 R ,即物品 i j 被共同打过分; 而 cij 中的物品 j 来自于隐式反馈集合 N ,即物品 i j 可能没被打过分,但被同一用户点击过。 

我们可以看到,在上面的公式中,有较多打分行为或隐式行为的用户会更多地偏离 baseline estimates,有较少行为的用户则会更接近于 baseline 的预测。而这有些过于强调了两类用户的不同,因此,第三步改进如下,加入了对行为次数的约束。



为了减少模型复杂度,可以做进一步改进,公式如下。新公式的集合上方有 k 意味着只考虑与物品 i 最接近的 k 个物品。当k取向于无穷大时,此公式趋向于上一公式。这样可以大大减少要学习的系数。



相应的损失函数如下:



其对应的系数更新公式如下



六、 Asymmetric-SVD 与 SVD++

在 Latent Factor Model 将打分矩阵分解为用户特征矩阵和新闻特征矩阵的基础上,对用户向量进一步改进。预测公式如下,用该用户打过分及点击过的物品的向量来代表用户向量。xj 代表被该用户打分过(显式)的物品 j 的向量, yj 代表被该用户点击过(隐式)的物品 j 的向量。这里,我们以用户 u 有过记录的物品来替代单一的用户向量,并考虑了隐式记录,使得结果更加精确。好处是首先用户数目通常比物品数目多,用物品向量代表用户向量会降低模型复杂度,要学习的系数更少;其二是当新用户加入时,当他有了一点记录时,我们可以迅速用他有记录的物品的向量来代表该用户,而不用重新拟合模型。
当然,想将新物品加入这个推荐系统的时候,就需要收集数据之后重新训练模型了。该模型被称为 Asymmetric-SVD。



学习过程如下



更直观的,可以用下面的公式来预测得分,不考虑隐式数据,而是将分解出来的用户向量与显式反馈的向量相加。这也就是 SVD++



七、 混合模型

经过这么多步改进,终于到了我们的混合模型了,预测公式如下,将 SVD++  与我们的新 Neighborhood model 结合起来,既考虑到全局特征,
又考虑到局部强关联。第一部分是 baseline es
90ca
timates,也就是我们最直观的预测;第二部分提供了 user profile 与 item profile 的结合与互动。最后一部分,
是根据物品之间局部强关联,对预测结果进行的微调,用以学习局部特征。



学习过程如下,eui 代表拟合误差。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息