推荐系统实践笔记(一)
第一章:好的推荐系统
1.1 什么是推荐系统
当用户没有明确需求的时候(有明确需求的时候,通过搜索引擎一般都能够解决问题),如果周末想去看电影,但是不确定看什么电影(不确定的需求),这时候需要一个自动化的工具,它能够根据你的历史行为分析出你可能会喜欢哪些系统.推荐系统是自动联系用户和物品的一种工具.
1.2 个性化推荐系统
(1) 电子商务 (item_base)
(2) 电影以及视频网站
(3) 个性化的音乐电台 (Pandora对音乐进行专家标注,embedding的思想,在推荐的时候利用其专家标注来计算相似度)
(4) 社交网络
a. 利用社交网络信息对用户进行个性化的物品推荐(你的好友近期的动态作为你的历史行为的一个参考,也就是你可能会感兴趣的部分)
b. 信息流的会话推荐(facebook的EdgeRank算法尽量保证用户能看到熟悉的好友的最新会话)
c. 给用户推荐好友
(5) 个性化阅读
(6) 基于位置的服务
(7) 个性化邮件
(8) 个性化广告
1.3 推荐系统评测
一个好的推荐系统需要考虑三个参与方:用户,物品提供者,提供推荐系统的网站.好的推荐系统不仅仅要能够准确的预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能会感兴趣,却不容易发现的东西.
1.3.1 推荐系统实验方法
1. 离线实验.
(1) 通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;
(2) 将数据集按照一定的规则分成训练集和测试集;
(3) 在训练集上训练用户兴趣模型,在测试集上进行预测;
(4) 通过事先定义的离线指标评测算法在测试集上的预测结果。
好处: 实验在日志系统提供的数据集上进行,不需要用户参与,能够方便,快速的测试大量不同的算法.
缺点: 无法获得很多商业上关注的指标,如点击率、转化率等,而找到和商业指标非常相关的离线指标也是很困难的事情.
2. 用户调查
离线实验和实际的商业指标有着一定的差距,而直接上线测试有着比较高的风险,一般在实际上线之前有一个用户调查.
3. 在线实验
AB测试简单来说,就是为同一个目标制定两个方案(比如两个页面),让一部分用户使用 A 方案,另一部分用户使用 B 方案,记录下用户的使用情况,看哪个方案更符合设计目标。切分流量是AB测试中的关键,不同的层以及控制这些层的团队需要从一个统一的地,方获得自己AB测试的流量,而不同层之间的流量应该是正交的。
一个推荐系统在上线之前需要经过上述三个实验:
(a) 首先,通过离线实验证明一个算法优于现存的算法.
(b) 其次,需要通过用户调查确定该算法的用户满意度不低于现有算法
(c) 通过在线的AB测试确定它在研究人员关心的指标上优于现有的算法.
1.3.2 评测指标
1. 用户满意度(通过在线的反馈获取,可以是用户的点击率,用户停留时间和转化率)
2. 预测准确度
推荐系统或者算法预测用户行为的能力,是重要的离线数据.
(a) 一般用RMSE(均方根误差)和平均绝对误差(MAE)计算.RMSE由于有平方项的计算,会加大对预测不准用户评分的惩罚,其训练出来的系统会更加严苛一些,如果评分系统是基于整数建立的(即用户给的评分都是整数),那么对预测结果取整会降低 MAE 的误差.
(b) TopN推荐.网站在提供推荐服务的时候,一般是给用户一个个性化的推荐列表,TopN的预测准确率一般通过(precision/recall)来度量.recall是从所有实际为真的样本中被正确分类的比例,precision是所有被预测为真的样本中实际是真样本的概率.
3. 覆盖率 (内容提供商关注的评价指标)
描述一个推荐系统对物品长尾的挖掘能力.最简单的定义方法为推荐系统能够推荐出来的物品占总物品的比例.主要评价指标有两个,一个是信息熵:
另一个是基尼指数:.如果各个物品都在推荐系统的列表中,且出现的次数差不多,那么推荐系统的长尾发掘能力就很好(每个物品都要推荐给适合的人,对于那些不热门的物品,一个好的推荐系统也要有推荐的能力)
(这里p(i)是物品i的流行度除以所有物品流行度之和,$i_j$是按照流行度p()从小到大排序的物品列表中第j个物品)
马太效应: 强者更强,弱者更多.一个系统会增大热门与非热门物品流行的差距,那么这个系统就是有马太效应.主流的推荐系统算法是有马太效应的,判断是否有马太效应的方法,比较推荐前后物品流行度的gini指数,如果推荐后gini指数增大,那么该系统有马太效应.
4. 多样性
5. 新颖性 (推荐用户没有接触过的物品)
6. 惊喜度 (推荐结果与用户历史兴趣不相似但却让用户觉得满意,那么可以说该推荐的惊喜度比较高)
7. 信任度 (用户对系统信任程度)
8. 实时性 (实时更新推荐列表;能够将新加入系统的物品推荐给用户)
9. robust (抗击作弊的能力)
处理方法:
(1) 在训练的时候模拟攻击注入噪声
(2) 设计推荐系统的时候尽量使用代价比较高的用户行为
(3) 在使用数据之前, 进行攻击检测,从而对数据进行清理
指标总结:(1)
(2)离线实验优化的目标:
最大优化预测精准度
使得 覆盖率 > A
多样性 > B
新颖性 > C
其中, A 、 B 、 C 的取值应该视不同的应用而定。