概述
在推荐系统中,协同过滤(CF:Collaborative Filtering)算法由于其领域无关性以及比较好的推荐效果被广泛使用;
CF模型比较常用的包括最近邻方法和因子分解算法,由于这两种算法各有优缺点;该文提出了一种策略将这两种方法进行综合建模,并且可以适用于隐式反馈数据。
已有模型
最近邻方法
CF常用的有user_based和item_based两个模型,后者由于其推荐效果和可解释性比较强,比较被推荐使用。
item_based方法思路是根据用户个人偏好推荐和这些item最相关的物品。过程如下
1. 根据用户和物品的打分矩阵或者相关数据,计算物品两两之间的相似度
2. 通常情况下相似度计算可能需要大量数据支持,对于稀疏数据需要对数据规模进行置信度加权,常用加权方法可以是
3. 用户对某物品打分公式为
4. 另外为了进一步刻画效果,可以通过下面方式进行改进
因子分解模型
因子分解模型可以将用户和物品分别映射到一个低维空间中,这样根据数据可以得到一个全局的向量表示,用于计算用户与用户、物品与物品以及用户和物品之间的相似度。
可以通过SVD分解得到向量表示,常用的方法是最优化如下问题
新模型
已有模型的问题
- 最近邻方法根据用户已经打分过的物品,计算和这些物品最相似的物品,相当于一个局部最优问题,没有考虑全局。由于一个用户关注的物品是有限的。
- 因子分解模型可以得到一个全局表示,可解释性不好。
最近邻模型改进
改进1
以item_based方法为例,之前item之间的相似度都是通过数据统计得到,现在变成模型参数通过模型训练得到,即
1. Item之间的相似度通过学习得到
2. 通过搜索用户所有相关的物品得到最后打分,而不是前K个
3. 模型
改进2
另外可以将隐式数据加入到模型中,则模型变为
改进3
用户偏置项也可以通过模型学习得到,而不是统计得到,即
改进4
为了解决模型中参数两级分化问题,对邻域个数进行归一,即
求解算法
可以通过梯度方法进行求解
SVD模型改进
异步SVD
模型表示为
其中参数
主要思路是将用户表示为其相关物品向量的累加。
好处
- 更少的参数,模型仅和物品有效个数相关,一般情况下用户个数会更多。
2.对于新用户可以解决冷启动问题,用户表示直接通过用户点击的物品得到- 可解释性相对于原始模型较强
- 可以更有效的集成隐式反馈数据,可以通过调整隐式向量系数得到。
SVD++
为了进一步集成隐式反馈数据,可以通过直接将隐式数据反馈到模型中,
模型集成
将以上两个模型集成到一起可以得到
1. 第一层模型:基准模型
2. 第二层模型:因子分解模型,会考虑到全局用户和物品画像
3. 第三层模型:最近邻模型,会考虑到用户本身偏置特征。
结论
在该文中作者还提出了一种评估推荐系统的方法,不在赘述。
该文提出对CF模型进行改进,改进效果针对Netfix数据取得不错效果,在实际中这种科研推进方式还是可以推荐的。
另外SVD++算法应用比较广泛,有效将显示和隐式数据进行结合,值得注意的是本文对隐式数据建模比较简单,复杂建模方法考虑相关论文。