推荐系统实践 - 01推荐系统综述
第一章 推荐系统综述
1 什么是推荐系统
生活应用场景:
- 当用户有明确需求时:可以浏览所有商品、借用分类信息、通过搜索引擎找到需要的东西。
举例:买花生米可以在小卖部浏览所有商品 、在沃尔玛根据商品分类信息、在淘宝 通过搜索获得。 - 当用户没有明确需求时:在信息过载的情况下,需要一个人或者工具来做筛选。
举例:想看一部电影,但是不知道看什么好且电影数量非常庞大,需要喜欢看电影的朋友推荐或一个自动化的推荐工具。
从角色的角度出发,推荐系统的作用:联系用户与信息
- 对于信息消费者:很难从大量的信息中找到自己感兴趣的信息
- 对于信息生产者:很难让自己生产的信息脱颖而出,受到广大用户的关注
从用户角度出发,推荐系统的作用:推荐系统和搜索引擎是互补的工具。
- 搜索引擎满足了用户有明确需求时主动查找的需求;
- 推荐系统满足用户在没有明确需求时,系统通过分析用户历史行为给用户建模,从而主动给用户推荐信息
从商品角度出发,推荐系统的作用:发掘物品的长尾(long tail)
- 电子商务大多数都是不热门的商品,但这些销量小的商品由于总量巨大,总销售额也许会超过热门商品。主流商品代表绝大多数用户的需求,长尾商品代表小部分用户的个性化需求,推荐系统的作用就是个性化推荐,发掘长尾而提高销售额。
推荐系统的推荐算法:
- 社会化推荐(social recommendation):让朋友/网友推荐物品。
- 基于内容的推荐(content-based filtering):通过分析用户过去喜欢的物品,为用户推荐相似的物品
- 基于协同过滤(collaborative filtering):根据用户对物品的偏好发现与用户偏好相似的群体,并推荐该群体所偏好的物品
2 推荐系统的应用
2.1 电子商务
- 个性化推荐列表:基于物品的推荐(item-based method)、基于好友的推荐
- 相关推荐列表:购买这个商品的用户经常购买的商品、浏览过这个商品的其他用户经常购买的商品
2.2 音乐网络电台
- 专家标注:对歌曲的特性(旋律、节奏、编曲、歌词)进行标注,根据基因相似度推送音乐。
- 相关推荐:利用用户行为计算歌曲相似度,推荐和用户有相似爱好的其他用户喜欢的歌曲
2.3 社交网络
- 利用社交网络信息对用户进行物品推荐
- 利用社交网络为用户推荐好友在社交网站上的会话(会话排序)
- 给用户推荐好友
2.4 个性化阅读
- 关注自己感兴趣的人,然后看到用户分享的文章
- 收集用户对文章的偏好信息,根据反馈更新用户个性化文章列表
- 根据历史计算用户之间兴趣相似度,给用户推荐和他兴趣相似的用户喜欢的文章
2.5 个性化广告
- 上下文广告:通过用户浏览的网页内容推荐相关广告
- 搜索广告:通过用户的搜索记录,判断用户搜索的目的,投放目的相关的广告
3 推荐系统的测评
- 对用户:满足用户需求,推荐的内容令人感兴趣
- 对物品提供者:让物品都能够被推荐给对其感兴趣的用户
- 对提供推荐系统的网站:推荐系统本身能够收集到高质量的用户反馈,不断完善推荐质量
3.1 推荐系统实验方法
3.1.1 离线实验(offline experiment)
实验步骤:
- 通过日志获取用户的行为数据,并将数据按照一定格式生成标准数据集
- 将数据集分为训练集和测试集;在训练集上训练用户兴趣模型,在测试集上进行预测
- 通过事先定义的评测指标,对测试集上的结果进行评测
离线实验的优点:
- 不需要一个实际的系统来实验
- 不需要真实用户参与
- 可以快速测试大量算法
离线实验的缺点:
- 无法获得商业上关注的指标,如点击率、转化率等(存疑:日志可以获取点击/浏览界面等指标,为什么离线实验无法利用)
- 指标和实际商业指标存在差距,比如高预测准确率不意味着高用户满意率。
3.1.2 用户调查(uesr study)
用户调查的优点:
- 相对于上线测试风险较低
- 可以获得与用户主观感受有关的指标
用户调查的缺点:
- 招募测试用户代价大,很难进行大规模用户调查,且测试用户需要和真实用户分布相近
- 用户在测试环境下的行为可能和真实环境下的行为不一致
3.1.3 在线实验(online experiment)
AB测试步骤:按照一定的规则将用户随机分组,对不同组采用不同的算法,统计不同组用户的各种的指标,比较不同的算法。
AB测试的优点:
- 可以公平地获得不同算法在真实环境中的性能指标
AB测试的缺点:
- 周期较长,无法测试大量算法
- 从前端到后端多个层之间的AB测试会互相干扰,需要切分流量(标记测试分组标签)
3.2 推荐系统评指标
3.2.1 用户满意度
用户满意度可以通过调查问卷、用户反馈界面、其他指标衡量用户满意度
-
调查问卷:更具体,询问结果满意与否的同时,可以加入更多指标,如具体原因。
GroupLens论文系统调查问卷示例:- 推荐的论文都是我非常想看的
- 推荐的论文很多我都看过了,确实是符合我兴趣的论文
- 推荐的论文和我的研究兴趣相关,但是我并不喜欢
- 不知道为什么会推荐这些论文,它们和我的兴趣丝毫没有关系
- 用户反馈界面:节省空间、时间,能够得到用户满意的结果
- 其他指标:可以根据点击率、用户停留时间、转化率等指标衡量满意度。如电子商务中,用户如果购买了推荐的商品,就表示用户在一定程度上满意。
3.2.2 预测准确度
预测准确度的两个重要的研究方向为评分测评和TopN推荐
-
评分测评:根据用户对物品的历史评分,从中习得用户的兴趣模型,并预测用户看到一个物品时,给这个物品的评分。
评分预测的预测准确度通过均方根误差(RMSE)和平均绝对误差(MAE)计算。表示如下:- :用户
- :物品
- :用户u对物品i的实际评分
- :推荐算法的预测评分
-
:预测次数
RMSE加大了对预测不准确的惩罚(平方),因此对系统的测评更为苛刻。当用户给的评分都是整数时,对预测结果取整会降低MAE的误差。(存疑:为什么取整能降低误差?)
-
TopN推荐
TopN推荐:在提供推荐服务时,给用户一个个性化推荐列表,这种推荐叫做TopN推荐
TopN推荐的预测准确率通过准确率 / 召回率度量
精确率(precision):被分为正例的示例中实际为正例的比例。
召回率(recall):是覆盖面的度量,度量有多个正例被分为正例,
3.2.3 覆盖率(coverage)
描述推荐系统对长尾商品的发掘能力。
最简单的定义为能够推荐的商品占总商品的比例。覆盖率为100%的系统可以将每个商品都推荐给至少一个用户。但是,覆盖率为100%的系统可以有无数流行度分布。如果所有物品都能够出现在推荐列表中,且出现的次数差不多,则推荐系统发掘长尾的能力就很好。覆盖率最简单的公式如下,即推荐系统给所有用户推荐的物品列表集合,占所有物品的比例:
有两个指标也可以定义覆盖率:信息熵和基尼系数(Gini Index)
-
信息熵公式为如下,为物品i推荐次数占所有商品的推荐次数的比例
-
基尼系数公式如下:
- :列表总长
-
:表示按照流行度从小到大排序的物品列表中第j个物品
推荐系统希望能够减小马太效应。测评推荐系统是否具有马太效应最简单的方法就是使用基尼系数
3.2.4 多样性
推荐列表多样可以增加用户找到感兴趣物品的概率。多样性描述了列表中物品的不相似性。表示如下:
- :用户
- :用户u推荐列表的长度
-
:物品i和j之间的相似度
3.2.5 新颖性
传统的新颖性设计:
- 把用户之前有过行为的物品从推荐列表中过滤掉。但是,有些物品用户可能在别的网站上看过,仅仅过滤掉本网站中用户有过行为的物品不能完全实现新颖性。
新颖性的测评:
- 利用推荐结果的平均流行,越不热门的商品越可能让用户觉得新颖(困难的是如何不牺牲精度)
- 通过用户调查统计新颖性
3.2.6 惊喜度(serendipity)
- 新颖性和惊喜度的区别:如果推荐结果和用户历史兴趣不相似,却让用户觉得满意,那么惊喜度就很高;新颖度仅仅取决于用户是否听说过这个推荐结果。
- 惊喜度的测评:以电影为例,获得用户观影历史,得到电影的演员、导演的集合A,
3.2.7 信任度
如果用户信任推荐系统,就会增加用户和推荐系统的交互。
信任度的测评:只能是用户调查问卷
提高系统信任度的方式:
- 增加推荐系统的透明度(transparency),提供推荐解释
- 利用社交网络给用户做推荐,如用户的好友购买过的商品,如认可的网友的评价
3.2.8 实时性
实时性的两个方面:
- 能够实时更新推荐列表以满足用户新的行为变化:如新闻的更新、当用户有了新的购买行为,相关推荐的更新等
- 新物品的推荐
实时性的测评:
- 基于推荐列表变化速率的测评
- 利用推荐列表中有多大比例的物品是当天新物品来测评
3.2.9 鲁棒性(robust)
常见的作弊方式有:
- 行为注入攻击(profile injection attack):绝大多数的推荐系统都是通过分析用户的行为实施推荐算法的。比如统计购买A商品的用户购买其他商品的次数。那么可以注册很多帐号,同时购买A和自己的商品,从而让自己的排名在推荐列表中靠前。再比如刷单。
- 评分系统攻击:比如豆瓣电影评分,可以注册很多帐号,给自己的商品非常高的评分
鲁棒性的测评:
- 鲁棒性用作衡量推荐系统抗击作弊的能力。给定数据集和算法,生成推荐列表。然后用常用的攻击方法向数据集注入噪声数据,在此数据集上再次生成推荐列表。最后,比较两个推荐列表的相似度,以测评算法的鲁棒性
提高鲁棒性的方法:
- 设计系统时尽量使用代价较高的用户行为
- 在使用数据前,进行攻击检测,从而清理数据
3.2.10 商业目标
最本质的商业目标是平均一个用户给公司带来的盈利。具体而言,商业目标可能是销售额、广告展示总数、广告点击总数等。
3.3 推荐系统评测维度
增加测评维度的意义在于知道一个算法在什么情况下性能最好。有些推荐算法可能整体性能不好,但是在某种情况下性能较好。
- 用户维度:人口统计学信息、活跃度、是否新用户
- 物品维度:物品属性信息、流行度、平均分、是否新加入的商品
- 时间维度:季节、是否工作日、白天晚上