Side Info一般指什么?
- 主要是指商品信息,比如:
- 商品的各种属性信息,如品类、价格、品牌等
- 历史统计信息,如历史曝光、点击、订单数等
- 为什么叫做Side Info:在用户行为序列中,除了主要商品列表外,每个商品还会下挂一些相关的信息,这些信息就称为 Side Info
凡事预则立,不预则废
集成学习(Ensemble)的本质是一种组合基础模型实现更高泛化能力和精度的技术框架
本文参考了博客: http://www.cnblogs.com/jasonfreak/p/5657196.html
通过重采样技术生成若干不同子训练集 ,然后在每个训练集上训练一个分类器 ,最终采用投票方式产生模型最终结果
每个训练样例都有权重 ,每次训练新分类器的时候都着重训练那些在上一次分类过程中分错的样例 ,权重会随着迭代次数的变化而变化
每个分类器首先做一遍决策,然后将分类器们的决策送到更高一层的模型中,把他们当做特征再进行一次训练
本文介绍梯度提升树(族)的推导过程,包括传统的GBDT,XGBoost等
加法模型:additive training
$$
\begin{align}
F(x) = \sum_{t=0}^{T}f_{t}(x)
\end{align}
$$
这里只原论文中的Gradient Boosting Tree算法
Friedman于论文”GreedyFunctionApproximation…”中最早 出GBDT
$$
\begin{align}
F(x) &= \sum_{t=0}^{T}\alpha_{t} h_{t}(x;w_{t}) \\
&= \sum_{t=0}^{T} f_{t}(x;w_{t})
\end{align}
$$
$$
\begin{align}
F^{\star} = \mathop{\arg\max}_{F}\sum_{i=1}^{N}L(y_{i}, F(x_{i};w))
\end{align}
$$

