推荐系统实战(一)

一、推荐系统简介

​ 个性化推荐(推荐系统)经历了多年的发展,已经成为互联网产品的标配,也是AI成功落地的分支之一,在电商(淘宝/京东)、资讯(今日头条/微博)、音乐(网易云音乐/QQ音乐)、短视频(抖音/快手)等热门应用中,推荐系统都是核心组件之一。

推荐系统产生背景

信息过载 & 用户需求不明确

  • 分类⽬录(1990s):覆盖少量热门⽹站,如Hao123 和 Yahoo
  • 搜索引擎(2000s):通过搜索词明确需求,如Google 和 Baidu
  • 推荐系统(2010s):不需要⽤户提供明确的需求,通过分析⽤户的历史⾏为给⽤户的兴趣进⾏建模,从⽽主动给⽤户推荐能够满⾜他们兴趣和需求的信息。

什么是推荐系统

没有明确需求的用户访问了我们的服务, 且服务的物品对用户构成了信息过载, 系统通过一定的规则对物品进行排序,并将排在前面的物品展示给用户,这样的系统就是推荐系统

推荐系统 V.S. 搜索引擎

搜索 推荐
行为方式 主动 被动
意图 明确 模糊
个性化
流量分布 马太效应 长尾效应
目标 快速满足 持续服务
评估指标 简明 复杂

推荐系统的作用

  • 高效连接用户和物品, 发现长尾商品
  • 留住用户和内容生产者, 实现商业目标

推荐系统的工作原理

  • 社会化推荐 向朋友咨询, 社会化推荐, 让好友给自己推荐物品
  • 基于内容的推荐 打开搜索引擎, 输入自己喜欢的演员的名字, 然后看看返回结果中还有什么电影是自己没看过的
  • 基于流行度的推荐 查看票房排行榜,
  • 基于协同过滤的推荐 找到和自己历史兴趣相似的用户, 看看他们最近在看什么电影

推荐系统的应用场景

推荐系统和Web项目的区别

  • 稳定的信息流通系统 V.S. 通过信息过滤实现目标提升
    • web项目: 复杂逻辑 高并发 高可用
    • 推荐系统: 追求指标增长, 留存率/阅读时间/GMV (Gross Merchandise Volume电商网站成交金额)/视频网站VV (Video View)
  • 确定 V.S. 不确定思维
    • web项目: 对结果有确定预期
    • 推荐系统: 结果是概率问题

二、推荐系统评估

好的推荐系统可以实现用户, 服务提供方, 内容提供方的共赢

显示反馈和隐式反馈

显示反馈 隐式反馈
例子 电影/书籍评分 是否喜欢这个推荐 播放/点击 评论 下载 购买
准确性
数量
获取成本

常用评估指标

准确性 信任度
满意度 实时性
覆盖率 鲁棒性
多样性 可扩展性
新颖性 商业⽬标
惊喜度 ⽤户留存
  • 准确性 (理论角度)
    • 评分预测
      • RMSE MAE
    • topN推荐
      • 召回率 精准率
  • 准确性 (业务角度)

  • 覆盖度
    • 信息熵
    • 覆盖率
  • 多样性&新颖性&惊喜性
    • 多样性:推荐列表中两两物品的不相似性。(相似性如何度量?
    • 新颖性:未曾关注的类别、作者;推荐结果的平均流⾏度
    • 惊喜性:历史不相似(惊)但很满意(喜)
    • 往往需要牺牲准确性
    • 使⽤历史⾏为预测⽤户对某个物品的喜爱程度
    • 系统过度强调实时性

Exploitation & Exploration 探索与利用问题

  • Exploitation(开发 利用):选择现在可能最佳的⽅案
  • Exploration(探测 搜索):选择现在不确定的⼀些⽅案,但未来可能会有⾼收益的⽅案
  • 在做两类决策的过程中,不断更新对所有决策的不确定性的认知,优化
    长期的⽬标
  • EE问题实践
    • 兴趣扩展: 相似话题, 搭配推荐
    • 人群算法: userCF 用户聚类
    • 平衡个性化推荐和热门推荐比例
    • 随机丢弃用户行为历史
    • 随机扰动模型参数
  • EE可能带来的问题
    • 探索伤害用户体验, 可能导致用户流失
    • 探索带来的长期收益(留存率)评估周期长, KPI压力大
    • 如何平衡实时兴趣和长期兴趣
    • 如何平衡短期产品体验和长期系统生态
    • 如何平衡大众口味和小众需求
    • 如何避免劣币驱逐良币

评估方法

  • 问卷调查: 成本高
  • 离线评估:
    • 只能在用户看到过的候选集上做评估, 且跟线上真实效果存在偏差
    • 只能评估少数指标
    • 速度快, 不损害用户体验
  • 在线评估: 灰度发布 & A/B测试
  • 实践: 离线评估和在线评估结合, 定期做问卷调查

三、推荐系统设计

推荐系统要素

  • UI 和 UE(前端界面)
  • 数据 (Lambda架构)
  • 业务知识
  • 算法

推荐系统架构

  • 推荐系统整体架构

  • 大数据Lambda架构

    • 由Twitter工程师Nathan Marz(storm项目发起人)提出

    • Lambda系统架构提供了一个结合实时数据和Hadoop预先计算的数据环境和混合平台, 提供一个实时的数据视图

    • 分层架构

      • 批处理层
        • 数据不可变, 可进行任何计算, 可水平扩展
        • 高延迟 几分钟~几小时(计算量和数据量不同)
        • 日志收集 Flume
        • 分布式存储 Hadoop
        • 分布式计算 Hadoop MapReduce & spark
        • 视图存储数据库
          • nosql(HBase/Cassandra)
          • Redis/memcache
          • MySQL
      • 实时处理层
        • 流式处理, 持续计算
        • 存储和分析某个窗口期内的数据
        • 最终正确性(Eventual accuracy)
        • 实时数据收集 flume & kafka
        • 实时数据分析 spark streaming/storm/flink
      • 服务层
        • 支持随机读
        • 需要在非常短的时间内返回结果
        • 读取批处理层和实时处理层结果并对其归并
    • Lambda架构图

  • 推荐算法架构

    • 召回阶段(海选)
      • 召回决定了最终推荐结果的天花板
      • 常用算法:
        • 基于用户行为的协同过滤
        • 基于内容 (根据用户行为总结出自己的偏好)
        • 基于隐语义
    • 排序阶段
      • 召回决定了最终推荐结果的天花板, 排序逼近这个极限, 决定了最终的推荐效果
      • CTR预估 (点击率预估 使用LR算法)
    • 策略调整

  • 推荐系统的整体架构

    • 业务架构

    • 技术架构

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2020 chenk
  • 由 帅气的CK本尊 强力驱动
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信