【每周一文】Factorization Meets the Neighborhood:a Multifaceted Collaborative Filtering Model

概述

在推荐系统中,协同过滤(CF:Collaborative Filtering)算法由于其领域无关性以及比较好的推荐效果被广泛使用;
CF模型比较常用的包括最近邻方法和因子分解算法,由于这两种算法各有优缺点;该文提出了一种策略将这两种方法进行综合建模,并且可以适用于隐式反馈数据。

已有模型

最近邻方法

CF常用的有user_based和item_based两个模型,后者由于其推荐效果和可解释性比较强,比较被推荐使用。
item_based方法思路是根据用户个人偏好推荐和这些item最相关的物品。过程如下
1. 根据用户和物品的打分矩阵或者相关数据,计算物品两两之间的相似度 s(i,j) ,常用相似度算法包括皮尔逊系数、jaccard系数
2. 通常情况下相似度计算可能需要大量数据支持,对于稀疏数据需要对数据规模进行置信度加权,常用加权方法可以是 sij=nijnij+λpij
3. 用户对某物品打分公式为 rui=bui+jSki;usij(rujbuj)jSki;usij ,其中 buibui=μ+bu+bi++ Ski;u 表示在用户关注的物品集合中和物品i最相似的前K个
4. 另外为了进一步刻画效果,可以通过下面方式进行改进 rui=bui+jSki;uθuij(rujbuj) 更和用户相关

因子分解模型

因子分解模型可以将用户和物品分别映射到一个低维空间中,这样根据数据可以得到一个全局的向量表示,用于计算用户与用户、物品与物品以及用户和物品之间的相似度。
可以通过SVD分解得到向量表示,常用的方法是最优化如下问题

min rui0(ruiμbubipTuqi)2+λ(||pu||2+||qi||2+b2u+b2i)

新模型

已有模型的问题

  1. 最近邻方法根据用户已经打分过的物品,计算和这些物品最相似的物品,相当于一个局部最优问题,没有考虑全局。由于一个用户关注的物品是有限的。
  2. 因子分解模型可以得到一个全局表示,可解释性不好。

最近邻模型改进

改进1

以item_based方法为例,之前item之间的相似度都是通过数据统计得到,现在变成模型参数通过模型训练得到,即

rui=bui+jR(u)wij(rujbuj)
和之前不同点包括:
1. Item之间的相似度通过学习得到
2. 通过搜索用户所有相关的物品得到最后打分,而不是前K个
3. 模型 wij(rujbuj) 综合考虑了用户到已有物品j的喜好程度以及物品j到物品i的相关度

改进2

另外可以将隐式数据加入到模型中,则模型变为

rui=bui+jR(u)wij(rujbuj)+jN(u)cij
其中N(u)为隐式反馈数据中用户u相关的物品集合

改进3

用户偏置项也可以通过模型学习得到,而不是统计得到,即 bui=μ+bu+bi 都设置为模型参数,通过学习得到,这样可以进一步去除用户和物品偏置,这样更容易推荐长尾数据。

改进4

为了解决模型中参数两级分化问题,对邻域个数进行归一,即

rui=bui+|R(u)|12jR(u)wij(rujbuj)+|N(u)|12jN(u)cij
为了降低复杂度可以提前去除一些不相关的物品集合,即定义 Rk=R(u)Sk(i) 去代替全部邻域数据

求解算法

可以通过梯度方法进行求解

SVD模型改进

异步SVD

模型表示为

rui=bui+qTi(|R(u)|12jR(u)xj(rujbuj)+|N(u)|12jN(u)yj)

其中参数 qi,xj,yj 都是物品在低维空间中的表示。
主要思路是将用户表示为其相关物品向量的累加。
好处

  1. 更少的参数,模型仅和物品有效个数相关,一般情况下用户个数会更多。
    2.对于新用户可以解决冷启动问题,用户表示直接通过用户点击的物品得到
  2. 可解释性相对于原始模型较强
  3. 可以更有效的集成隐式反馈数据,可以通过调整隐式向量系数得到。

SVD++

为了进一步集成隐式反馈数据,可以通过直接将隐式数据反馈到模型中,

rui=bui+qTi(pu+|N(u)|12jN(u)yj)
相当于对原始模型的直接改进。

模型集成

将以上两个模型集成到一起可以得到

rui=μ+bu+bi+qTi(pu+|N(u)|12jN(u)yj)+|Rk(u)|12jRk(u)wij(rujbuj)+|Nk(u)|12jNk(u)cij
相当于将三层模型进行累加
1. 第一层模型:基准模型
2. 第二层模型:因子分解模型,会考虑到全局用户和物品画像
3. 第三层模型:最近邻模型,会考虑到用户本身偏置特征。

结论

在该文中作者还提出了一种评估推荐系统的方法,不在赘述。
该文提出对CF模型进行改进,改进效果针对Netfix数据取得不错效果,在实际中这种科研推进方式还是可以推荐的。
另外SVD++算法应用比较广泛,有效将显示和隐式数据进行结合,值得注意的是本文对隐式数据建模比较简单,复杂建模方法考虑相关论文。

猜你喜欢

转载自blog.csdn.net/fangqingan_java/article/details/50762296