2. 特征工程
2.1 批判 “特征工程过时” 的错误论调
万能函数模拟只是理论,现实存在问题:梯度消失、梯度爆炸、不同特征不均衡
Garbage in, garbage out.
自动特征工程不是无代价的,计算复杂,耗时与候选集规模成正比
DIN:从用户行为序列中挖掘短期兴趣
SIM:挖掘长期兴趣
2.2 特征提取
item 特征
自身属性:除了属性信息,item_id 也是重要特征
类别标签:内容分析(NLP、CV),获得静态画像(一级分类、二级分类、标签),有置信度
基于内容的 embedding:CNN、BERT,模型的某一层输出
动态画像:后验统计数据,实际粒度 × 统计对象(e.g. 过去 1 天的平均播放时长)
辩证看待:存在幸存者偏差,但影响没那么严重
纵容马太效应,不利于新 item 冷启
user 给 item 反向打标签:消费数据,后验修正标签
用户画像
静态画像:人口特征、APP 列表等,对推荐算法的作用不大(老用户不需要,新用户学不到)
如果新老用户共用模型,老用户样本多,主导训练,模型不重视新用户特征
如果新用户单独模型,没有足够数据训练出有效模型(行为少、噪声多)
user_id 虽然有类似问题,但仍然非常重要,提供了用户侧最细力度的个性化信息
动态画像:历史行为提取的兴趣爱好
交互过的 item_id 集合(时间顺序):简单 pooling、DIN / SIM 引入 attention 机制(线上完成)
离线抽取 + 在线查询:用户粒度 × 时间粒度 × item 属性 × 动作类型 × 统计对象 × 统计方法
e.g. 用户 A / 男性用户,过去 1 天,坦克标签,点击,次数,CTR
交叉特征:DNN 交叉能力有限、手动交叉容易吸收
笛卡尔积交叉:两个 field 内的 feature 两两组合
内积交叉:共同标签对应分数,相乘再相加
偏差特征(bias):位置偏差(position bias)、视频年龄
above click :只有点击 item 上方的未点击 item,才作为负样本
位置喂进模型,预测时一律为 0(伪特征值)
只能通过一个线性层加入模型(取值不影响排序结果)
打分
2.3 数值特征的处理
处理缺失值:(整体/人群的)均值/中位数、训练模型预测缺失值、如果分桶则映射到未知
标准化:z-score ,对于长尾分布先做变换(sqrt、log)压缩接近正态分布
数据平滑与消偏
威尔逊区间平滑 :克服小样本的负面影响
CoEC (Click over Expected Click) :消除不同展示位置带来的偏差因素
分桶离散化:等宽分桶、等频分桶、模型分桶(简单决策树,叶子结点编号)
2.4 类别特征的处理
一等公民:更加契合推荐系统的特点
基础是 user / item 画像,都是高位系数分类标签,个性化的 user_id / item_id 也是类别特征
输入特征与目标之间鲜有线性关系,更多的是量变引起质变
线上工程实现偏爱类别特征:非零存储、排零计算,提升实时性
享受 VIP 服务
为了增强表达能力:embedding、多特征交叉
类别特征高维稀疏:Parameter Server 架构
罕见特征训练不充分:FTRL 每维特征自适应调节学习率、DIN、FM
映射
映射表:标签特征 - 映射表 - embedding matrix - pooling
特征哈希:标签特征 - hashing - embedding matrix - pooling
哈希冲突可能导致混淆,但可能性不大且负面影响可控
Last updated