一、Bagging之决策树、随机森林原理与案例
二、boosting之GBDT、XGBT原理推导与案例
三、SVM原理推导与案例
四、逻辑回归与反欺诈检测案例
五、聚类之K-means
Boosting
1. 简介
- 通过在数据上构建多个弱评估器,汇总所有弱评估器的建模结果,以取得比单个模型更好的分类或回归表现。
- 加法模型,前向分步计算学习。
2. 基本元素
-
弱评估器f(x):一般为决策树(cart树),不同boosting算法建立新树的过程不同
-
损失函数L(x,y):衡量模型预测结果与真实结果的差异
-
集成结果H(x):汇总所用弱评估器的结果进行输出
3. 算法提升流程
-
- 依据上一个弱评估器集成的结果,计算损失函数L(x,y)
L ( y , ∑ k = 1 t − 1 f k ( x ) ) L(y,\sum_{k=1}^{t-1} f_k(x)) L(y,k=1∑t−1fk(x))
-
- 使用L(x,y)自适应的影响下一个弱评估器的构建
f k = t ( x ) f_{k=t}(x) fk=t(x)
-
- 更新弱评估器集成的结果
H ( x ) = ∑ k = 1 t − 1 f k ( x ) + f ( x ) t H(x)=\sum_{k=1}^{t-1} f_k(x)+f(x)_t H(x)=k=1∑t−1fk(x)+f(x)t
注意:
- 各种boosting算法的不同之处在于使用不同的方式影响后续评估器的构建
4. GBDT原理
- 4.1 优化目标:新建的树使目标函数越来越小
- 4.2 泰勒一阶展开式
f ( x + △ x ) ≈ f ( x ) + f ′ ( x ) △ x f(x+\triangle x) \approx f(x)+f'(x)\triangle x f(x+△x)≈f(x)+f′(x)△x
-
4.3 GBDT目标函数求解过程
-
设定目标函数
o b j = ∑ i = 1 n L ( y i , y i ^ ) obj =\sum_{i=1}^nL(y_i,\widehat{y_i}) obj=i=1∑nL(yi,yi )n : 所有样本的个数; i : 代表每个样本 n: 所有样本的个数;i:代表每个样本 n:所有样本的个数;i:代表每个样本
-
代入树模型
o b j = ∑ i = 1 n L ( y i , f ( x i ) t − 1 + f ( x i ) t ) obj =\sum_{i=1}^nL(y_i,f(x_i)_{t-1}+f(x_i)_t) obj=i=1∑nL(yi,f(xi)t−1+f(xi)t)f ( x i ) t − 1 : 代表前 t − 1 棵树的结果; f ( x i ) t : 代表本轮要新建的树模型 f(x_i)_{t-1}:代表前t-1棵树的结果;f(x_i)_t :代表本轮要新建的树模型 f(xi)t−1:代表前t−1棵树的结果;f(xi)t:代表本轮要新建的树模型
-
将目标函数进行一阶泰勒展开
o b j ≈ ∑ i = 1 n [ L ( y i , f ( x i ) t − 1 ) + δ ′ L ( y i , f ( x i ) t − 1 ) δ f ( x i ) t − 1 ∗ f ( x i ) t ] obj \approx \sum_{i=1}^n[L(y_i,f(x_i)_{t-1})+ \frac{\delta'L(y_i,f(x_i)_{t-1})}{\delta f(x_i)_{t-1}}*f(x_i)_t] obj≈i=1∑n[L(yi,f(xi)t−1)+δf(xi)t−1δ′L(yi,f(xi)t−1)∗f(xi)t]f ( x i ) t : 相当于泰勒泰勒展开式中的 △ x f(x_i)_t:相当于泰勒泰勒展开式中的\triangle x f(xi)t:相当于泰勒泰勒展开式中的△x
-
因为L(y_i,f(x_i)_{t-1})是定值,新树要使obj减小的必要条件为:
δ ′ L ( y i , f ( x i ) t − 1 ) δ f ( x i ) t − 1 ∗ f ( x i ) t ≤ 0 \frac{\delta'L(y_i,f(x_i)_{t-1})}{\delta f(x_i)_{t-1}}*f(x_i)_t \leq 0 δf(xi)t−1δ′L(yi,f(xi)t−1)∗f(xi)t≤0 -
上述不等式成立的充分非必要条件为:
f ( x i ) t = − δ ′ L ( y i , f ( x i ) t − 1 ) δ f ( x i ) t − 1 f(x_i)_t = -\frac{\delta'L(y_i,f(x_i)_{t-1})}{\delta f(x_i)_{t-1}} f(xi)t=−δf(xi)t−1δ′L(yi,f(xi)t−1)即建立的新树拟合结果为前 t − 1 轮预测结果对应的目标函数的负梯度 即建立的新树拟合结果为前t-1轮预测结果对应的目标函数的负梯度 即建立的新树拟合结果为前t−1轮预测结果对应的目标函数的负梯度
-
最终新树模型生成要求
-
新树模型拟合上一轮结果的负梯度
-
使用基尼系数或信息熵,进行最佳分裂点
-
-
5. XGBT原理
- 5.1 优化目标:新建的树使目标函数越来越小
- 5.2 泰勒二阶展开式
f ( x + △ x ) ≈ f ( x ) + f ′ ( x ) △ x + 1 2 f ′ ′ ( x ) △ x 2 f(x+\triangle x) \approx f(x)+f'(x)\triangle x + \frac{1}{2} f''(x)\triangle x^2 f(x+△x)≈f(x)+f′(x)△x+21f′′(x)△x2
-
5.3 XGBT目标函数求解过程
-
设定目标函数
o b j = ∑ i = 1 n L ( y i , y i ^ ) + ∑ k = 1 t Ω ( f k ) obj =\sum_{i=1}^nL(y_i,\widehat{y_i})+\sum_{k=1}^t\Omega(f_k) obj=i=1∑nL(yi,yi )+k=1∑tΩ(fk)i : 代表每个样本; n : 代表样本个数; k : 代表每一个树模型 Ω :代表第 K 颗树的复杂度 i:代表每个样本; n:代表样本个数; k:代表每一个树模型 Ω:代表第K颗树的复杂度 i:代表每个样本;n:代表样本个数;k:代表每一个树模型Ω:代表第K颗树的复杂度
-
代入树模型f(x)
o b j = ∑ i = 1 n L ( y i , f ( x i ) t − 1 + f ( x i ) t ) + ∑ k = 1 t − 1 Ω ( f k ) + Ω f t obj =\sum_{i=1}^nL(y_i,f(x_i)_{t-1}+f(x_i)_t)+\sum_{k=1}^{t-1}\Omega(f_k)+\Omega f_t obj=i=1∑nL(yi,f(xi)t−1+f(xi)t)+k=1∑t−1Ω(fk)+Ωft -
使用二阶泰勒展开优化目标函数
o b j ≈ ∑ i = 1 n [ L ( y i , f ( x i ) t − 1 ) + δ ′ L ( y i , f ( x i ) t − 1 ) δ f ( x i ) t − 1 ∗ f ( x i ) t + 1 2 δ ′ ′ L ( y i , f ( x i ) t − 1 ) δ f ( x i ) t − 1 ∗ f 2 ( x i ) t ] + ∑ k = 1 t − 1 Ω ( f k ) + Ω f t obj \approx \sum_{i=1}^n[L(y_i,f(x_i)_{t-1})+ \frac{\delta'L(y_i,f(x_i)_{t-1})}{\delta f(x_i)_{t-1}}*f(x_i)_t+\frac{1}{2}\frac{\delta''L(y_i,f(x_i)_{t-1})}{\delta f(x_i)_{t-1}}*f^2(x_i)_t]+\sum_{k=1}^{t-1}\Omega(f_k)+\Omega f_t obj≈i=1∑n[L(yi,f(xi)t−1)+δf(xi)t−1δ′L(yi,f(xi)t−1)∗f(xi)t+21δf(xi)t−1δ′′L(yi,f(xi)t−1)∗f2(xi)t]+k=1∑t−1Ω(fk)+Ωft -
公式太长,看着太复杂,设定:
g i = δ ′ L ( y i , f ( x i ) t − 1 ) δ f ( x i ) t − 1 g_i= \frac{\delta'L(y_i,f(x_i)_{t-1})}{\delta f(x_i)_{t-1}} gi=δf(xi)t−1δ′L(yi,f(xi)t−1)h i = δ ′ ′ L ( y i , f ( x i ) t − 1 ) δ f ( x i ) t − 1 h_i= \frac{\delta''L(y_i,f(x_i)_{t-1})}{\delta f(x_i)_{t-1}} hi=δf(xi)t−1δ′′L(yi,f(xi)t−1)
则: o b j ≈ ∑ i = 1 n [ L ( y i , f ( x i ) t − 1 ) + g i ∗ f ( x i ) t + 1 2 h i ∗ f 2 ( x i ) t ] + ∑ k = 1 t − 1 Ω ( f k ) + Ω f t 则:obj \approx \sum_{i=1}^n[L(y_i,f(x_i)_{t-1})+ g_i*f(x_i)_t+\frac{1}{2}h_i*f^2(x_i)_t]+\sum_{k=1}^{t-1}\Omega(f_k)+\Omega f_t 则:obj≈i=1∑n[L(yi,f(xi)t−1)+gi∗f(xi)t+21hi∗f2(xi)t]+k=1∑t−1Ω(fk)+Ωft
∑ k = 1 t − 1 Ω ( f k ) : 前 t − 1 颗树的模型夫复杂度,定值; L ( y i , f ( x i ) t − 1 ) :第 t − 1 轮迭代后的损失,定值 \sum_{k=1}^{t-1}\Omega(f_k):前t-1颗树的模型夫复杂度,定值;L(y_i,f(x_i)_{t-1}):第t-1轮迭代后的损失,定值 k=1∑t−1Ω(fk):前t−1颗树的模型夫复杂度,定值;L(yi,f(xi)t−1):第t−1轮迭代后的损失,定值
-
去除常数项(不影响求解最小目标函数)
o b j ≈ ∑ i = 1 n [ g i ∗ f ( x i ) t + 1 2 h i ∗ f 2 ( x i ) t ] + Ω f t obj \approx \sum_{i=1}^n[g_i*f(x_i)_t+\frac{1}{2}h_i*f^2(x_i)_t]+\Omega f_t obj≈i=1∑n[gi∗f(xi)t+21hi∗f2(xi)t]+Ωft -
每颗树模型的模型结果为叶子节点上的权重
f ( x i ) t = w q ( x i ) f(x_i)_t=w_{q(x_i)} f(xi)t=wq(xi)w q ( x i ) : 样本 x i 所在树模型叶子节点的权重 w_{q(x_i)}:样本x_i所在树模型叶子节点的权重 wq(xi):样本xi所在树模型叶子节点的权重
则: o b j ≈ ∑ i = 1 n [ g i ∗ w q ( x i ) + 1 2 h i ∗ w q ( x i ) 2 ] + Ω f t 则:obj \approx \sum_{i=1}^n[g_i*w_{q(x_i)}+\frac{1}{2}h_i*w^2_{q(x_i)}]+\Omega f_t 则:obj≈i=1∑n[gi∗wq(xi)+21hi∗wq(xi)2]+Ωft
-
设定树模型复杂度
Ω f t = γ T + 1 2 λ ∑ j = 1 T ∣ w j ∣ 2 \Omega f_t =\gamma T+\frac{1}{2}\lambda\sum_{j=1}^{T}|w_j|^2 Ωft=γT+21λj=1∑T∣wj∣2
T : 叶子节点的个数 T:叶子节点的个数 T:叶子节点的个数
W j :每个叶子的权重的平方, L 2 正则化 Wj:每个叶子的权重的平方,L2正则化 Wj:每个叶子的权重的平方,L2正则化
则: o b j ≈ ∑ i = 1 n [ g i ∗ w q ( x i ) + 1 2 h i ∗ w q ( x i ) 2 ] + γ T + 1 2 λ ∑ j = 1 T ∣ w j ∣ 2 则:obj \approx \sum_{i=1}^n[g_i*w_{q(x_i)}+\frac{1}{2}h_i*w^2_{q(x_i)}]+\gamma T+\frac{1}{2}\lambda\sum_{j=1}^{T}|w_j|^2 则:obj≈i=1∑n[gi∗wq(xi)+21hi∗wq(xi)2]+γT+21λj=1∑T∣wj∣2
-
不同样本落在同一个叶子节点上预测得分是一样的
∑ i = 1 n w q ( x i ) = ∑ j = 1 T w j \sum_{i=1}^nw_{q(x_i)}=\sum_{j=1}^Tw_j i=1∑nwq(xi)=j=1∑Twj∑ i = 1 n g i = ∑ i ∈ I j g i − 每一个叶子节点上样本的一阶导数和 \sum_{i=1}^ng_i=\sum_{i\in I_j}g_i- 每一个叶子节点上样本的一阶导数和 i=1∑ngi=i∈Ij∑gi−每一个叶子节点上样本的一阶导数和
∑ i = 1 n h i = ∑ i ∈ I j h i − 每一个叶子节点上样本的二阶导数和 \sum_{i=1}^nh_i=\sum_{i\in I_j}h_i-每一个叶子节点上样本的二阶导数和 i=1∑nhi=i∈Ij∑hi−每一个叶子节点上样本的二阶导数和
则: o b j ≈ ∑ j = 1 T [ w j ( ∑ i ∈ I j g i ) + 1 2 w j 2 ( ∑ i ∈ I j h i ) ] + γ T + 1 2 λ ∑ j = 1 T ∣ w j ∣ 2 则:obj \approx \sum_{j=1}^T[w_j(\sum_{i\in I_j}gi)+\frac{1}{2}w^2_j(\sum_{i\in I_j}hi)]+\gamma T+\frac{1}{2}\lambda\sum_{j=1}^{T}|w_j|^2 则:obj≈j=1∑T[wj(i∈Ij∑gi)+21wj2(i∈Ij∑hi)]+γT+21λj=1∑T∣wj∣2
-
合并模型复杂度和损失函数
o b j ≈ ∑ j = 1 T [ w j ( ∑ i ∈ I j g i ) + 1 2 w j 2 ( ( ∑ i ∈ I j h i ) + λ ) ) ] + γ T obj \approx \sum_{j=1}^T[w_j(\sum_{i\in I_j}gi)+\frac{1}{2}w^2_j((\sum_{i\in I_j}hi)+\lambda))]+\gamma T obj≈j=1∑T[wj(i∈Ij∑gi)+21wj2((i∈Ij∑hi)+λ))]+γT -
简化目标函数
设 G j = ∑ i ∈ I j g i 叶子节点 J 所包含的所用样本一阶导累计之和,是常量 设G_j=\sum_{i\in I_j}gi 叶子节点J所包含的所用样本一阶导累计之和,是常量 设Gj=i∈Ij∑gi叶子节点J所包含的所用样本一阶导累计之和,是常量设 H j = ∑ i ∈ I j h i 叶子节点 J 所包含的所用样本二阶导累计之和,是常量 设H_j=\sum_{i\in I_j}hi 叶子节点J所包含的所用样本二阶导累计之和,是常量 设Hj=i∈Ij∑hi叶子节点J所包含的所用样本二阶导累计之和,是常量
则: o b j ≈ ∑ j = 1 T [ w j G j + 1 2 w j 2 ( H j + λ ) ] + γ T 则:obj \approx \sum_{j=1}^T[w_jG_j+\frac{1}{2}w^2_j(H_j+\lambda)]+\gamma T 则:obj≈j=1∑T[wjGj+21wj2(Hj+λ)]+γT
-
对wj求一阶导,求obj极值(最小二乘法)
δ ′ ( w j G j + 1 2 w j 2 ( H j + λ ) ) δ w j = G j + w j ( H j + λ ) = 0 \frac{\delta'(w_jG_j+\frac{1}{2}w^2_j(H_j+\lambda))}{\delta w_j}=G_j+w_j(H_j+\lambda)=0 δwjδ′(wjGj+21wj2(Hj+λ))=Gj+wj(Hj+λ)=0得: w j = − G j H j + λ 得:w_j=-\frac{G_j}{H_j+\lambda} 得:wj=−Hj+λGj
-
简化后obj带入wj
o b j ≈ ∑ j = 1 T [ w j G j + 1 2 w j 2 ( H j + λ ) ] + γ T = − 1 2 ∑ j = 1 T G j 2 H j + λ + γ T obj \approx \sum_{j=1}^T[w_jG_j+\frac{1}{2}w^2_j(H_j+\lambda)]+\gamma T=-\frac{1}{2}\sum_{j=1}^T\frac{G^2_j}{H_j+\lambda}+\gamma T obj≈j=1∑T[wjGj+21wj2(Hj+λ)]+γT=−21j=1∑THj+λGj2+γT最终目标函数只与一阶导和二阶导、树的节点个数相关 , 又叫结构分数 最终目标函数只与一阶导和二阶导、树的节点个数相关,又叫结构分数 最终目标函数只与一阶导和二阶导、树的节点个数相关,又叫结构分数
-
-
5.4 使用贪心思想求解最优的一棵新树,即每一节点分叉最优
- 某个节点是否继续分叉,计算分叉后的节点结构分数是否小于分裂前,类似信息增益
g a i n = − 1 2 G L 2 H L + λ + γ − 1 2 G R 2 H R + λ + γ − ( − 1 2 G l 2 + G R 2 H L + H R + λ + γ ) < 0 gain = -\frac{1}{2}\frac{G^2_L}{H_L+\lambda}+\gamma -\frac{1}{2}\frac{G^2_R}{H_R+\lambda}+\gamma-(-\frac{1}{2}\frac{G^2_l+G^2_R}{H_L+H_R+\lambda}+\gamma)<0 gain=−21HL+λGL2+γ−21HR+λGR2+γ−(−21HL+HR+λGl2+GR2+γ)<0
- 去除符号
g a i n = 1 2 [ G L 2 H L + λ + G R 2 H R + λ − G l 2 + G R 2 H L + H R + λ ] − γ > 0 gain = \frac{1}{2}[\frac{G^2_L}{H_L+\lambda} +\frac{G^2_R}{H_R+\lambda}-\frac{G^2_l+G^2_R}{H_L+H_R+\lambda}]-\gamma>0 gain=21[HL+λGL2+HR+λGR2−HL+HR+λGl2+GR2]−γ>0
附录:xgbt手动推导
原作者链接(https://zhuanlan.zhihu.com/p/511130662)