目錄html
更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlpython
提高樹(boosting tree)是以分類樹或迴歸樹做爲弱學習器的強學習器。算法
提高樹模型用的是加法模型,算法用的是前向分步算法,弱學習器是決策樹的集成學習方法。數據結構
假設Nick的年齡是25歲。機器學習
把Nick的年齡設置成初始值0歲去學習,若是第1棵決策樹預測Nick的年齡是12歲,即殘差值爲\(25-12=13\)函數
把Nick的年齡設置成殘差值3歲去學習……學習
提高樹模型能夠表示爲決策樹的加法模型
\[ f_M(x)=\sum_{i=1}^MT(x;\theta_m) \]
其中\(T(x;\theta_m)\)表示決策樹;\(\theta_m\)表示決策樹的參數;\(M\)爲樹的個數。網站
提高樹模型使用的是前向分佈算法,即假設初始提高樹\(f_0(x)=0\),第\(m\)步的模型是
\[ f_m(x)=f_{m-1}(x)+T(x;\theta_m) \]
其中\(f_{m-1}(x)\)爲當前模型,經過經驗風險極小化肯定一下課決策樹的參數\(\theta_m\)
\[ \hat{\theta_m}=\underbrace{arg\,min}_{\theta_m}\sum_{i=1}^mL(y_i,f_{m-1}(x_i)+T(x_i;\theta_m)) \]人工智能
AdaBoost算法使用的是前向分步算法,利用前一輪弱學習器的偏差率更新訓練數據的權重;提高樹使用的也是前向分步算法,可是提高樹如其名,他的弱學習器只能使用決策樹,通常使用CART樹,而後他的迭代思路也與AdaBoost算法不一樣spa
假設提高樹在\(t-1\)輪的強學習器爲\(f_{t-1}(x)\),目標函數是
\[ L(y,f_{m-1}(x)) \]
在第\(t\)輪的目標則是找到一個弱學習器(決策樹)\(h_t(x)\),最小化第\(t\)輪的目標函數
\[ L(y,f_m(x))=L(y_i,f_{m-1}(x)+T(x;\theta_m)) \]
可是當AdaBoost算法中的弱學習器爲二類分類樹的時候,其實AdaBoost就是提高樹,便可以說分類提高樹算法是AdaBoost算法的一種特殊狀況。
有\(m\)個數據\(n\)個特徵的訓練數據集\(T=\{(x_,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}\),若是將輸入空間劃分爲\(k\)互不相交的區域\(R_1,R_2,\cdots,R_j\),而且在每一個區域上肯定輸出的常量\(c_j\),決策樹能夠表示爲
\[ T(x;\theta)=\sum_{j=1}^Jc_jI(x\in{R_j}) \]
其中,\(\theta=\{(R_1,c_1),(R_2,c_2),\cdots,(R_J,c_J)\}表示樹的區域劃分和各區域上的常數,\)J$是迴歸樹的葉節點個數。
\[ \begin{align} & f_0(x)=0 \\ & f_1(x)=f_0(x)+T(x;\theta_1) \\ & \cdots \\ & f_m(x)=f_{m-1}(x)+T(x,\theta_m),m=1,2,\cdots,M \\ & f_M(x)=\sum_{m=1}^MT(x;\theta_m) \end{align} \]
在第\(m\)步\(f_m(x)=f_{m-1}(x)+T(x,\theta_m)\)的時候,給定了\(f_{m-1}(x)\),須要求解第\(m\)棵的參數\(\hat{\theta_m}\)
\[ \hat{\theta_m} = \underbrace{arg\,min}_{\theta_m}\sum_{i=1}^mL(y_i,f_{m-1}(x_i)+T(x_i;\theta_m)) \]
對於第\(m\)棵樹的參數\(\hat{\theta_m}\),能夠採用平方偏差損失函數\(L(y,f(x))=(y-f(x))^2\)求解,樹的損失變爲
\[ \begin{align} L(y,f_{m-1}(x)+T(x;\theta_m)) & = [y-f_{m-1}(x)-T(x;\theta_m)]^2 \\ & = [r-T(x;\theta_m)]^2 \end{align} \]
其中\(r=y-f_{m-1}(x)\)是當前模型擬合數據的殘差。
對於迴歸提高樹,只需簡單地擬合當前模型的殘差。
有\(m\)個數據\(n\)個特徵的訓練數據集\(T=\{(x_,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}\)。
迴歸提高樹\(f_M(x)\)。
提高樹屬於Boosting系列算法,他和AdaBoost有類似之處的,而且當AdaBoost算法中的弱學習器爲二類分類樹的時候,梯度提高樹就是一種特殊的AdaBoost算法。
因爲提高樹是由簡單的殘差計算獲得的,因此在某種程度上來講,提高樹是有必定缺陷的,爲了解決這個問題,通常會採用梯度提高樹來彌補。