召回服务框架
03.png任务调度平台
主流的任务调度框架airflow
airflow是一款开源的,分布式任务调度框架,它将一个具有上下级依赖关系的工作流,组装成一个有向无环图
特点:
-
分布式任务调度:允许一个工作流的task在多台worker上同时执行
-
可构建任务依赖:以有向无环图的方式构建任务依赖关系(前面任务执行完后面任务也可以继续执行)
-
task原子性:工作流上每个task都是原子可重试的,一个工作流某个环节的task失败
可自动或手动进行重试,不必从头开始任务
注:任务调度平台通常是大数据部或者算法工程组的人联合开发,涉及数据,平台,算法,底层存储,监控等
在GDags中构有向无环图
image-20220123204542820.png image-20220123204604976.png一个dag表示一个定时的工作流,一个工作流包含多个节点
image-20220123205013312.png示例:
基于item_cf的任务调度
涉及任务
-
抽取日志数据任务
-
Item_cf计算任务
任务必须先抽取数据,后计算存在先后依赖关系,因此必须设置这两个task依赖关系
向量服务平台
向量服务平台,也称向量检索服务, 其解决的问题是从海量向量数据中高精度、高性能的召回出与目标最相似的数据。
向量服务平台的底层架构有多种,
-
基于量化的索引
-
基于树的索引
-
基于图的索引
-
基于哈希的索引
主要介绍基于树的索引,工业落地使用最多
方法原理:(搜索树思想)用超平面把高维空间分割成多个子空间,并把这些子空间以树型结构存储的索引方式
算法实现:ANN(Approximate Nearest Neighbor)搜索算法, faiss, Annoy, balltree
架构
image-20220123205331990.png示例:
matrix_cf 获得:
user_embedding
item_embedding
存入向量库中并加载到向量检索中提供服务
ANN算法-Balltree
1. 构建
选择一个距离当前圆心最远的观测点i1,和距离i1最远的观测点 i2,将圆中所有离这两个点最近的观测点都赋给这两个簇的中心,然后计算每一个簇的中心点和包含所有其所属观测点的最小半径。(欧氏距离)
不断递归
image-20220123205520202.png特征服务
特征服务实际为一个存储用户特征和物料特征的存储平台
特点:
1. 存储的特征,包含:原始型和处理型
2. 存储的特征是实时更新的
3. 对外提供服务是并发、高效、安全的
4.分布式、可扩展性
示例:
用户点击历史特征
hist:[item2, item1] 存放在server nodes中
当用户点击了item3,这个时候,特征实时更新,worker nodes处理后pull到server nodes
Hist:[item3,item2, item1] item3放前面方便获取
image-20220123210321345.pngredis存储平台
redis存储平台是一个开源的、基于内存的数据结构存储器,可以用作数据库、缓存和消息中间件
特点:
1. C/S架构,即Client和Server
2. 可分布式、可扩展性、高吞吐量
Client和Server可以是在一台机器上的,也可以不在
image-20220123210505404.png召回服务开发
item_cf召回
ItemCF的主要思想是:给用户推荐之前喜欢物品的相似物品。模式:I2I
基于物品的协同过滤算法主要有三步:
-
计算物品之间的相似度
-
计算推荐结果
-
惩罚热门物品/加入关联规则
物品相似度的计算公式:
分子部分表示的是对物品i和物品j共同产生过行为的用户个数。
分母表示的是对物品i产生过行为的个数。
一旦物品j被所有用户所点击即热门物品,无论物品i如何整个w_ij都为1,所以需要对热门物品进行惩罚。
当j很大时,整个分母对应都会变大,w_ij变小。
因为不活跃用户对物品相似度的贡献应该大于活跃用户对物品相似度的贡献,所以应该降低活跃用户对相似度的贡献。
所以应该降低活跃用户对相似度计算的权重,即对活跃用户进行惩罚,改进为:
然后我们会基于一定的规则对这个相似度权重进行加权
-
考虑时间因素, 两篇资讯点击时间相近权重大,相远权重小
-
考虑资讯自身类别因素,两篇资讯的类别的权重,其中类别相同权重大
user_cf召回
UserCF的主要思想是:给用户推荐与其相似的用户喜欢的的物品。
模式:u2u2i【从用户到用户找物品】
基于用户的协同过滤算法主要有三步:
-
计算用户之间的相似度
-
计算推荐结果
-
惩罚热门物品/加入关联规则
用户相似度的计算公式:
区别
ItemCF:与该物品有过行为的用户集合
UserCF:与该用户有过行为的物品
FM算法
FM召回
FM英文全称是“Factorization Machine”,简称FM模型,是一种基于矩阵分解的机器学习算法。
是为了解决大规模稀疏矩阵中特征组合问题
基于FM召回的算法主要有三步:
-
初始化线性部分LR的权重W和交叉部分的隐向量权重V
-
基于计算公式, 分别求出线性部分的输出和交叉部分的输出
-
综合两种的输出获得预估值,然后交叉熵loss,梯度更新权重W和V
最终获得每个特征的隐向量权重V
取矩阵上半部分
image-20220124161600383.png image-20220124161659596.png代码基于step4开发。
网友评论