Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features


目录
  • 概
  • 主要内容
    • 特征
    • 模型
  • 代码

Shan Y., Hoens T. R., Jiao J., Wang H., Yu D. and Mao J. Deep crossing: web-scale modeling without manually crafted combinatorial features. In International Conference on Knowledge Discovery and Data Mining (SIGKDD), 2016.

概

推荐系统非常依赖特征工程, 这篇文章提出的Deep Crossing则对此没有过多的要求.

主要内容

特征

本文主要研究的是广告推荐的问题(即预测点击率), 不过此框架推广到其它推荐领域应该也不是难事.

特征 含义 类型
Query 用户在搜索框中的输入的搜索词 文本
KeyWord 广告主为广告添加的描述其产品的关键词 文本
Title 广告标题 文本
Landing page 点击广告后的落地页面 -
Match type 搜索词匹配类型: exact, phrase, broad, contextual 类别
Campaign 广告主创建的广告投放计划, 包括预算, 定向条件等 -
Impression 广告曝光例子, 记录了在实际曝光场景中的相关信息 -
Click 广告点击例子, 记录了广告在实际点击场景中的相关信息 -
Click through rate 广告的历史点击率 数值?
Click prediction 另一个CTR模型预估的点击率 数值?

文本: 可以转换成 a tri-letter gram (不了解);
类别: one-hot 向量, 比如 Match type: [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1];

像 Campaign 这类, 可能有上百万的案例, 其包括:

  • CampaignID: 类别;
  • CampaignCount: 数字, 描述了 campaign 的统计属性, 比如点击率

两个属性. 如果仅仅依照 ID 转换成 one-hot 向量, 那么显然过于庞大和稀疏了, 所以本文的做法是将二者融合, 构建一个10001维的向量\((\bm{x} \in [0, 1]^{10001}, y \in \mathbb{R})\), 其中\(\bm{x}\)是one-hot向量, \(y\)表示CampaignCount这个数值属性. 倘若\(x_i, i \not = 10001\), 这表示其CapaginCount在所有的Campagin中排第\(i\)为, 若\(x_{10001} = 1\), 则表示其排名大于10000.

模型

  • Embedding 层: 将类别型的特征转换成维度更小的embedding, 假设输入为\(X_j^I \in [0, 1]^{n_j}\), 则

\[X_j^O = \max(\bm{0}, W_j X_j^I + \bm{b}_j) \in \mathbb{R}^{m_j}. \]

  • Stacking Layer: 将前一层的embedding和输入直接得到的数字型向量连接:

\[X^O = [X_0^O, X_1^O, \cdots, X_K^O]. \]

  • Multiple Residual Units: 带残差结构的全连接层, 用于提炼特征:

  • Scoring Layer: 逻辑斯蒂回归模型得到预测的点击率 \(p\).

  • 利用BCE损失进行训练:

\[\mathcal{L} = -\frac{1}{N} \sum_{i=1}^N (y_i \log p_i + (1 - y_i) \log (1 - p_i)). \]

注: 看别人写得代码, 数值型的变量 \(x \in \mathbb{R}\), 也有用\(x \cdot \bm{w}\)来得到embedding的, 也不是直接到stacking layer的.

代码

xue-pai-FuxiCTR