Boost是集成學習方法中的表明思想之一,核心的思想是不斷的迭代。boost一般採用改變訓練數據的機率分佈,針對不一樣的訓練數據分佈調用弱學習算法學習一組弱分類器。在屢次迭代的過程當中,當前次迭代所用的訓練數據的機率分佈會依據上一次迭代的結果而調整。也就是說訓練數據的各樣本是有權重的,這個權重自己也會隨着迭代而調整。Adaboost(後面補一篇介紹這個的文章吧)在迭代的過程當中經過不斷調整數據分佈的權重來達到提升性能的目的,GBM(Gradient Boosting Machine)則是在迭代的過程當中,新的模型創建在之間創建模型損失函數的梯度降低方向上,爲何這麼作是有效的,數學語言是最嚴謹的,讓咱們從數學的角度出發理解一下。算法
從數值優化的角度入手。對於加性模型$F(X|\Theta) $,咱們經過優化$\Theta$獲得模型的最優解函數
$$ \theta^* = \mathop{\arg\min}_{\theta} \ \mathrm{L} (\theta).$$性能
其中,$\mathrm{L}(\theta) = E_(y,x)\mathrm{L}(y,F(X|\Theta))$ ,那麼對於$F(X|\Theta) $其最優解爲$F^*(x) =F(x|\Theta^*) $ 。因爲$F(X|\Theta) $是個加性模型,一般有$P^* = \sum_{i = 0}^m p_i$。在優化P的過程當中,對於迭代的第m步驟,咱們之前得到了m-1個模型,在計算第m個模型的時候,咱們要對前m-1個模型的集成求梯度,$g_m$爲求得的梯度以下所示$$g_m=\{g_{jm}\} = \{{\big[\frac{\partial{\phi(P)}}{\partial{P_j}}\big]_{p = p_{(m-1)}}}\}$$其中$$P_{m-1} = \sum_{i=0}^{m-1} P_i$$求出梯度以後,咱們更新$$p_m = -\rho_mg_m$$其中,$$\rho_m = \mathop{\arg\min}_\rho\ L(P_{m-1}-\rho{g_m})$$學習
簡單整理一下,對於加性模型$F(X|\Theta) $,咱們經過對損失函數$L(\theta)$求得$\theta$沿着最優解降低的方向$g_m$,爲了肯定降低的步長,也就是$\rho$,咱們構造一個關於$P_{m-1}+p_m$的損失函數,其中$p_m = -\rho{g_m}$。肯定了梯度$g_m$以及在該梯度下的步長$\rho$,$p_m$也就求解出來了。優化
上述的推導過程當中,創建在訓練的數據集是連續無窮的狀況下,對於有限的數據集合在計算$g_m$的過程當中,求出的最優解$F^*(X)$對應的點不必定是咱們訓練集中的點。簡單來講就是對於前m-1個模型計算出來的梯度對於有限的訓練數據集,並不能直接做爲新的基學習器的梯度方向。爲了解決這個問題,論文預先假設一個先驗分佈$h(x_i;a)$,經過最小化損失函數的方式讓$h(x_i;a)$逼近預先計算好的梯度$g_m$,論文中用的損失函數是MSE,過程以下所示$$a_m=\mathop{\arg\min}_{a,\beta} \sum_{i=1}^N[{-g_m(x_i)-\beta{h(x_i;a)}}]^2 $$spa
總體的GBM算法流程以下所示.net
第三步對應的即是求前m-1個模型的梯度, 第四步根據球出來的梯度經過最小化損失函數的方法讓基模型(h(x;a))逼近梯度降低的方向,第五步也是經過最小化集成的函數預測結果與label的損失也肯定第k個基模型的權重。code
緊扣最小化似然函數這個過程就不難理解這麼作的原因了。blog
2019.9.7 在實際理解GBM的調參過程當中發現對CART如何學習以及
如何影響CART的參數的學習並無理解清楚.
首先要弄清楚CART學習的參數到底是什麼,這裏指的是最優分裂屬性以及分裂屬性值的選擇,外界的干預經過label影響最優劃分屬性的選擇,具體的介紹見:https://blog.csdn.net/niuniuyuh/article/details/76922210