Facebook在2014年的这篇论文中提出了GBDT+LR的CTR预测模型, 利用GBDT自动进行特征筛选和组合,进而生成新的离散特征向量,再把该特征向量当作LR模型输入,预估CTR的模型结构。
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更能体现模型之间的差异.