推荐系统主要用来根据用户行为数据/用户特征实现个性化体验,行为预测,提高点击率/转化率等关键商业指标。
# 特征
数据很大程度上决定了模型的效果上限,通过特征工程构造合适的特征对效果有举足轻重的影响。
# 流程
推荐系统的功能模块主要包括:
- 召回
从全量候选物品中全选一小部分,规模在千/万级别。对运行速度要求高,通常使用传统机器学习算法或自定义规则。可以搭配使用多种召回方法。召回物品经过滤过滤去重送往下个模块。
- 排序
对召回物品打分拍排序,可以使用更复杂的模型,加入更多特征,更精准的排序。对模型精度要求高,通常使用深度学习方法。排序可细化为粗排,精排和重排三个步骤。
- 粗排
当召回物品数量过多,或者排序模型比较复杂时,会使用相对简单的模型对召回物品粗略排序筛选,进一步降低物品数量。
- 精排
主要排序步骤,会尽可能使用复杂的模型和足够的特征提高模型精度。
- 重排
通常用于进一步调整,比如固定物品插入,多样性保证等。
- AB测试
AB测试系统用来线上衡量模型的效果,通常分为App,Domain(Scene),(Lab),Layer,(Conditional Layer),Experiment(Bucket)等。
# 外围辅助
推荐系统除了核心的算法模块外,还需要外围存储和计算系统的支持,可以包括:
- 离线数仓
以Hive/MaxCompute为代表,用于离线数据批处理,处理后的数据通常放在KV存储中供实时访问,通常以小时或天更新。
- 实时数仓
以HBase/Hologres为代表,用于实时特征访问。
- 关系型数据库
以MySQL,PostgreSQL为代表,用于存储小规模数据,存取速度较快。
- KV缓存数据库
以Redis为代表,存储提前计算好的映射表,可设置失效时间,内存缓存读速度最快。
- 大数据计算引擎
以Spark,Flink为代表,执行批量数据处理和传统机器学习算法,可用于召回阶段。
- 深度学习模型引擎
以Tensorflow,PyTorch为代表,提供更复杂的深度学习模型服务。
- 搜索索引引擎
以ElasticSearch为代表,按条件索引速度较快。