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

  • 相关阅读:
    Flutter form 的表单 input
    FloatingActionButton 实现类似 闲鱼 App 底部导航凸起按钮
    Flutter 中的常见的按钮组件 以及自 定义按钮组件
    Drawer 侧边栏、以及侧边栏内 容布局
    AppBar 自定义顶部导航按钮 图标、颜色 以及 TabBar 定义顶部 Tab 切换 通过TabController 定义TabBar
    清空路由 路由替换 返回到根路由
    应对ubuntu linux图形界面卡住的方法
    [转] 一块赚零花钱
    [转]在树莓派上搭建LAMP服务
    ssh保持连接
  • 原文地址:https://www.cnblogs.com/z1141000271/p/11378631.html
Copyright © 2011-2022 走看看