上述式子中推导用到的基函数为树模型,实际使用中也可以使用逻辑回归模型[Friedman 2000]等基函数
本小节将介绍不同损失函数或者基函数带来的不同算法
Least-Squares Regression
Least Absolute Deviation Regression, LAD
-1,负梯度为11,负梯度为-1Regression Trees
决策树算法时很多优秀的集成算法的基础,包括RF,GBDT,提升树(Boosting Tree)等
论文参考: 《统计学习方法》
各种方法各有优劣,关注不同的优化角度
CART使用的是CCP剪枝
CPP剪枝也是一种后剪枝算法
修正:统计学习方法CART算法第六步中应该跳到第二步,而不是第三步
对于ID3不能处理连续特征,C4.5的思路是将连续的特征离散化.
对于ID3信息增益最大指标会造成偏向于取值较多的特征的问题. C4.5使用信息增益比来解决问题
对于ID3不能处理缺失值的问题,C4.5主要解决两个问题
对于没有考虑过拟合的问题:
GBDT(GradientBoostingDecisionTree), 梯度提升树
GBDT泛指所有梯度提升树,包括XGBoost(XGBoost是GBDT的变种),平时为了进行区分,GBDT特指“Greedy Function Approximation:A Gradient Boosting Machine”(GBDT论文原文)提出的算法,只利用了一阶导数信息(XGBoost利用了二阶导数信息)
*梯度的数学定义:函数上升最快的方向
参考论文:Greedy Function Approximation: A Gradient Boosting Machine
一篇很详细的论文阅读笔记:GBM Paper Reading
引用一个常见的通俗例子:GBDT的思想可以用一个通俗的例子解释,假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了(残差作为下一轮拟合的数据的理解)。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小,最终预测时使用他们的结果
AdaBoost是通过利用前一轮弱学习器的误差率来更新训练集的权重
GBDT是通过学习上一轮学习器的残差来实现对真实结果的不断逼近
GBDT的弱学习器只能使用CART回归树,只能用回归树这一点与AdaBoost和RF均不同
随机森林是一种集成学习(Ensemble)方法,属于集成学习中的Bagging族,是一种典型的Bagging方法
本文主要广告计算领域用于CTR,CVR预估的模型
XGBoost,全称: Extreme Gradient Boosting
$$
\begin{align}
F(x;w) = \sum_{k=0}^{K} f_{k}(x;w_{k})
\end{align}
$$
$$
\begin{align}
L^{t} &= \sum_{i=1}^{n}l(y_{i},\hat{y}_{i}^{t}) + \Omega(f_{t}) \\
&= \sum_{i=1}^{n}l(y_{i},\hat{y}_{i}^{t-1} + f_{t}(x_{i})) + \gamma T + \frac{1}{2}\lambda \sum_{j=1}^{T}w_{j}^2
\end{align}
$$
损失函数二阶泰勒展开
回忆传统泰勒展开:
$$
\begin{aligned}
f(x) &= f(x_0) + f’(x_0)(x-x_0) + \frac{f’’(x_0)}{2!}(x-x_0)^2 + \cdots + \frac{f^{(n)}(x_0)}{n!}(x-x_0)^n \\
& = \sum\limits_{n=0}^{\infty}\frac{f^{(n)}x_0}{n!}(x - x_0)^n
\end{aligned}
$$
二阶泰勒展开公式
$$
\begin{align}
f(x+\Delta x) \approx f(x) + f’(x)\Delta x + \frac{1}{2}f’’(x)\Delta x^2
\end{align}
$$
在我们的场景中,令
则有对单个样本能得到
$$
\begin{align}
l(y_{i},\hat{y}_{i}^{t-1} + f_{t}(x_{i})) \approx l(y_i,\hat{y}_i^{t-1}) + l’(y_i,\hat{y}_i^{t-1})f_t(x_i) + \frac{1}{2}l’’(y_i,\hat{y}_i^{t-1})f_t^2(x_i)
\end{align}
$$
我们第 \(t\) 轮的目标是找到一个最优的分类器 \(f_t^{\star}(x)\) 最小化损失函数 \(L^{t}\)
$$
\begin{align}
L^{t} \approx \sum_{i=1}^{n}\left(l(y_i,\hat{y}_i^{t-1}) + l’(y_i,\hat{y}_i^{t-1})f_t(x_i) + \frac{1}{2}l’’(y_i,\hat{y}_i^{t-1})f_t^2(x_i)\right) + \gamma T + \frac{1}{2}\lambda \sum_{j=1}^{T}w_{j}^2
\end{align}
$$
显然上面式子中的 \(l(y_i,\hat{y}_i^{t-1})\) 与 \(f_t(x_i)\) 无关,可以移除,于是有
$$
\begin{align}
L^{t} \approx \sum_{i=1}^{n}\left(l’(y_i,\hat{y}_i^{t-1})f_t(x_i) + \frac{1}{2}l’’(y_i,\hat{y}_i^{t-1})f_t^2(x_i)\right) + \gamma T + \frac{1}{2}\lambda \sum_{j=1}^{T}w_{j}^2
\end{align}
$$
令:
则有:
$$
\begin{align}
L^{t} \approx \sum_{i=1}^{n}\left(g_if_t(x_i) + \frac{1}{2}h_if_t^2(x_i)\right) + \gamma T + \frac{1}{2}\lambda \sum_{j=1}^{T}w_{j}^2
\end{align}
$$
做一个重要的转换 :
$$f_t(x_i) = w_j, \quad s.t. \ x_i \in I_j$$
于是: 我们可以将前面对样本的累加变成对叶子结点的累加
$$
\begin{align}
L^{t} &\approx \sum_{j=1}^{T}\left((\sum_{i \in I_j}g_i)w_j + \frac{1}{2}(\sum_{i \in I_j}h_i)w_j^2\right) + \gamma T + \frac{1}{2}\lambda \sum_{j=1}^{T}w_{j}^2 \\
&\approx \sum_{j=1}^{T}\left((\sum_{i \in I_j}g_i)w_j + \frac{1}{2}(\sum_{i \in I_j}h_i + \lambda)w_j^2\right) + \gamma T
\end{align}
$$
令:
则有
$$
\begin{align}
L^{t} \approx \sum_{j=1}^{T}\left(G_jw_j + \frac{1}{2}(H_j + \lambda)w_j^2\right) + \gamma T
\end{align}
$$
\(L^t\) 对 \(w_j\) 求偏导有
$$
\begin{align}
\frac{\partial L^{t}}{\partial w_j} = G_j + (H_j + \lambda)w_j
\end{align}
$$
令导数 \(\frac{\partial L^{t}}{\partial w_j} = 0\) 可得
$$
\begin{align}
w_j^{\star} = -\frac{G_j}{H_j+\lambda}
\end{align}
$$
同时
$$
\begin{align}
L^{\star^t} &\approx min(L^t) \\
&\approx \sum_{j=1}^{T}\left(G_j\cdot (-\frac{G_j}{H_j+\lambda}) + \frac{1}{2}(H_j + \lambda)\cdot(-\frac{G_j}{H_j+\lambda})^2\right) + \gamma T \\
&\approx -\frac{1}{2}\sum_{j=1}^{T}\left(\frac{G_j^2}{H_j+\lambda}\right) + \gamma T
\end{align}
$$
目标函数的计算示例: 目标分数越小越好

本文主要介绍Attention的原理和变种


这里的总结参考博客Attention
参考博客: https://www.sohu.com/a/226596189_500659

