架构设计
概述
从常用概念展开,简要介绍基本原理和流程,以便业务方了解如何构建和使用推荐系统。
基本概念
推荐系统
通过将内容 (生产方) 与用户 (消费方) 进行匹配,提供符合不同消费方各自偏好的内容,在不同业务方的知识体系中可能会被称为: 智能分发,个性化推荐,千人千面。
内容
平台或用户所生产出的成果,可以为文章,视频,课程,商品等。
用户
对内容进行消费的对象,可以为普通用户,商业客户,第三方服务等。
行为
用户对内容产生的操作,如点击,收藏,购买,分享等,通过日志记录存储后,用于建立内容与用户的关联。
标签
通过人工或机器的方法,对内容和用户添加特征,用来标识其特有属性,可从内容本身中发现,也可从用户行为中体现,也可由用户自行填写,如用户性别,内容长度,内容分类等。
适用场景
什么时候引入推荐系统:
当内容和用户积累达到一定量级 (内容至少千级),且内容分布达到一定宽度,可分离出不同维度,进而产生了用户对内容的偏好性,需要对内容进行合理高效的分发以充分利用流量,并开始要求高并发高实时的性能时,可以开始考虑使用推荐系统。
实现依赖
仅简要阐述实现推荐系统所需的功能组件,是基本概念的具象化。
内容画像
可包含:
- 标签,类别等结构化特征
- 原始文本,图片等非结构化特征
- 动态属性,如用户行为的聚合
用户画像
可包含:
- 静态属性,如一经确定不再变更,如性别,年龄等自然属性
- 动态属性,在一定时间尺度内会有变更,长期的如居住城市等社会属性,中短期的如一个月内感兴趣的内容类型
- 用户行为,通过分析用户对内容的行为,建立起两个画像间的连接,从对内容的态度可分为
- 显式反馈,用户直接表现出的行为,如点击,分享,评论
- 隐式反馈,用户间接表现出的行为,如停留时长,点击次数,搜索次数
- 正向反馈,用户表现出的偏好行为,如点赞,收藏
- 负向反馈,用户表现出的非偏好行为,如点踩,举报,点不感兴趣
以上两个维度可以互相组合,如显式负反馈,隐式正反馈。
个性化推荐策略
通过设计多种推荐策略,召回不同内容,组合后提供给用户,以满足不同类型的需求。
协同过滤
经典的推荐方法,可以不基于预先准备的用户画像和内容画像体系,依靠大量的用户与内容的关系行为,对相似用户提供相似内容,缺点是颗粒度依赖数据量,且需要批量计算,无法做到实时响应。
长期
对于长期的关注和订阅需求,在用户显式反馈后,召回其下属内容,给予推荐。
短期
对于短期内的点击或搜索行为,将基于内容的标签更新至用户画像后,在下一次推荐中即可提供相关标签的内容,从而达到准实时的响应,提高用户体验。
场景
对于不同业务,可细分出不同场景下的差异,如工作日与周末,早晚高峰与睡前均会对内容存在不同偏好。
热门候补
通过计算全局性的热门内容,用于在冷启动或无更多个性化内容时,扩充用户画像。
负反馈
如果产品形态有负反馈功能,如对某个标签不感兴趣,对于用户显式负反馈的内容,可在结果中进行过滤。
数据驱动
新增功能和优化功能均需要经过以下环节评估效果。
线下|模型指标
针对不同业务场景,设计对应方案,使用不同模型,用机器学习的指标评估模型效果,达到一定基准线可进入线上环节。
线上|A/B 测试
设计对照组和测试组,切一部分真实流量,运行一段时间后,观察核心指标的差异,如有提升可认为达到预期效果,最终逐步替换现有方案。
业务形态
涉及将内容分发给用户的场景均可使用,推荐系统在广义上就是对用户画像和内容画像的有效使用,因此除实现资讯流这样的具体产品形态外,也可扩展至精准推送,用户分层等,以提供服务的形式满足更深层需求。