zoukankan      html  css  js  c++  java
  • 第 2 章 推荐系统的核心技术概述

    原文

    全文目录

    多组件, 多模块, 多数据源构成; 涉及用户, 物品, 行为, 上下文等数据;

    计算形式包括大数据平台上的批量计算/挖掘/训练, 流式数据的实时处理, 线上的实时服务;

    核心逻辑拆解

    核心目的: 为用户找当前场景下最具相关性的物品或物品集合;

    以用户兴趣为轴:

    [P(item|user)=sum_{interest} (P(item|interest) × P(interest|user)) ]

    用户与物品的相关性拆解为: 用户与兴趣的相关性和兴趣与物品的相关性的乘积;

    1. (P(item|interest))(P(interest|user)) 任何一个为零, 乘积即为零;

    2. 用户感兴趣的点+兴趣点下物品的相关性;

    三段式逻辑: 用户兴趣+相关性召回+融合排序

    整体流程

    召回算法=>重排序=>业务干预

    • 召回算法会根据不同策略算法召回各个维度相关性的物品, 打分的含义和量纲不尽相同;
    • 重排序是解决召回算法中不同含义/量纲的打分, 以及不同维度的相关性问题, 最终对齐目标;
    • 业务干预是处理业务层面的调整, 过滤不适合推荐或没有库存的商品;

    召回算法

    召回算法的关注点:

    1. 相关性

      核心, 重排和业务干预层均不会引入新的候选物品, 只有召回层决定了用户可见物品的候选集; 如果召回相关性较差的物品, 不仅浪费计算力, 也增加了重排序层的工作负担(需要用更复杂的算法将相关性差的物品排在后面);

    2. 多样性

      • 物品类别多样性, 分类, 种类;
      • 物品标签多样性, 一切可标识物品特点的描述;
      • 召回维度多样性, 依据用户的点击, 搜索, 浏览, 购买, 加购等行为;
    3. 覆盖率

      推荐算法能为多少用户/物品计算出相关物品;

    4. 实时性

      将用户的实时行为用于推荐逻辑的计算, 对推荐结果产生影响, 并让用户感知到变化;

    召回算法分为:

    • 直接基于行为的算法
    • 基于用户画像的算法

    基于行为的召回算法

    相关性数据挖掘, 依赖于:

    • 基于用户行为数据: 协同过滤算法, 准确率会好些, 但是数据稀疏性导致覆盖率较低; 且多样性和时效性较差;
    • 基于物品属性数据: 内容相似度算法, 相反;

    用户画像和物品画像

    用户画像建设工作的核心点:

    1. 判断哪些用户画像对推荐系统或其他业务有帮助;(重要性高于第二点)
    2. 如何挖掘这些画像;

    物品画像是用户画像的基础, 首先提取物品层面的多维度描述, 再通过用户对物品的行为关系, 计算出用户在这些维度上的描述;

    结果排序

    • 简单做法, 基于一套规则的融合方法, 可以选择分层式或加权融合式;
    • 数据和技术积累到一定程度, 选择基于机器学习的排序技术取代基于规则的排序技术;

    评价指标

    • 结果指标, 用来最终衡量推荐系统好坏的指标;

    • 过程指标, 对结果指标的分解, 分解为几个可具体操作的维度, 好处是对结果指标的把控, 以及出现问题时的分析处理;

    • 短期指标

    • 长期指标

    系统监控

    • 评价指标是指导系统的持续迭代优化;
    • 监控指标是及时发现系统的突发问题, 保证系统的稳定运行;

    架构设计

    • 在线服务架构设计, 核心是系统的稳定运行, 算法策略的足量生效, 对策略快速迭代的支持;
    • 离线, 偏向于生产准确率高, 覆盖率高的商品和用户数据;
    • 近线, 快速处理用户和物品的行为和信息变动, 为在线服务提供实时性高的数据服务;

    推荐系统的流程简图



    欢迎您扫一扫上面的微信公众号, 订阅我的博客!

    文章作者:Memento
    博客地址:http://www.cnblogs.com/Memento/
    版权声明:Memento所有文章遵循创作共用版权协议,要求署名、非商业、保持一致。在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。

  • 相关阅读:
    JDBC的步骤
    Java异常
    两个init方法的区别
    迭代器、foreach循环、泛型集合
    servlet的生命周期
    集合类对比
    在servlet中的中文乱码,相对路径和绝对路径
    【转】学习使用Jmeter做压力测试(一)--压力测试基本概念
    【转】jmeter压力测试
    【转】配置Jmeter的自定义参数
  • 原文地址:https://www.cnblogs.com/memento/p/14485435.html
Copyright © 2011-2022 走看看