携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情
什么是推荐系统
- 推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢。
- 推荐系统就是自动联系用户和物品的一种工具,它能够在信息过载的环境中帮助用户发现令他们感兴趣的信息,也能将信息推送给对它们感兴趣的用户。
个性化推荐系统的应用
-
电子商务
-
电影和视频网站
-
个性化音乐网络电台
- Pandora背后的音乐推荐算法主要来自于一个叫做音乐基因工程的项目。
- Last.fm记录了所有用户的听歌记录以及用户对歌曲的反馈,在这一基础上计算出不同用户在歌曲上的喜好相似度,从而给用户推荐和他有相似听歌爱好的其他用户喜欢的歌曲。
-
社交网络
- 利用用户的社交网络信息对用户进行个性化的物品推荐
- 信息流的会话推荐
- 给用户推荐好友
-
个性化阅读
-
基于位置的服务
-
个性化邮件
-
个性化广告
- 上下文广告:通过分析用户正在浏览的网页内容,投放和网页内容相关的广告。
- 搜索广告:通过分析用户在当前回话中的搜索记录,判断用户的搜索目的,投放和用户目的相关的广告。
- 个性化展示广告:我们经常在很多网站看到大量展示广告,它们是根据用户的兴趣,对不同用户投放不同的展示广告。
推荐系统评测
- 一个完整的推荐系统一般存在3个参与方(如图1-22所示):用户、物品提供者和提供推荐系统的网站。因此在评测一个推荐算法时,需要同时考虑三方的利益,一个好的推荐系统是能够令三方共赢的系统。
- 好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能会感兴趣,但却不那么容易发现的东西。同时,推荐系统还要能够帮助商家将那些被埋没在长尾中的好商品介绍给可能会对它们感兴趣的用户。
推荐系统实验方法
离线实验
-
步骤
- 通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;
- 将数据集按照一定的规则分成训练集和测试集;
- 在训练集上训练用户兴趣模型,在测试集上进行预测;
- 通过事先定义的离线指标评测算法在测试集上的预测结果。
-
优点
- 不需要有对实际系统的控制权
- 不需要用户参与实验
- 速度快、可以测试大量算法
-
缺点
- 无法计算商业上关心的指标
- 离线实验的指标和商业指标存在差距
用户调查
-
概述:离线实验的指标和实际的商业指标存在差距,比如预测准确率和用户满意度之间就存在很大差别,高预测准确率不等于高用户满意度。因此,如果要准确评测一个算法,需要相对比较真实的环境。最好的方法就是将算法直接上线测试,但在对算法会不会降低用户满意度不太有把握的情况下,上线测试具有较高的风险,所以在上线测试前一般需要做一次称为用户调查的测试。
-
优点
- 可以获得很多体现用户主观感受的指标
- 相对在线实验风险很低,出现错误后很容易弥补
-
缺点
- 招募测试用户代价较大,很难组织大规模的测试用户,因此会使测试结果的统计意义不足。
- 在很多时候设计双盲实验非常困难,而且用户在测试环境下的行为和真实环境下的行为可能有所不同,因而在测试环境下收集的测试指标可能在真实环境下无法重现。
-
注意事项
- 测试用户也不是随便选择的。需要尽量保证测试用户的分布和真实用户的分布相同,比如男女各半,以及年龄、活跃度的分布都和真实用户分布尽量相同。
- 用户调查要尽量保证是双盲实验,不要让实验人员和用户事先知道测试的目标,以免用户的回答和实验人员的测试受主观成分的影响。
在线实验
-
概述:在完成离线实验和必要的用户调查后,可以将推荐系统上线做AB测试,将它和旧的算法进行比较。
-
AB测试是一种很常用的在线评测算法的实验方法。它通过一定的规则将用户随机分成几组,并对不同组的用户采用不同的算法,然后通过统计不同组用户的各种不同的评测指标比较不同算法,比如可以统计不同组用户的点击率,通过点击率比较不同算法的性能。
-
AB测试的优缺点
- 优点是可以公平获得不同算法实际在线时的性能指标,包括商业上关注的指标。
- 缺点是周期比较长,必须进行长期的实验才能得到可靠的结果。
-
注意一个网站可能分为很多层,要为不同的层分别设计AB测试系统,那么不同的AB测试之间往往会互相干扰。因此,切分流量是AB测试中的关键,不同的层以及控制这些层的团队需要从一个统一的地方获得自己AB测试的流量,而不同层之间的流量应该是正交的。
评测指标
-
用户满意度(在线指标)
-
预测准确度(离线指标):在计算该指标时需要有一个离线的数据集,该数据集包含用户的历史行为记录。然后,将该数据集通过时间分成训练集和测试集。最后,通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和测试集上实际行为的重合度作为预测准确度。
-
评分预测
-
TopN推荐
-
关于评分预测和TopN推荐的讨论
- 评分预测一直是推荐系统研究的热点,绝大多数推荐系统的研究都是基于用户评分数据的评分预测。
- 电影推荐的目的是找到用户最有可能感兴趣的电影,而不是预测用户看了电影后会给电影什么样的评分。因此,TopN推荐更符合实际的应用需求。本书主要也是讨论TopN推荐。
-
-
覆盖率
-
覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。假设系统的用户集合为U,推荐系统给每个用户推荐一个长度为N的物品列表R(u)。
-
其他定义
-
基尼系数的计算原理
-
马太效应:强者更强,弱者更弱效应。
- 如果一个系统会增大热门物品和非热门物品的流行度差距,让热门的物品更加热门,不热门的物品更加不热门,那么这个系统就有马太效应。
- 推荐系统的初衷是希望消除马太效应,使得各种物品都能被展示给对它们感兴趣的某一类人群。
- 如果G1是从初始用户行为中计算出的物品流行度的基尼系数,G2是从推荐列表中计算出的物品流行度的基尼系数,那么如果G2 > G1,就说明推荐算法具有马太效应。
-
-
多样性(覆盖用户绝大多数的兴趣点)
- 从上面的定义可以看到,不同的物品相似度度量函数s(i, j)可以定义不同的多样性。如果用内容相似度描述物品间的相似度,我们就可以得到内容多样性函数,如果用协同过滤的相似度函数描述物品间的相似度,就可以得到协同过滤的多样性函数。
-
新颖性(新颖的推荐是指给用户推荐那些他们以前没有听说过的物品)
-
惊喜度
- 惊喜度与新颖性的区别:假设一名用户喜欢周星驰的电影,然后我们给他推荐了一部叫做《临歧》的电影(该电影是1983年由刘德华、周星驰、梁朝伟合作演出的,很少有人知道这部有周星驰出演的电影),而该用户不知道这部电影,那么可以说这个推荐具有新颖性。但是,这个推荐并没有惊喜度,因为该用户一旦了解了这个电影的演员,就不会觉得特别奇怪。但如果我们给用户推荐张艺谋导演的《红高粱》,假设这名用户没有看过这部电影,那么他看完这部电影后可能会觉得很奇怪,因为这部电影和他的兴趣一点关系也没有,但如果用户看完电影后觉得这部电影很不错,那么就可以说这个推荐是让用户惊喜的。
-
信任度
-
度量推荐系统的信任度只能通过问卷调查的方式,询问用户是否信任推荐系统的推荐结果。
-
提高信任度的主要方法
- 增加推荐系统的透明度,而增加推荐系统透明度的主要方法是提供推荐解释。
- 考虑用户的社交网络信息,利用用户的好友信息给用户做推荐,并且用好友进行推荐解释。
-
-
实时性
- 推荐系统需要实时地更新推荐列表来满足用户新的行为变化。
- 推荐系统需要能够将新加入系统的物品推荐给用户。
-
健壮性
-
概述:任何一个能带来利益的算法系统都会被人攻击,这方面最典型的例子就是搜索引擎。搜索引擎的作弊和反作弊斗争异常激烈,这是因为如果能让自己的商品成为热门搜索词的第一个搜索果,会带来极大的商业利益。推荐系统目前也遇到了同样的作弊问题,而健壮性(即robust,鲁棒性)指标衡量了一个推荐系统抗击作弊的能力。
-
提高健壮性
- 选择健壮性高的算法
- 设计推荐系统时尽量使用代价比较高的用户行为。比如,如果有用户购买行为和用户浏览行为,那么主要应该使用用户购买行为,因为购买需要付费,所以攻击购买行为的代价远远大于攻击浏览行为。
- 在使用数据前,进行攻击检测,从而对数据进行清理。
-
-
商业目标
评测维度
上一节介绍了很多评测指标,但是在评测系统中还需要考虑评测维度,比如一个推荐算法,虽然整体性能不好,但可能在某种情况下性能比较好,而增加评测维度的目的就是知道一个算法在什么情况下性能最好。这样可以为融合不同推荐算法取得最好的整体性能带来参考。一般来说,评测维度分为如下3种
- 用户维度:主要包括用户的人口统计学信息、活跃度以及是不是新用户等。
- 物品维度:包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。
- 时间维度:包括季节,是工作日还是周末,是白天还是晚上等。
如果能够在推荐系统评测报告中包含不同维度下的系统评测指标,就能帮我们全面地了解推荐系统性能,找到一个看上去比较弱的算法的优势,发现一个看上去比较强的算法的缺点。