连续值特征多分桶在冷启动效率提升中的应用

1. 模型中冷启动问题核心关键点

冷启动问题一般定义为在较短的时间(学习探索期)X内,冷启体Y达到Z目标,一般在学习探索期内反馈信号的数量小于Z,导致一般的DNN模型针对冷启体Y的id emb学习不充分。本文论证一种特征工程侧的方法优化DNN模型对冷启体Y的id emb学习不充分的问题

2. 连续值特征提升冷启效率的理论依据与工程实践

  • 连续值特征提升冷启效率的理论依据(以新用户冷启为例)

a. 在新用户数据中,每一个不同的uid,覆盖ins(请求粒度样本条数)的数据量有限,这时uid特征我们称作长尾特征,长尾特征在DNN模型训练过程中因为覆盖量有限,id emb学习不充分。所以我们考虑对长尾特征进行聚类。可以考虑使用user profile特征替代uid特征,比如用age特征替代uid特征,age-gender组合特征替代uid特征。通过user profile特征 fake (uid特征),实际上也实现了特征侧user2user。我们管这类特征叫fake_uid特征 

b. 我们可以继续构造fake_uid特征和iid(item id)的组合特征,但是我们不难发现,新用户对item的行为较为稀疏,且存在噪音,故而可以通过fake_uid对item侧的统计特征达到对模型进行去噪和特征聚类的目的。构造统计特征。近似等价于特征侧item2item。这类特征就是我们可以本文的重点,连续值特征。

连续值特征提升冷启效率的工程实践(以新用户冷启, age_gender构造的fake uid和item category特征为例)

1. 训练(统计值存储于ps)

a. 将fake uid和item category拼成key 
b. 请求ps,获取该特征统计值,将统计值分桶获得离散特征sparse 
c. 离线特征sparse按照传统的离散特征学习方式即可 
d. 将fake uid和item category和连续值拼成key,value为桶id,组成分桶词典,配送线上 

2. 预估(统计值存储与在线kv存储)

a. 将fake uid和item category拼成key。 
b. 请求在线ps,获取该特征统计值,统计值根据分桶词典获取桶id,组成离散特征 
c. 传统离散DNN在线预估 

三、多分桶算法的原理与工程实现

多分桶算法的原理

a. 等距分桶是最常用的一种特征离散化处理方法。它是将特征对应的取值区间,等距切分成B 份(B 为预定义的桶数目),当特征取不同值时,映射到不同的桶中。
b. 等距分桶操作简单,速度快省内存(只需存储每个连续特征的最大最小值),但效果较依赖与所选择的桶数目B ,也即对桶数目敏感。所以考虑将采用不同桶数目(比如分10桶、分100桶、分1000桶),提升模型鲁棒性的同时,提升特征层次性。

多分桶算法的工程实现

a. 在ps中记录每个特征对应的连续值特征的最大值和最小值,以及该特征出现的频率
b. 收缩桶,提升分桶的均匀性和鲁棒性收缩桶是通过改变最大值和最小值来实现的,是分别从两端 (从第1 号桶依次增大,从第B 号桶依次减小)去除覆盖样本较少的桶,以去除部分离群点,提升分 桶的均匀性和鲁棒性。
c. 多分桶,并训练模型得到最大值最小值后,对于第i 列特征的第j 个值xij,可得到离散后的桶 ID
需要注意的是,上述公式均将 ID 增大了一位,即空出了第0 号桶,该桶用于存放xij < mini 时的样本