树模型集成学习
集成学习主要有两个思想,分别是bagging和boosting。树模型的集成模型都是使用树作为基模型,最常用的cart树,常见的集成模型有RandomForest、GBDT、Xgboost、Lightgbm、Catboost。
概要介绍
RandomForest
随机森林(Random Forest,RF)是Bagging的一个扩展变体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。既然模型叫做随机森林,森林我们可以理解为是多棵树的集合就是森林,随机主要有两个点进行有放回的采样,
- 每次建树特征个数随机选择
- 每次建树样本个数随机选择
随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成得泛化性能可通过个体学习器之间差异度得增加而进一步提升。使得模型更加鲁棒。
GBDT
GBDT使用的是加法模型和前向分布算法,而AdaBoost算法是前向分布加法算法的特例,前向分布算法学习的是加法模型,当基函数为基本分类器时,该加法模型等价于Adaboost的最终分类器。
GBDT也是迭代,使用了前向分布算法,但是弱学习器限定了只能使用CART回归树模型,同时迭代思路和Adaboost也有所不同。在GBDT的迭代中,假设我们前一轮迭代得到的强学习器是, 损失函数是, 我们本轮迭代的目标是找到一个CART回归树模型的弱学习器,让本轮的损失函数最小。也就是说,本轮迭代找到决策树,要让样本的损失尽量变得更小。GBDT本轮迭代只需拟合当前模型的残差。
Xgboost
Xgboost是gbdt的改进或者说是梯度提升树的一种,Xgb可以说是工程上的最佳实践模型,简单的说xgb=gbdt+二阶梯度信息+随机特征和样本选择+特征百分位值加速+空值特征自动划分。还有必要的正则项和最优特征选择时的并行计算等。
Lightgbm
首先,GBDT是一个非常流行的机器学习算法,另外基于GBDT实现的XGBoost也被广泛使用。但是当面对高纬度和大数据量时,其效率和可扩展性很难满足要求。主要的原因是对于每个特征,我们需要浏览所有的数据去计算每个可能分裂点的信息增益,真是非常耗时的。基于此,提出了两大技术:Gradient-based One-Side Sampling (GOSS) and Exclusive Feature Bundling (EFB).
catboost
CatBoost = Category + Boosting.
2017年7月21日,俄罗斯Yandex开源CatBoost,亮点是在模型中可直接使用Categorical特征并减少了tuning的参数。
核心公式
gbdt的前向分布公式
- gbdt的前向分布公式
(1) f m ( x ) = f m − 1 ( x ) + β m b ( x ; γ m ) f_m(x)=f_{m-1}(x)+\beta_m b(x;\gamma_m) \tag{1} fm(x)=fm−1(x)+βmb(x;γm)(1) - gbdt的第m轮的扶梯度公式
(2) − [ ∂ L ( y , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f m − 1 ( x ) -\left[ \frac{\partial L(y,f(x_i))}{\partial f(x_i)} \right]{f(x)=f{m-1}(x)} \tag{2} −[∂f(xi)∂L(y,f(xi))]f(x)=fm−1(x)(2) - gbdt格式化损失函数
(3) L ( y , f m ( x ) ) = L ( y , f m − 1 ( x ) + β m b ( x ; γ m ) ) L(y,f_m(x))=L(y,f_{m-1}(x)+\beta_m b(x;\gamma_m)) \tag{3} L(y,fm(x))=L(y,fm−1(x)+βmb(x;γm))(3) - 泰勒展开式
若函数f(x)在包含x0的某个闭区间[a,b]上具有n阶导数,且在开区间(a,b)上具有(n+1)阶导数,则对闭区间[a,b]上任意一点x,成立下式:
(4) f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + f ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 + . . . + f ( n ) ( x 0 ) n ! ( x − x 0 ) n + R n ( x ) f(x)=f(x_0)+f'(x_0)(x-x_0)+\frac{f''(x0)}{2!}(x-x_0)^2+ ... + \frac{f^{(n)}(x_0)}{n!}(x-x_0)^n+R_n(x) \tag{4} f(x)=f(x0)+f′(x0)(x−x0)+2!f′′(x0)(x−x0)2+...+n!f(n)(x0)(x−x0)n+Rn(x)(4) (5) f ( x + Δ x ) = f ( x ) + f ′ ( x ) Δ x + 1 2 ! f ′ ′ ( x ) Δ x 2 + . . . + 1 n ! f ( n ) ( x ) Δ x n + R n ( x ) f(x+\Delta x)=f(x)+f'(x)\Delta x + \frac{1}{2!}f''(x)\Delta x^2+...+\frac{1}{n!}f^{(n)}(x)\Delta x^n+R_n(x) \tag{5} f(x+Δx)=f(x)+f′(x)Δx+2!1f′′(x)Δx2+...+n!1f(n)(x)Δxn+Rn(x)(5)
其中, R n ( x ) R_n(x) Rn(x)是 ( x − x 0 ) n (x-x_0)^n (x−x0)n的高阶无穷小. - xgboost的目标公式(t轮迭代)
(6) o b j ( t ) = ∑ i = 1 n l ( y i , y ^ i t ) + ∑ i = 1 t Ω ( f i ) obj^{(t)}=\sum_{i=1}^{n}l(y_i,\hat{y}_i^t)+\sum_{i=1}^{t}\Omega(f_i) \tag{6} obj(