推荐系统设计简述

阅读次数:

背景

随着大数据技术的成熟和应用,越来越多APP利用大数据根据用户行为偏好推荐相应兴趣内容,其中包括短视频,论坛,新闻,音乐等等相关APP。本文将从后台工程角度讲述一个推荐系统是如何设计的,着重介绍推荐系统的推荐流程,离线数据处理部分不做过多介绍。

推荐系统总览

如下图所示,一个推荐系统的引擎由召回服务,模型服务,画像服务,特征处理服务组成,与其同时,还需要BI效果看板,AB实验平台,模型管理,标签平台等系统支撑。除此之外,还需具备用户冷启动,item冷启动,兴趣探索等能力。

注:item是指向用户推荐的对象,房间列表推荐场景,item即是指房间,论坛帖子推荐场景,item即是指帖子。

rcmdoverview_f1

画像接入

现有画像数据写入主要来源有两个:1. 近实时画像数据由推荐后台系统消费业务服务端上报的kafka数据,一般数据上报到画像数据可用为毫米级,某些特殊场景为秒级。2. 离线画像由数据上报至数仓,由数仓做数据清洗后,数据开发平台开启任务消费清洗后的数据,写入画像系统。一般数据上报到画像数据可用为T+1,最快也是分钟级别。

rcmdoverview_f2

推荐请求流程

如下图所示,一个完整的推荐流程包括:数据准备阶段,多路召回,过滤,粗排,召回队列合并,精排(特征处理,模型预测),重排,以及下发。

rcmdoverview_f3

数据准备阶段

数据准备阶段,主要做两件事:请求AB系统获取推荐策略分组实验信息和用户侧画像数据准备。

  • AB实验:对于推荐系统 ,每个推荐策略应用一般需做对照实验。比如精排阶段新增模型A,做对照实验,在对照组的用户使用对照模型预测打分,实验组用户用模型A预测打分,实验一段时间后,对比对照组和实验组用户数据,看实验组的业务指标是否提升衡量模型A的推荐效果。关于AB实验更多信息,可自行网上查阅相关信息。
  • 用户侧画像数据准备:一般请求用户基本画像,关系链画像和行为偏好画像,用于决策多路召回的召回队列。

召回

召回是指从召回池取出一定数量的item对象,一般召回会有多路召回队列,用于召回不同的item对象,保证召回item的多样性。以房间列表推荐举个例子,召回队列有:关系链召回,地域召回,实时行为召回等。关系链召回指召回和用户有关联的房主房间,比如关注的人,聊过天的人等等。地域召回指召回和用户同个省份或者同个城市的房间。实时行为召回指召回和用户进过的房间同类型的房间等等。每个召回队列召回的item数量是一定的,数量一般根据具体业务场景具体分析所决定的。每个召回队列都会根据具体的推荐策略针对特定的item对象进行过滤。比如,需要对曝光过的item对象进行过滤。

召回一定数量的item对象,还需要经过粗排阶段。粗排如字面意思,粗略排序,会根据item一些简单特征画像进行规则打分,或者使用召回模型打分(模型输入的特征也是item一些简单的特征画像)。

召回队列合并是指将多个召回队列item对象合并,合并后的对象即是进入到精排阶段的item对象。

精排

精排阶段主要做两件事:特征处理以及模型预测打分。

  • 特征处理:什么是特征?模型预测所需的用户侧和item测数据,比如模型入参需用户年龄,那么用户年龄即是模型所需其中一个特征。特征处理是指用户侧和item侧画像处理成模型所需特征。一般来讲,画像可直接作为模型输入所需特征,但也有画像需计算后才可作为特征输入到模型。举个例子,用户注册时间画像存储的是时间戳,但模型输入的是用户注册天数,那么需要将时间戳转成天数。而这种将时间戳转成天数的通用处理逻辑会抽象出来作为一个算子,不同的算子组成算子库,避免对相似逻辑重复开发。
  • 模型预测打分:将用户侧和item侧特征输入到模型,模型给每个item对象打分,之后,item根据模型的分数进行降序排序。

重排

重排即是重新排序,是对精排根据模型分数排序的item对象重新排序。重排一般在以精排item排序的基础上,对item的强插,降权打压,打散和保量。强插一般是业务指定特定item一定要保证在下发的某个位置,或者前N个下发位。比如下发10个item,业务指定itemA插在列表的第一个位置。降权打压一般指符合指定条件的item排序靠后。打散是指将连续多个位置的同类item进行打散,避免连续位置下发同类型item。保量是指每类item起码有N个。

下发

下发阶段,即将重排后的item对象相应的数据组装返回给调用方。

item数据流转

下图为推荐各个阶段item对象的数量级。一般召回和过滤阶段item数量几千个,进入到精排重排为几百个,下发根据不同推荐场景几个到几十不等。

rcmdoverview_f4

results matching ""

    No results matching ""