一直以来,推荐系统预测用户对物品的喜好程度,然后将预计用户最喜欢的前N个物品推荐给它,以实现个性化推荐。可以看到,这其实可以当成一个rank问题:将用户喜欢的物品排序,然后推荐前N个它最喜欢的。虽然如此,之前的model-based CF(如Matrix factorization, FM)和memory-based CF(如K-Nearest-Neighbor, KNN)都不是直接为排序而优化的。
相反,Web搜索引擎一直使用learning to rank的方法给文档排序。所谓learning to rank就是使用机器学习的方法习得一种自动排序的方法。常用来衡量排序性能的指标有:NDCG(Normalized Cumulative Discounted Gain),MRR(Mean Reciprocal Rank),ERR(Expected Reciprocal Rank)等。不过[26]指出,信息检索中的measures都是不连续的——所谓不连续就是如果一个物品的评分(排名)变化,那么整个推荐的utility不是连续变化的。因此很多基于梯度下降的机器学习方法无法直接优化这些measures。于是,learning to rank优化其他的目标函数。主要分成3类(可以看到,这三种方法,从上到下样本空间是依次增大的):
①Point-wise:分别优化单个物品的cost,而不考虑物品将的顺序。其实这个便退化成预测usage准确率的问题了。但是[27]指出point-wise方法被证明在Web search ranking中是很有效的。其中特别成功的是Random Forest和Gradient Boosted Regression Tree[26]。
②Pair-wise:优化物品对之间的顺序。比如,用户use过的物品(听过的歌或者看过的电影)应该排在还没use过的物品前面。
③List-wise:则是优化整个列表的顺序。
最后,在文档排序中每一个query-document对由一个feature vector表示。这个feature vector主要包含了document的feature,query的feature,和其他描述交互信息的feature。(Refer to [26] for a good reference)
由于排序这样的目标在web search这样的情景下早已存在,因此如何把learning to rank 引入到推荐系统中引起了人们的兴趣。下面来看两个模型:
————————————————————————————————————————-
Bayesian Personalized Ranking (BPR)
[24] 提出一个基于joint probability最大化的优化目标 —— BPR-OPT。 BPR-OPT是个pair-wise的优化目标(将用户有过行为的物品i排在未有过行为的物品j前面),并且可以无缝地与现有的MF和KNN模型结合起来,从而实现personalized ranking。一点具体细节是:由于pair-wise模型的样本数很多,于是作者采用bootstrap sampling的样本依次使用SGD来更新。最后使用AUC来评测模型的性能:即有多少比例是正确排序的。作者的实验显示该模型在AUC measure下的performance要比[15]提出的模型好。但另一方面,[15]的模型本身是专为“有count信息的implicit feedback”定制的,而作者提出的这个模型使用的是0-1反馈。。
有趣的一点是[24]的数据显示:①在Rossmann数据集上,BPR-KNN的性能反而比BPR-MF的要好。而在Netflix数据集上,BPR-MF要比BPR-KNN的要好。②Netflix上方法的整体performacne都要比Rossmann上的好。
②比较好解释。两个数据库的性质不一样:Rossmann是用户买东西的记录,而Netflix是用户看电影的记录。猜测:不同用户观影的联系可能更加紧密一些;反之,用户购买记录之间的联系比较松散。类似的现象也可以在[27]中看到:即使在相同的数据稀疏度下,MovieLen上的测试结果也要比LastFM上的好。
①的一个猜测是由数据稀疏度不同引起的:Rossmann中数据稀疏度是98.93%,Netflix中数据稀疏度是98.87%(不过差距也太小了)。抑或还是跟数据本身有关?因为[14]也指出,MSD Challenge中,MF的效果没有他们的memory-based方法好。
————————————————————————————————————————
Collaborative Less-is-More Filtering (CLiMF)
注:与用户相关的物品是指,用户对这个物品有过隐式反馈
[28]指出Bayesian Personalized Ranking的缺点在于它不是top-biased的。也就是说,在列表前面的错序和在列表后面的错序是被同等对待的。但现实中,一般只给用户推荐前几个物品,因此列表前面的物品发生错序要更严重。于是,[28]优化的是MRR。MRR的目标是让第一个与用户相关的item排得越前面越好。由于MRR是不连续的,因此它使用sigmoid函数替换其中不连续的部分。然后使用Jensen 不等式得出一个便于优化的下界——最终算法复杂度跟反馈矩阵中非空项的数量成线性关系。作者指出,CLiMF在提升相关物品排名的同时,会使相关物品尽可能地分散。
CLiMF较BPR还有两个不同:①CLiMF只需要relevant的物品;而BPR要构建所有的pair(relevant和非relevant)。②CLiMF更注重列表前几个的排序;而BPR关注的是让所有relevant物品排序非relevant物品前面。乍一看,CLiMF的目是BPR目标的子集。但注意到,训练出来的classifier不是完美符合训练目标的,有regulation。而且,不同目标,penalize的方式也不同。
最后,其他用于推荐系统的learning to rank算法有:SVM^MAP,SoftRank,基于NDCG优化的CofiRank(因此它适用于多级反馈的情景),上述提到的BPR,OrdRec(适用于带count的隐式反馈信息),CCF(需要构建relevant和非relevant物品对)。
[15] Collaborative Filtering for Implicit Feedback Datasets
[24] BPR: Bayesian Personalized Ranking from Implicit Feedback
[26] Yahoo! Learning to Rank Challenge Overview
[27] Top-N Recommendations from Implicit Feedback leveraging Linked Open Data
[28] CLiMF: Learning to Maximize Reciprocal Rank with Collaborative Less-is-More Filtering