A-07 前向分步算法

更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlpython

前向分步算法

1、前向分步算法引入

假設Nick的年齡是25歲。算法

  1. 第1棵決策樹

把Nick的年齡設置成初始值0歲去學習,若是第1棵決策樹預測Nick的年齡是12歲,即殘差值爲\(25-12=13\)數據結構

  1. 第2課決策樹
    1. 把Nick的年齡設置成殘差值13歲去學習,若是第2棵決策樹能把Nick分到13歲的葉子節點,累加兩棵決策樹的預測值加和\(12+13=25\),就是Nick的真實年齡25歲
    2. 若是第2棵決策樹的獲得的是10歲,殘差值爲\(25-12-10=3\)
  2. 第3課決策樹

把Nick的年齡設置成殘差值3歲去學習……機器學習

  1. 繼續重複上述過程學習,不斷逼近Nick的真實年齡

2、前向分步算法詳解

2.1 加法模型

加法模型(additive model)通常表示爲弱學習器加和
\[ f(x) = \sum_{t=1}^T\theta_tb(x;\gamma_t) \]
其中\(b(x;\gamma_t)\)爲弱學習器,\(\gamma_t\)爲弱學習器的參數,\(\theta_t\)爲弱學習器的係數。函數

2.2 加法模型目標函數優化問題

給定訓練數據以及目標函數\(L(y,f(x))\),加法模型的經驗風險最小化問題既能夠變爲目標函數最小化問題
\[ \underbrace{min}_{\theta_t,\gamma_t}\sum_{i=1}^mL(y_i,\sum_{t=1}^T\theta_tb(x_i;\gamma_t)) \]
上述加法模型的目標函數優化問題是一個很複雜的優化問題,可是經過前向分佈算法(forward stagewise algorithm)能夠解決這一問題,它的思想是:由於學習問題是加法模型,因此每一步只學習一個弱學習器及其係數,而後逐步逼近優化目標函數,也就是說,每一步只須要優化以下所示的目標函數
\[ \underbrace{min}_{\theta,\gamma}\sum_{i=1}^mL(y_i,\theta{b(x_i;\gamma)}) \]學習

3、前向分步算法流程

3.1 輸入

\(m\)個數據\(n\)個特徵的訓練數據集\(T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}\);目標函數\(L(y,f(x))\);弱學習模型集\(\{b(x;\gamma_t)\},\quad(t=1,2,\cdots,T)\),在Boosting算法中\(T\)至關於弱學習器的個數。優化

3.2 輸出

加法模型\(f(x)\)網站

3.3 流程

  1. 初始化\(f_0(x)=0\)
  2. \(t=1,2,\cdots,T\)
    1. 極小化目標函數
      \[ (\theta_t,\gamma_t)=\underbrace{arg\,min}_{\theta,\gamma}\sum_{i=1}^mL(y_i,f_{t-1}(x_i)+\theta{b(x_i;\gamma)}) \]
      獲得參數\(\theta_t,\gamma_t\)
    2. 更新
      \[ f_t(x)=f_{t-1}(x)+\theta_tb(x;\gamma_t) \]
  3. 獲得加法模型
    \[ f(x)=f_T(x)=\sum_{t=1}^T\theta_tb(x;\gamma_t) \]
相關文章
相關標籤/搜索