7.12 推荐系统简介
典型任务和相关算法
● 评分预测
最早的推荐系统任务(也是目前较为常见的任务)是评分预测。输入归纳起来可以分为用户(User)、物品(Item)和打分(Rating)三个方面,因此可以使用一个二维矩阵来刻画评分预测的输入,分别对应于一个矩阵中的行、列、值。为了解决这一问题,常见的算法如基于相似近邻的协同过滤算法、矩阵分解等。其中矩阵分解算法得到了广泛应用,并且在实践中具有很好的实战效果[1] 。
● 物品推荐
与评分预测相似,物品推荐任务的输入是以用户(User)及物品(Item)组成的二维矩阵来描述,不同的是每个矩阵数值不是一个具体的打分,而是一个用户是否选择了某一物品。大部分评分预测算法都可以(可能需要进行适当改动)应用到物品推荐中。
● 基于背景或者特征的推荐 (Context-awarerecommendation)
推荐系统的不断发展,进一步丰富了可供推荐算法使用的信息。如对于新闻推荐,物品的属性则有可能是新闻的文本内容、关键词、时间等,同时包括用户的点击、收藏和浏览行为等。在电商网站上,还可能包含很多信息评论文本(ReviewText)、用户查看的历史记录、用户购买的记录等。还可能获得用户的反馈信息,总体上可以分为两类,一是显式的用户反馈(Explicit Feedback),这是用户对商品或信息给出的显式反馈信息,评分、评论属于该类;另一类是隐式的用户反馈(ImplicitFeedback),这类一般是用户在使用网站的过程中产生的数据,它们也反映了用户对物品的喜好,比如用户查看了某物品的信息、用户在某一页面上的停留时间等。对于背景敏感的推荐任务,可以使用SVD++ [2] 、SVDFeature [3] 、 libFM [4] 等基于特征的推荐算法。
● 复杂推荐任务
在真实的应用中,往往要面临很多复杂的推荐任务[5] 。例如,在基于 session 的推荐任务中,用户在一个时间片段内连续做出相应的操作和选择,需要考虑用户整体的兴趣偏好和在一个特定session 内的连续行为。这种任务的解决方法往往和序列模型相关。另一种复杂任务叫做基于页面的推荐。上述所提到的推荐任务的返回结果都是一个单一列表,而实际上往往需要进行基于用户 UI 方面的结果展示。例如,在一个电商平台,如何将推荐产品合理地展示在页面的各个部分,可能的策略如按照类别分类展示、重点区域突出个性化推荐结果。这种任务目前在研究中还很少被关注,主要原因是很难得到相关的科研数据。