多组件, 多模块, 多数据源构成; 涉及用户, 物品, 行为, 上下文等数据;
计算形式包括大数据平台上的批量计算/挖掘/训练, 流式数据的实时处理, 线上的实时服务;
核心逻辑拆解
核心目的: 为用户找当前场景下最具相关性的物品或物品集合;
以用户兴趣为轴:
[P(item|user)=sum_{interest} (P(item|interest) × P(interest|user))
]
用户与物品的相关性拆解为: 用户与兴趣的相关性和兴趣与物品的相关性的乘积;
-
(P(item|interest)) 和 (P(interest|user)) 任何一个为零, 乘积即为零;
-
用户感兴趣的点+兴趣点下物品的相关性;
三段式逻辑: 用户兴趣+相关性召回+融合排序
整体流程
召回算法=>重排序=>业务干预
- 召回算法会根据不同策略算法召回各个维度相关性的物品, 打分的含义和量纲不尽相同;
- 重排序是解决召回算法中不同含义/量纲的打分, 以及不同维度的相关性问题, 最终对齐目标;
- 业务干预是处理业务层面的调整, 过滤不适合推荐或没有库存的商品;
召回算法
召回算法的关注点:
-
相关性
核心, 重排和业务干预层均不会引入新的候选物品, 只有召回层决定了用户可见物品的候选集; 如果召回相关性较差的物品, 不仅浪费计算力, 也增加了重排序层的工作负担(需要用更复杂的算法将相关性差的物品排在后面);
-
多样性
- 物品类别多样性, 分类, 种类;
- 物品标签多样性, 一切可标识物品特点的描述;
- 召回维度多样性, 依据用户的点击, 搜索, 浏览, 购买, 加购等行为;
-
覆盖率
推荐算法能为多少用户/物品计算出相关物品;
-
实时性
将用户的实时行为用于推荐逻辑的计算, 对推荐结果产生影响, 并让用户感知到变化;
召回算法分为:
- 直接基于行为的算法
- 基于用户画像的算法
基于行为的召回算法
相关性数据挖掘
, 依赖于:
- 基于用户行为数据: 协同过滤算法, 准确率会好些, 但是数据稀疏性导致覆盖率较低; 且多样性和时效性较差;
- 基于物品属性数据: 内容相似度算法, 相反;
用户画像和物品画像
用户画像建设工作的核心点:
- 判断哪些用户画像对推荐系统或其他业务有帮助;(重要性高于第二点)
- 如何挖掘这些画像;
物品画像是用户画像的基础, 首先提取物品层面的多维度描述, 再通过用户对物品的行为关系, 计算出用户在这些维度上的描述;
结果排序
- 简单做法, 基于一套规则的融合方法, 可以选择分层式或加权融合式;
- 数据和技术积累到一定程度, 选择基于机器学习的排序技术取代基于规则的排序技术;
评价指标
-
结果指标, 用来最终衡量推荐系统好坏的指标;
-
过程指标, 对结果指标的分解, 分解为几个可具体操作的维度, 好处是对结果指标的把控, 以及出现问题时的分析处理;
-
短期指标
-
长期指标
系统监控
- 评价指标是指导系统的持续迭代优化;
- 监控指标是及时发现系统的突发问题, 保证系统的稳定运行;
架构设计
- 在线服务架构设计, 核心是系统的稳定运行, 算法策略的足量生效, 对策略快速迭代的支持;
- 离线, 偏向于生产准确率高, 覆盖率高的商品和用户数据;
- 近线, 快速处理用户和物品的行为和信息变动, 为在线服务提供实时性高的数据服务;