推荐系统实践笔记(一)

第一章:好的推荐系统

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 的取值应该视不同的应用而定。

posted @ 2019-08-19 17:56  猪突猛进!!!  阅读(709)  评论(0编辑  收藏  举报