1. 推荐系统的作用和意义
在这个时代,无论信息消费者还是信息生产者都面临巨大的挑战。
信息消费者:在大量信息中找到自己感兴趣的信息很困难。
信息生产者:将自己生产的信息让广大消费者关注很困难。
推荐系统将用户与信息 联系起来。
1.1 用户角度
推荐系统解决在“信息过载 ”1 的情况下,用户如何高效获取感兴趣的信息。
比如:在大量电影、电视剧中无法选择出自己喜欢的,或者不知道自己喜欢的;在购物网站,不知道哪些商品适合自己等。
另外,用户大部分时候没有特别明确的需求 ,因为如果有明确的需求,在搜索框找自己想要的东西就行。
搜索引擎和推荐系统区别:
1.2 公司角度
推荐系统解决产品能够最大限度地吸引用户、留存用户、增加用户黏性、提高用户转化率 的问题,从而达到公司商业目的。
1.3 物品角度
推荐系统可以更好地发掘物品的长尾(Long Tail)2 。
主流商品往往代表了绝大多数用户的需求,而长尾商品往往代表了一小部分用户的个性化需求 。
2. 推荐系统的逻辑架构
推荐系统的本质其实就是要处理 “人” 和 “信息” 之间的关系问题
2.1 信息(Item)
数字时代,信息是关键
这种信息,实际上是多种多样的。在商品推荐中是指“商品信息”,在视频推荐中是指“视频信息”,我们将其统称为物品信息 。
物品信息包含了物品的属性、特点等等。
2.2 人(User)
人 才是一切服务的对象
从“人”的角度出发,为了更可靠地推测出“人”的兴趣点,推荐系统希望可以利用大量与“人”有关的信息,我们将其统称为用户信息 。
用户信息包含了用户的历史行为、人口属性、关系网等等。
2.3 场景(Context)
环境千差万别,情况也瞬息万变
在具体的推荐场景中,用户还会受到不同环境信息的影响,我们将其统称为场景信息 或 上下文信息 。
场景信息包含了例如时间、地点、用户此时的状态的等等。
2.4 推荐系统的形式化定义
对于某个用户U(User) ,在特定的场景 C(Context) 下,针对海量的物品信息构建一个函数,预测用户对于特定候选物品 I(Item) 的喜好程度,再根据喜好程度对所有候选物品进行排序,生成推荐列表的问题。
3. 推荐系统的技术架构
3.1 两类问题
深度学习推荐系统架构和经典的推荐系统架构是一脉相承的,其本质是对经典的推荐系统架构中某些特定的模块进行改进 ,使之能够支持深度学习的应用,因此经典推荐系统框架仍然具有举足轻重的作用。
实际的推荐系统中,需要着重解决的两类问题:
数据和信息:用户信息、物品信息、场景信息分别是什么?如何存储、更新和处理这些数据呢?
算法和模型:推荐系统模型如何训练、预测以及如何达成更好的推荐效果?
“数据和信息”部分逐渐发展为推荐系统中融合了数据离线批处理、实时流处理的数据流框架;
“算法和模型”部分则进一步细化为推荐系统中,集训练(Training)、评估(Evaluation)、部署(Deployment)、线上推断(Online Inference)为一体的模型框架。
3.2 数据部分
数据部分主要负责用户、物品、场景信息 的收集和处理。
对数据处理实时性由强到弱排序依次为:客户端与服务器端实时数据处理、流处理平台准实时数据处理、大数据平台离线数据处理。
即 在得到原始数据信息后,推荐系统的数据处理系统 会将原始数据进一步加工。
3.3 模型部分
模型部分是推荐系统的主体
模型的结构一般由 召回层 、排序层 以及 补充策略与算法层 组成。
3.3.1 召回层3
利用高效的召回规则、算法或简单的模型,快速从海量候选集中召回用户可能感兴趣的物品。
3.3.2 排序层4
利用排序模型对初筛的候选集进行精排序 。
3.3.3 补充策略与算法层
也称为再排序层 。
在将推荐列表返回给用户之前,针对多样性 、流行度 、新鲜度 等指标,结合一些补充的策略以及算法对推荐列表进行适当调整,最终形成用户可见的推荐列表。
3.3.4 总结
以上模块共同组成了推荐系统模型部分的框架。
排序层 模型是推荐系统产生效果的重点,也是研究的重心!
召回层就好比歌唱比赛的海选,对于所有数据快速进行筛选。
排序层就好比歌唱比赛的晋级赛,从海选通过的选手中选出最好的一部分。
最后的补充层就好比决赛,对于本来已经很好的选手,进行最后地选择。
4. 深度学习与推荐系统
深度学习到底给推荐系统带来了什么革命性的影响呢?
在逻辑架构 中我们知道,居于中心位置的抽象函数 f ( U , I , C ) f(U,I,C) f ( U , I , C ) ,负责对用户的内心想法进行“猜测”,为用户可能感兴趣的产品进行打分,最终得到推荐物品列表,这个函数一般称为“推荐系统模型”
深度学习应用在推荐系统中,极大地增强了推荐模型的 拟合能力5 和 表达能力6
什么意思呢?
如果我们说 f ( U , I , C ) f(U,I,C) f ( U , I , C ) 这个函数具有最优的表达形式,那么传统模型只能够拟合出此函数的近似形式,而深度学习模型则可以极大程度地接近这个最优的表达形式。
另外,深度学习模型还具备一个无法替代的优势:我们可以让深度学习模型的神经网络模拟很多用户兴趣的变迁过程,甚至用户做出决定的思考过程。 (这也是深度学习模型的恐怖之处)
5. 推荐系统评测
什么是好的推荐系统?
最开始很多人认为,好的推荐系统就是能够准确预测的推荐系统。实则不然,比如一件商品,某用户早就有想买的打算,不管推荐给他与否他都会买,这样的推荐结果并没有增加此商品的潜在购买人数,因此准确率看起来是很好的指标,但其实是一个很失败的推荐。
举一个极端例子:某系统预测明天太阳将在东方升起,虽然准确率可以达到100%,但是这样的预测却没有任何意义。
好的推荐系统不仅能够准确预测用户的行为,还可以帮助用户找到自己感兴趣但是却不容易发现的东西。
5.1 推荐系统实验方法
分为 离线实验 、用户调查 和在线实验
5.1.1 离线实验
5.1.1.1 步骤
获得用户行为数据,生成数据集
将数据集分成训练集和测试集
在训练集上训练用户兴趣模型,在测试集上进行预测
通过事先定义的指标评测算法在测试集上的预测结果。
和传统机器学习训练模型过程类似
5.1.1.2 优缺点
优点
缺点
不需要有对实际系统的控制权
无法计算商业上关心的指标
不需要用户参与实验
离线实验的指标和商业指标存在差距
速度快,可以测试大量算法
5.1.2 用户调查
离线实验的指标和商业指标有差距,即高预测准确率并不代表高用户满意度。
需要一个较为真实的环境测试算法,最好的办法就是上线测试 ,但是具有较高的风险,因此上线测试前一般需要做一次用户调查。
5.1.2.1 注意事项
控制成本
用户调查的成本很高,需要用户大量时间完成任务并回答问题,有时候甚至需要花钱雇用测试用户。一般大量测试用户耗费成本,而少量测试用户得出的结论往往没有统计意义。因此需要一方面控制成本,一方面保证测试结果。
双盲实验
不要让实验人员和用户事先知道测试的目标,以免用户的回答和实验人员的测试受主观成分的影响。
相同分布
测试用户需要尽量保证测试用户的分布和真实用户的分布相同,比如男女各半,以及年龄、活跃度的分布都和真实用户分布尽量相同。
5.1.2.2 优缺点
优点
缺点
可以获得很多体现用户主观感受的指标
招募测试用户代价较大、成本较高
相对于在线实验风险较低,容易弥补错误
设计双盲实验困难
5.1.3 在线实验
当完成离线测试和用户调查后,可以将推荐系统上线做AB测试7 ,将它和旧的算法进行比较。
5.1.3.1 优缺点
优点
缺点
可以公平获得不同算法实际在线是的性能指标
周期较长,需要长期实验才能得到可靠的结果
一般不会用AB测试测试所有的算法,只会测试在离线实验和用户调查中表现很好的算法。 一个大型网站的AB测试系统的设计也是一项复杂的工程。
5.1.4 总结
一个新的推荐系统最终上线,需要完成如上的三个实验
需要通过离线实验 证明它在很多指标上优于现有算法
需要通过用户调查 确定它的用户满意度不低于现有算法
需要通过AB测试 确定它在我们关心的指标优于现有算法
5.2 评测指标
在以上三种测试中,使用各种评测指标来评价推荐系统各方面的性能。
5.2.1 用户满意度
用户作为推荐系统的重要参与者,用户满意度是最重要的指标,但是其无法离线计算,只能在用户调查或在线测试中获得。
在在线系统中,用户满意度主要由一些对用户行为的统计得到。比如:
使用购买率度量用户满意度
使用用户反馈界面收集用户满意度
更一般的情况,使用点击率、用户停留时间、转化率等指标度量用户满意度
5.2.2 预测准确度
预测准确度度量了一个推荐系统或算法预测用户行为的能力,是最重要的推荐系统离线评测指标 。
5.2.2.1 评分预测
预测用户对物品的评分
均方根误差(RMSE)
R M S E = ∑ u , i ∈ T ( r u i − r ^ u i ) 2 ∣ T ∣ \mathrm{RMSE} = \frac{\sqrt{\sum_{u,i\in T}(r_{ui}-\hat{r}_{ui})^2}}{\big|T\big|} R M S E = ∣ ∣ T ∣ ∣ ∑ u , i ∈ T ( r u i − r ^ u i ) 2