一.简介
协同过滤(CF)算法基于用户对商品的评分或其他行为模式(如购买),为用户提供个性化推荐,而不需要了解用户或者商品的大量信息。
本章,通过分析最近提出的一些扩展方法,给正在寻找推荐优化方案的研究人员提供一些建议和帮助。
1.推荐系统的输入
1)显式反馈
用户显式地表明其所感兴趣的产品集合。如:打分,星级,赞……
2)隐式反馈
通过收集整理用户的行为来间接得到用户的喜好[20]1。
其包括用户的:
- 购买记录
- 浏览历史记录
- 搜索模式
- 甚至是鼠标移动
2.重点内容
本章重点关注与显式反馈相匹配的模型,同时也会展示怎么样在模型中把隐式反馈当作辅助信息来处理。
3.关联用户与物品的两种CF技术
为了生成推荐结果,CF系统需要关联两种有本质区别的实体:Users 和 Items 。
有两种方法关联这两种实体,它们构成CF的主要技术:
1)基于邻域的方法
其重点关注物品之间的关系或者用户之间的关系。
2)隐语义模型
例如矩阵分解模型:是把物品与用户—映射到相同的隐语义空间中去。
隐语义空间:
试图通过描述物品和用户两种实体在因子上的特征来解释评分,这些因子是根据用户的反馈自动推断出来的。
4.内容总结
产生具有更精准预测结果的方法,需要深化基础和减少对任意决策的依赖。在本章中:
- 1)阐述了一系列近期提出的对基本CF建模技术的改进方法
- 2)同样重要的是对数据中所有可用的信号或者特征的识别——即,利用其他信息源。
- 如考虑时间效应
传统技术解决了用户—物品评分数据中的稀疏问题,利用其他信息源可以显著提高推荐精度。
3.3 :讨论了矩阵分解模型的相关技术,综合考虑了算法实现的便利性和相对高的预测准确度。
该节主要描述了这些技术:
1)背后理论、使用细节;
2)主要优势——处理数据额外特征的能力,这些额外特征包括隐式反馈和时序信息
3)以及如何增强矩阵分解模型来处理这些额外信息
3.4 :讨论了基于邻域的方法(大多数是基于启发式的):使用更加严格的公式来克服领域技术的缺点
3.5 :更高级方法:基于普通邻域方法的原理,使用因式分解模型的典型技术——全局优化技术。
1)这个方法允许放宽对领域大小的限制,同时考虑了隐式反馈的时间效应信息。
2)该方法预测结果精度接近矩阵分解模型,同时具有一些实用优势
3.6 :这些技术之间的根本联系
1)基于用户的领域方法和基于物品的领域方法在极限的时候将收敛于同一模型;
2)而且那时,两种模型都等价于一个简单的矩阵分解模型;
二.预备知识
符号
- m m m个用户, n n n个物品
- u , v u,v u,v代表用户, i , j , l i,j,l i,j,l代表物品
- r u i r_{ui} rui代表用户 u u u对物品 i i i的偏好, r ^ u i \hat{r}_{ui} r^ui代表预测的偏好程度
- 标量值 t u i t_{ui} tui:表示评分 r u i r_{ui} rui的时间,时间单位随着当前应用的情况而变化【可能是天数或者是小时】。
- 由于评分的稀疏性,评分 r u i r_{ui} rui已知的 ( u , i ) (u,i) (u,i)对,存放在集合 K = { ( u , i ) : r u i 已 知 } \mathcal{K}=\{(u,i):r_{ui}已知\} K={ (u,i):rui已知}中。
- R ( u ) R(u) R(u):表示用户 u u u评价过的所有物品的集合
- R ( i ) R(i) R(i):表示评价过物品 i i i的所有用户的集合
- N ( u ) N(u) N(u):包含用户 u u u提供过的隐式偏好信息的所有物品集合(如用户租用过、购买过、浏览过的物品)
正则化防止过拟合
用于评分的模型,通过拟合已经观测到的评分来进行学习。通过 λ 1 , λ 2 \lambda_1,\lambda_2 λ1,λ2等参数来控制正则化,防止模型过拟合。
这些参数通常通过交叉验证来实现;且随着参数量增加,确定正则化参数的任务会变得越来越繁重。
2.1 基准预测
1.原理
CF模型试图捕捉用户与物品之间的交互作用,正是这些交互作用产生了不同的评分值。然而,大部分观察的评分值要么与用户相关,要么与物品相关,而与用户与物品之间的交互作用无关。
比如,典型的 CF数据显示了用户和物品中存在偏置——某些用户给出更高的评分和某些物品比其他物品得到更高评分的总趋势。
可以将这些与用户—物品交互作用无关的因子(也叫偏置)封装到基准预测中。这样的建模方法把真正代表用户—物品之间交互作用的那部分数据隔离开来,而把这部分数据放到更合适的用户偏好模型中。
2.公式
1.基准预测
设: μ \mu μ为总体平均评分,则未知评分 r u i r_{ui} rui的基准预测 b u i b_{ui} bui综合考虑了用户和物品两个因子。
b u i = μ + b u + b i b_{ui} = \mu + b_u + b_i bui=μ+bu+bi
2.偏置参数的估计——最小二乘法+梯度下降
参数 b u , b i b_u ,b_i bu,bi分别表示用户 u u u和物品 i i i与评分平均值的偏差。可以通过解决最小二乘法问题来估计参数 b u , b i b_u ,b_i bu,bi的值:
min b ∗ ∑ ( u , i ) ∈ K ( r u i − μ − b u − b i ) 2 + λ 1 ( ∑ u b u 2 + ∑ i b i 2 ) \min_{b_{*}} \sum_{(u,i) \in \mathcal{K}} (r_{ui}-\mu-b_u -b_i)^2 + \lambda_1(\sum_u b_u^2 +\sum_i b_i^2 ) b∗min(u,i)∈K∑(rui−μ−bu−bi)2+λ1(u∑bu2+i∑bi2)
- 公式中第一项: ∑ ( u , i ) ∈ K ( r u i − μ − b u − b i ) 2 \sum_{(u,i) \in \mathcal{K}}(r_{ui}-\mu-b_u -b_i)^2 ∑(u,i)∈K(rui−μ−bu−bi)2,用来寻找与已知评分数据拟合得最好的 b u , b i b_u ,b_i bu,bi;
- 第二项正则化项: λ 1 ( ∑ u b u 2 + ∑ i b i 2 ) \lambda_1(\sum_u b_u^2 +\sum_i b_i^2 ) λ1(∑ubu2+∑ibi2),通过对参数的复杂性增加惩罚因子来避免过拟合现象。
- 求解方法:可以使用随机梯度下降方法解决
3.偏置参数估计的第二种方法——简单,但准确率不高
把 b i b_i bi的计算和 b u b_u bu的计算分离开来:
1)对每一个物品 i i i,令:
b i = ∑ u ∈ R ( i ) ( r u i − μ ) λ 2 + ∣ R ( i ) ∣ b_i = \frac {\sum_{u \in R(i)} (r_{ui}-\mu) } {\lambda_2 + |R(i)|} bi=λ2+∣R(i)∣∑u∈R(i)(rui−μ)
2)对每一个用户 u u u,令:
b u = ∑ i ∈ R ( u ) ( r u i − μ − b i ) λ 3 + ∣ R ( u ) ∣ b_u = \frac {\sum_{i \in R(u)} (r_{ui}-\mu - b_i) } {\lambda_3 + |R(u)|} bu=λ3+∣R(u)∣∑i∈R(u)(rui−μ−bi)
3)通过正则化参数 λ 2 , λ 3 \lambda_2,\lambda_3 λ2,λ3,可以把上述参数的均值缩小至0;其值由交叉验证确定。
2.2 Netflix 数据
- 数据来源:
www.netflixprize.com
2.3 隐式反馈
在解决数据稀疏问题、以及用户显式反馈很少时,隐式反馈信息就会派上用场,其可以用于扩展之前讨论的基于显式反馈的一些模型。例如,使用一些浏览历史记录或者购买历史记录。
特别的,在Netflix数据集中还存在着一种比较隐晦的用户隐式信息:用户对哪些电影进行了评分,其并不需要关注他们如何进行评分。
因为,如果一个用户选择一部电影并投票,那么他就隐式地告知我们他的兴趣。此时可以建立一个二元矩阵(0未评分,1评分),使用这些二元数据能使预测模型受益,其建立在一个事实基础之上:
- 这个事实就是:用户的评分记录并不是随机缺失的,用户会小心谨慎地选择他们要进行评分的物品[19]2
三.矩阵分解模型
隐语义模型实例
用隐语义模型来进行协同过滤的目标是:揭示隐藏的特征,这些隐藏的特征能够解释观测到的评分。隐语义模型的实例包括:
- pLSA模型[14]3——隐语义模型
- 神经网络模型[22]4——严格的玻尔兹曼机
- 隐式Dirichlet分配模型[7]5——隐狄利克雷分布模型
- 由用户—物品评分矩阵的因子分解推导出的模型——基于SVD的模型
最近,矩阵分解模型由于其准确性和可扩展性得到越来越多人的青睐。
在信息检索邻域,SVD是为了识别隐语义因子[9]6而发展起来的。
SVD的局限
1.由于大部分显式评分值的缺失,会导致CF矩阵的信息不完整,此时传统的SVD是不能被定义的,所以把SVD应用到CF领域的显式评分中变得相对困难;
2.而且,简单地仅仅使用很少的已知信息,将很容易导致过拟合现象;
3.早期研究,依赖于填充方法[15,24],即填充用户—评分矩阵的缺失值,以使该矩阵变得稠密。其存在一些缺陷:
1) 填充方法极大增加了数据量,因此代价非常大;
2)不准确的填充,会使数据变得倾斜(何为倾斜???);
SVD的突破
最近的研究[4,6,10,16,21,22,26],根据观察到的评分直接建模,并通过充分的正则化模型来避免过拟合。
本节内容
- 基本模型——SVD;
- SVD++模型:该模型整合了用户反馈的其他信息源来提高预测准确性;
- 时间敏感的因子模型:该模型考虑了时间效应信息以便更好地描述用户行为。
3.1 SVD—Singular Value Decomposition
1.SVD模型:是根据已有评分情况,分析出评分者对各个因子的喜好程度以及产品包含各个因子的程度,最后再反过来根据分析结果预测评分。
2.矩阵分解模型:把用户和物品两方面的信息映射到一个维度为 f f f的联合隐语义空间中,因此,用户—物品的交互可由该空间中的内积来建模。
3.隐语义空间:试图通过描述物品和用户两种实体在各个因子上的特征来解释评分值,这些因子是根据用户的反馈自动推断出来的。
例如,如果物品是电影,因子将会用来度量诸如:喜剧还是悲剧、情节数量、面向儿童等级…这些明显的维度;以及诸如:性格发展深度、“突变”等隐式维度;甚至是完全无法解释的维度。
4.模型的评分预测
r ^ u i = μ + b u + b i + q i T p u \hat{r}_{ui} = \mu + b_u + b_i + q_i^Tp_u r^ui=