樹系列(四)boosting_tree

  • 模型

    採用加法模型和前向分步算法,以決策樹爲基函數的提升方法被稱爲提升樹,由如下公式表示,

    f M ( x ) = m = 1 M T ( x ; θ M )

    T ( x ; θ M ) 表示決策樹, θ M 表示決策樹的參數,M爲樹的個數,

  • 迴歸核心思想

    上面公式採用前向分步算法的步驟如下,

    首先確定初始提升樹 f 0 ( x ) = 0 , 第m步的模型是,

    f m ( x ) = f m 1 ( x ) + T ( x ; θ m )

    確定下一棵決策樹的參數的方法如下,

    θ m ^ = a r g m i n θ m i = 1 N L ( y i , f m 1 ( x i ) + T ( x i ; θ m ) )

    通過找到合適的參數,從而得到合適的提升樹模型,而採用何種損失函數便成爲提升樹學習算法的核心內容,

    對於迴歸問題的提升樹,某棵樹對於某個樣本 x j 的預測值如下,J爲這棵樹的葉子節點的個數,具體如何理解,請見決策樹的解釋,

    T ( x ; θ ) = j = 1 J c j I ( x R j )

    每棵樹構建好之後對於前向分步算法的應用如下,

    f 0 ( x ) = 0

    f m ( x ) = f m 1 ( x ) + T ( x ; θ m ) m = 1 , 2 , . . . , M

    f M ( x ) = m = 1 M T ( x ; θ m )

    第m步中,給定 f m 1 ( x ) ,需求解如下公式得到 θ m ^ ,
    θ m ^ = a r g m i n θ m i = 1 N L ( y i , f m 1 ( x i ) + T ( x i ; θ m ) )

    如果採用平方差損失函數,

    L ( y , f ( x ) ) = ( y f ( x ) ) 2

    其損失變爲

    L ( y , f m 1 ( x ) + T ( x ; θ m ) )

    = [ y f m 1 ( x ) T ( x ; θ m ) ] 2

    = [ r T ( x ; θ m ) ] 2

    這裏 r = y f m 1 ( x ) ,表示模型擬合的是數據的殘差,


    輸入:訓練數據集 T = { ( x 1 , y 1 ) , . . . , ( x N , y N ) } , x i X R n , y i Y R ,

    輸出:提升樹 f M ( x )

    1. 初始化 f 0 ( x ) = 0
    2. 對於m=1,2,…,M
      1. 計算殘差 r m i = y i f m 1 ( x i ) , i = 1 , 2 , . . . , N
      2. 擬合殘差學習迴歸樹,得到 T ( x ; θ m )
      3. 更新 f m ( x ) = f m 1 ( x ) + T ( x ; θ m )
    3. 得到提升樹

    f M ( x ) = m = 1 M T ( x ; θ M )

  • 梯度提升

    上述算法求解的核心在於對於模型的損失函數是平方損失的,求解很簡單,但是對於一般的損失函數來說,每一步的優化並不是很容易,因而把損失函數的負梯度值作爲每個階段迴歸的目標去擬合一棵迴歸樹纔是一個比較理想的選擇,負梯度公式如下,

    r m i = [ L ( y , f ( x ) ) f ( x ) ] f ( x ) = f m 1 ( x )


    輸入: 輸入數據集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } x i X R n , y i Y R , 損失函數 L ( y , f ( x ) ) ,

    輸出: 迴歸樹 f ( x ) ^

    1. 初始化

    f 0 ( x ) = a r g m i n c i = 1 N L ( y i , c )

    1. 對於m=1,2,..,M,

      a.對於i=1,2,…,N,計算

      r m i = [ L ( y , f ( x ) ) f ( x ) ] f ( x ) = f m 1 ( x )

      使得

      r m i = [ L ( y , f ( x ) ) f ( x ) ] f ( x ) = f m 1 ( x )

使得

相關文章
相關標籤/搜索