推荐系统的rank阶段
文章目录
简述
推荐系统一般分为 召回, 排序, 展示打散 等几个阶段. 排序阶段较为重要, 从召回的上千个相关结果中, 预测出用户的点击概率, 以此排序. 一般地, 一个推荐系统在使用排序模型前后, 效果可以提升20% 以上.
数据准备
静态部分
- 用户画像
- item特征
- 自身
item_id
. - 相关的id信息: 内容的话可以是创作者id
creator_id
, 商品的话可以是卖家idseller_id
. - item维度的近几天曝光点击数据等
- 其他离散及连续数值的特征.
动态部分
- 召回信息
上阶段的召回信息 - 环境信息
如 时间, 季节什么的. - label
tips: 有些user下的样本只有曝光没有点击, 可以认为用户匆匆地进来又匆匆地离开, 并未认真查看推荐结果, 这部分样本可以剔除.
特征工程
详见参考[3].
- 普通离散特征
职业, 婚姻状态等, 同常枚举值不超过100个. - id类特征
如淘宝上的活跃卖家, 可能就上千万了. - 连续特征正规化
如 身高,体重, 点击数. 不一定要缩放到0-1, 对数平滑也是可以的, 如 .
在工业界的特征工程中,大多数做法是构造大量离散特征,再根据经验对特征交叉构造高阶特征。这样的特征构造方式,在大样本的前提下,操作简单有效。简单体现在较少的人工设计。
那么离散特征是不是无所不能的?其实不然。首先,特征交叉不是无限度的,两个万级别的特征,交叉之后就是亿级别,所以一般交叉特征都是2、3阶;其次,特征依赖于数据,当我们的数据来源不能继续增加的时候,新特征的设计就很难做了。
特征生成
叫 feature generate.
一般LR的训练组件, 都只用一个kv格式的string字段来存储特征.
如对于 item_id=1,seller_id=2
这样的特征, 一般会要求编码成item_id_1 seller_id_2
这样以下划线分隔单个kv, 以空格分隔多个kv 的字符串. 这些特征就是一个bool变量.
LR 模型
公式
- 预测
- 训练
工程落地算法
- OWL_QN
损失函数一般为交叉熵,平方损失, 优化方法为 OWL_QN, 一种拟牛顿法.
特征高阶交叉后规模可达百亿, 使用 Parameter Server 训练, 比如 ali 只支持离散特征, 即 , 损失函数为平方损失. - FTRL
Follow the Regularized Leader(FTRL).
见参考[8]. - 二者对比
ftrl对增量学习更友好. Owlqn容易让模型过于偏重到近期原本.
GBDT+LR
WDL
对应paper, 详见[2]
figure WDL图解
motivation
- LR
具有 memorization 特性. 从历史数据中学习并利用各个被交叉特征的共现关系, 推荐结果同历史行为高度相似并因此带来了局限性. - NN
具有 generalization 特性. 从历史数据中学习到了特征的传递性, 因此具有了未见特征组合的探索能力, 推荐结果可提升多样性.
LR是广义的线性模型, 除了工程师精心构造的交叉特征, 此外不具备任何非线性的表达能力.
GBDT都是浅层模型, 表征能力也有限.
基于此, 可以考虑 Wide & Deep Learning.
wide linear model
交叉特征与离散特征.
deep
连续特征与高维稀疏离散特征.
where is the number of unique features in a feature column.
实验评测
figure 评测结果
- 数据集
论文中没有提数据集, 直接在 GooglePlay 做三周的线上AB. 这样的论文我还是第一次见 . - baseline
only Wide Component. 与 only Deep Component.
可以看到后者的AUC较前者低, 但线上表现反而好. - WDL approach
app 安装率(app acquisition)提升了+3.9%.
MF
FM
见[5].
FFM
见[7].
参考
- TF教程, TensorFlow Wide & Deep Learning Tutorial
- google的paper, Wide & Deep Learning for Recommender Systems
- 我的blog,特征工程
- 他人blog,FFM原理与实践简单理解
- paper, FM
- s.e.Difference between Factorization machines and Matrix Factorization?
- paper, FFM
- paper,FTRL
- paper,Listwise Collaborative Filtering