推荐系统
推荐系统的基本任务是联系用户和物品,解决信息过载(information overload)的问题。
解决信息过载的方案有:
- 分类目录
- 搜索引擎
和搜索引擎一样,推荐系统也是一种帮助用户快速发现有用信息的工具。和搜索引擎不同的是,推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。
推荐系统就是自动联系用户和物品的一种工具,能够在信息过载的环境中帮助用户发现令他们感兴趣的信息,也能将信息推送给对它们感兴趣的用户。
社会化推荐
社会化推荐(Social Recommendation):让好友给自己推荐物品
基于物品的推荐
基于物品的推荐(item-based method):给用户推荐那些和他们之前喜欢的物品相似的物品
基于内容的推荐
基于内容的推荐(content-based filtering):
基于协同过滤的推荐
基于协同过滤的推荐(collaborative filtering):
应用
几乎所有的推荐系统应用都是由以下3部分构成:
- 前台的展示页面
- 后台的日志系统
- 推荐算法系统
广泛利用推荐系统的领域包括:
- 电子商务
- 电影和视频
- 音乐
- 社交网络
- 阅读
- 基于位置的服务
- 个性化邮件
- 个性化广告
个性化推荐的成功应用需要两个条件:
- 存在信息过载:因为如果用户可以很容易地从所有物品中找到喜欢的物品,就不需要个性化推荐了
- 用户大部分时候没有特别明确的需求:因为用户如果有明确的需求,可以直接通过搜索引擎找到感兴趣的物品
电子商务
- 亚马逊(基于物品的推荐算法)
- 给用户推荐那些和他们之前喜欢的物品相似的物品
- 给用户推荐他们的Facebook好友在亚马逊上喜欢的物品
- 相关推荐列表:在商品信息下展示相关的商品;可打包销售(cross selling)
电影和视频
- Netflix(基于物品的推荐算法)
- Netflix Prize推荐系统比赛
- Netflix电影推荐
- YouTube(基于物品的推荐算法)
- 个性化推荐的点击率明显高于热门视频的点击率
- Hulu
音乐
个性化音乐网络电台
- Pandora(基于内容的推荐)
- 根据专家标注的“基因”计算歌曲的相似度,并给用户推荐和他之前喜欢的音乐基因相似的其他音乐
- 使用了Facebook的推荐API(Instant Personalization)
- Last.fm
- 记录了所有用户的听歌记录
- 主要利用用户行为计算歌曲的相似度
- 豆瓣电台
- 网易云私人FM
社交网络
社交网络的个性化推荐系统主要应用在以下3个方面:
- 利用用户的社交网络信息对用户进行个性化的物品推荐
- 信息流的会话推荐
- 给用户推荐好友
- Facebook
- 宝贵数据:(1)用户之间的社交网络关系(2)用户的偏好信息
- 推荐API,Instant Personalization,根据用户好友喜欢的信息,给用户推荐他们好友最喜欢的物品
- 开发了EdgeRank算法,对用户的会话进行排序
个性化阅读
- Google Reader
- 允许用户关注自己感兴趣的人并看到所关注用户分享的文章
- Zite
- 收集用户对文章的偏好信息
- 新闻阅读网站Digg
- 根据用户的历史计算用户之间的兴趣相似度,然后给用户推荐和他兴趣相似的用户喜欢的文章
基于位置的服务
- 位置是一种很重要的上下文信息
- 往往与社交网络相结合
个性化邮件
- 个性化邮件推荐系统Tapestry
- 通过分析用户阅读邮件的历史行为和习惯对新邮件进行重新排序,提高用户的工作效率
- Google Gmail优先级收件箱功能
- 通过分析用户对邮件的历史行为,找到用户感兴趣的邮件,展示在一个专门的收件箱里
个性化广告
广告定向投放(Ad Targeting):将广告投放给潜在客户群
狭义个性化推荐 | 个性化广告投放 | |
---|---|---|
着重于 | 帮助用户找到可能令他们感兴趣的物品 | 帮助广告找到可能对它们感兴趣的用户 |
核心 | 用户 | 广告 |
目前的个性化广告投放技术主要分为3种:
- 上下文广告:通过分析用户正在浏览的网页内容,投放和网页内容相关的广告
- 谷歌的Adsense
- 搜索广告:通过分析用户在当前会话中的搜索记录,判断用户的搜索目的,投放和用户目的相关的广告
- 个性化展示广告:我们经常在很多网站看到大量展示广告,它们是根据用户的兴趣,对不同用户投放不同的展示广告
- 雅虎
评测
一个完整的推荐系统一般存在3个参与方:
- 用户:推荐系统要满足用户的需求,给用户推荐那些他们感兴趣的物品;好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能会感兴趣,但却不那么容易发现的东西
- 物品提供者:推荐系统要让所有物品都能够被推荐给对其感兴趣的用户
- 提供推荐系统的网站:好的推荐系统设计,能够让推荐系统本身收集到高质量的用户反馈,不断完善推荐的质量,增加用户和网站的交互,提高网站的收入
在评测一个推荐系统时,需要同时考虑三方的利益。
实验方法
一般来说,一个新的推荐算法最终上线,需要完成3个实验:
- 通过离线实验证明它在很多离线指标上优于现有的算法
- 通过用户调查确定它的用户满意度不低于现有的算法
- 通过在线的AB测试确定它在我们关心的指标上优于现有的算法
方法 | 优点 | 缺点 |
---|---|---|
离线实验 | 1. 不需要对实际系统的控制权 2. 不需要用户参与实验 3. 速度快,可以测试大量算法 |
1. 无法计算商业上关注的指标 2. 离线实验的指标和商业指标存在差距 |
用户调查 | 1. 可以获得跟多体现用户主观感受的指标 2. 相对在线实验风险低,出错后很容易弥补 |
1. 招募测试用户成本较高 2. 很难组织大规模的测试用户,会使测试结果的统计意义不足 |
在线实验 | 可以公平获得不同算法实际在线时的性能指标 | 周期比较长,需要进行长时间的实验才能得到可靠的结果 |
离线实验
离线实验(offline experiment)的的方法一般由如下几个步骤构成:
- 通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集
- 将数据集按照一定的规则分成训练集和测试集
- 在训练集上训练用户兴趣模型,在测试集上进行预测
- 通过事先定义的离线指标评测算法在测试集上的预测结果
用户调查
用户调查(user study):在将离线实验的算法上线前,一般需要做一次用户调查。
- 需要一些真实用户在需要测试的推荐系统上完成一些任务
- 在用户完成任务时,观察和记录他们的行为,并让他们回答一些问题
- 通过分析用户的行为和答案了解测试系统的性能
用户在测试环境下的行为和真实环境下的行为可能有所不同,因而在测试环境下收集的测试指标可能在真实环境下无法重现。
在线实验
在线实验(online experiment):在完成离线实验和必要的用户调查后,可以将推荐系统上线做Post not found: 数据分析-ABtest AB测试,将它与旧的算法进行比较。
AB测试:通过一定的规则将用户随机分成几组,并对不同组的用户采用不同的算法,然后通过统计不同组用户的各种不同评测指标比较不同算法。
AB测试的周期比较长,通常不会用AB测试测试所有的算法,而是测试那些在离线实验和用户调查中表现很好的算法。
评测指标
- 定量计算
- 定性描述
可参考《Post not found: Machine-Learning-分类模型评估》。
用户满意度
- 用户满意度是评测推荐系统的最重要指标
- 用户满意度没有办法离线计算,只能通过用户调查或在线实验获得
- 用户调查获得用户满意度主要是通过调查问卷的形式
- 电子商务中,用户如果购买了推荐的商品,则表示他们在一定程度上满意——可以利用购买率度量用户的满意度
- 可以设计一些反馈界面收集用户满意度
准确度
- 预测准确度是最重要的推荐系统离线评测指标
- 在计算该指标时需要有一个离线的数据集(包含用户的历史行为记录);然后,将该数据集通过时间分成训练集和测试集;最后,通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和测试集上实际行为的重合度(即预测准确度)
评分预测的预测准确度通常通过均方根误差(RMSE)和平均绝对误差(MAE)计算。
$$RMSE=\sqrt{\frac{\sum_{u,i\in T}(r_{ui}-\hat{r}_{ui})^2}{|T|} }$$
- $T$是测试集
- $|T|$表示测试集的(用户,物品)对数
- 对测试集中的有一个用户$u$和物品$i$,$r_{ui}$是用户$u$对物品$i$的实际评分,而$\hat{r}_{ui}$是推荐算法给出的预测评分
$$MAE=\frac{\sum_{u,i\in T}|r_{ui}-\hat{r}_{ui}|}{|T|}$$