Facebook在2014年的这篇论文中提出了GBDT+LR的CTR预测模型, 利用GBDT自动进行特征筛选和组合,进而生成新的离散特征向量,再把该特征向量当作LR模型输入,预估CTR的模型结构。

原论文: ​​http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=A54CCA7D4A8F05B6636C9D64316BCF96?doi=10.1.1.718.9050&rep=rep1&type=pdf​

 

CTR预测模型评价指标


  • Calibration

\[Calibration = \frac{average \  estimated \  CTR}  {average \  empirical \  CTR} \]


  • 标准化交叉熵(Normalized Cross-Entropy, 简称NE)

\[ NE = \frac {-\frac {1}{N} \sum_{i=1}^N \frac{1+y_i}{2} log (p_i) + \frac{1-y_i}{2} log (1-p_i)} {-(p \cdot log(p)+ (1-p) \ cdot log(1-p))} \]


  • Area-Under-ROC(简称AUC)

AUC仅适用于二分类问题. LR作为一个回归模型, 为何要使用AUC评估?

对于如LR这种soft classifier, 给定不同的分类阈值, 会有不同的(TPR, FPR)表现.

当分类阈值减小时, 预测为正例的样本数predicted positives必然增加, 我们有predicted positives = TP + FP.

但TPR= TP/P, FPR=FP/N这两个值的变化趋势不一定.

 

我们可以注意到:

1. AUC在度量ranking quality*时, 没有考虑calibration;

* (AUC值等价于, Wilcoxon-Mann-Witney test中ranking的score, 即所有的(正例, 负例)pair中, 正例的预测值>负例的预测值的pair数的占比.

e.g. $M$个正例, $N$个负例, 总共有$M \times N$对pairs, 若其中有$K$对(正例, 负例)的rank正确, 则$AUC = K / (M \times N)$ )

2. NE在评价模型预测效果的同时, 隐式体现了calibration.

e.g. 如果模型over-predict了2倍, 将全局的预测CTR乘以0.5, 那么NE会有相应的提升, 但对AUC没有影响.(?)

 

 

问题: GBDT每次训练后的树不一样, 怎么输入到LR中去?

 

延伸: LR的损失函数


  • 不用回归中常用的平方和损失函数:

因为LR的MSE非凸. 且MSE有梯度消失(只需在NN中考虑?)


  • 不用朴素的分类accuracy:

假设有$N$个样本, $y^{i} \in \{+1, -1\}, \  i= 1,\ldots,N$.

注意到sigmoid函数 $g(x) = \frac {1} {1+e^{-x}} $ 存在如下特性: $ g(-x) = 1 - g(x)$

LR模型中的损失函数(负对数似然函数)可以写作: (注意此时与$y^{i} \in \{+1, 0\} $的形式略有差异)

\[  L(\omega) = -\sum_{i=1}^N  \log ( g(y^{(i)} \omega^T x^{(i)}) )  \]

此时$L(\omega)$比朴素的分类accuracy更能体现模型之间的差异.