zoukankan      html  css  js  c++  java
  • 推荐系统实践笔记(一)

    第一章:好的推荐系统

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

  • 相关阅读:
    在CentOS7上部署OpenStack 步骤详解
    Linux运维工程师工作手册
    Nginx+Keepalived实现Web服务器负载均衡
    Django Nginx+uwsgi 安装配置
    Docker-搭建Docker Registry
    centos7系统默认防火墙Firewall使用方法
    Shell脚本编写及常见面试题(二)
    Shell脚本编写及常见面试题(一)
    Linux之解决每次git pull/git push都需输入密码设置
    基于thinkphp5的Excel上传
  • 原文地址:https://www.cnblogs.com/z1141000271/p/11378631.html
Copyright © 2011-2022 走看看