梯度提公升思想

2021-07-23 06:55:40 字數 4058 閱讀 9233

1.提公升模型(加法模型)fm

(xi)

=∑j=

1mαj

gj(x

i)=f

m−1(

xi)+

αmgm

(xi)

fm(xi)=

∑j=1

mtj=

fm−1

(xi)

+tm(

xi)

公式1是adaboost模型,gm

∈ ,αm

是公式的權重(唯一)。公式2是提公升樹模型,tm

=∑kk

=1αm

ki(x

i∈rm

k)輸出是某葉節點rm

k 的取值αm

k (數量由葉節點數目決定)。對於二分類問題,提公升樹是adabost的一種特殊情況,提公升樹葉節點的取值為帶符號的adaboost權重±α

m 2.引數

二分類(以adaboost為例): 基函式(分類器)gm

(x) (輸出為-1,1),權重αm

(每個分類器唯一)

提公升樹(以回歸樹為例):樹結構rm

k (對應葉子節點,類似gm

),節點權重αm

k

3.目標函式(此處即為損失函式)

提公升模型有三種損失函式,對於分類問題(adaboost)用指數損失函式l(

y,fm

)=∑i

=1ne

xp(−

yifm

(xi)

) 回歸問題(提公升回歸樹)用平方差損失函式l(

y,fm

)=∑i

=1n(

yi−f

m(xi

))2

一般決策問題用一般損失函式。

模型目標函式為其損失函式,訓練目的是使的目標函式最小。此模型使用梯度提公升演算法,每一步弱**模型依據損失函式的梯度方向)

思想:對目標函式泰勒展開,僅考慮一階導數的情況。對l(

y,fm

(x))

使用泰勒展開近似l(

y,fm

(x))

=l(y

,fm−

1(x)

+fm(

x))≃

l(y,

fm−1

)+∂l

(y,f

m−1)

∂fm−

1fm(

x)當f

m(x)

方向取−[

∂l(y

,fx)

∂fx]

fx=f

m−1 時,梯度下降最快(因為正交,梯度下降法),此時更新後的模型應為fm

(x)=

fm−1

−λm∂

l(y,

fm−1

)∂fm

−1其中λ

m 為步長,最終fm

=−λm

∂l(y

,fm−

1)∂f

m−1 ,在回歸問題中fm

為基函式,分類問題為基函式+分類器權重

由上面的分析可得提公升方法的一般步驟為:

1)計算偽殘差rm

i=−[

∂l(y

i,fx

)∂fx

]fx=

fm−1

,其中i表示樣本號,m表示基函式(分類器)號

2)基於rm

i,i∈

1,2,

..,n

,構建新函式f¯

m (分類問題為基函式,cart回歸樹輸出為葉子節點)

3)將f¯m

帶入損失函式,求解步長λm

=arg

minλl(

y,fm

−1−λ

f¯m)

(分類:分類器權重;回歸:葉節點取值)

4)更新fm

=fm−

1+λf

¯m模型為加法模型,損失函式為指數損失函式,引數為分類器gm

(x)∈

和分類器權重αm

梯度提公升推導:

1)對損失函式l(

y,fm

−1) 求梯度:rm

i=yi

exp(

−yif

m−1)

=yiw

¯mi

可理解為帶權重的樣本,對模型影響度不同

2)根據rm

建立新的基函式gm

,使gm

與rm盡量接近gm

=arg

ming∑i

=1nw

¯mii

(yi≠

g(xi

))3)將基函式gm

帶入損失函式求分類器權重(步長)αm

αm=ar

gminα∑

i=1n

w¯mi

exp(

−yiα

gm(x

i))

損失函式變為僅關於

α 的函式,對

α 求導得αm

=12l

og1−

emem

em=∑

ni=1

w¯mi

i(yi

≠gm(

xi))

∑i=1

nw¯m

i=∑i

=1nw

mii(

yi≠g

m(xi

))3)更新模型fm

(x)=

fm−1

(x)+

αmgm

(x) ,繼續重複1),其中w¯

m+1,

i=w¯

m,ie

xp(−

yiαm

gm(x

i)) 前向分布演算法推導

損失函式可寫為:l(

y,fm

)=l(

y,fm

−1+α

mgm)

=∑i=

1nex

p(−y

i(fm

−1+α

mgm(

xi))

)=∑i

=1nw

¯mie

xp(−

yiαg

(xi)

)w¯m

i=ex

p(−y

ifm−

1(xi

)

然後最小化損失函式,與2中2)形式相同

演算法效能:誤差率與分類器個數成指數關係

1)損失函式為平方損失,對損失函式求梯度,得到偽殘差:rm

i=yi

−fm−

1(xi

) 2)對rmi

擬合乙個回歸樹,得到第m棵樹的葉節點區域rm

k (r

m,αm

)=ar

gminr,

α∑i=

1n(r

mi−t

m(xi

))2

3)將給出的rm

k 帶入損失函式,求極小值(α

m1,α

m2)=

argminα[

∑xi∈

rm1(

yi−α

1)2+

∑xi∈

rm2(

yi−α

2)2]

得到α 為每個葉節點區域中所有yi

的均值.

4)遍歷所有可能的切分點(將所有yi

都嘗試作為切分點),得到所有葉節點區域rm

k ,重複2)3)步,找到最優解。合併形式為(r

m,αm

)=ar

gminr∑

ni=1

[∑kk

=1minα∑x

i∈rk

(yi−

αk)2

] 5)更新fm

(xi)

=fm−

1+tm

=fm−

1(xi

)+∑k

k=1α

mki(

xi∈r

mk)

6)其中2)同樣可用前向分布演算法得出

梯度下降?梯度上公升?梯度提公升?

最近被這三個詞搞蒙了。原本沒覺得它們有多難區分,但真要向乙個人解釋清類似 為何要有梯度提公升 這類問題,似乎還是很吃力,從而發現自己其實並沒有完全理解其中的含義。也許根本就不存在什麼 梯度上公升 只有 梯度提公升 罷,但我覺得,至少在中文環境裡,大家越發的喜歡無意識地將這兩個詞分別開來,從而這兩個詞...

梯度提公升樹GBDT

上一節我們講了adaboost,而提公升樹也是提公升方法的一種,它的基分類器為分類樹或者回歸樹。ps 首先我們講一下殘差的概念 殘差是指實際值和估計值之間的差,就是相減。一般提公升樹的模型的損失函式是平方損失和對數損失,所以優化很簡單。但是對一般損失函式而言就有困難,所以又有了梯度提公升演算法,然後...

gbdt梯度提公升樹

這採用boosting的思想,把表現一般的學習器通過一定的方法結合成效果相對比較好的學習器 gbdt是提公升樹的一種,是多棵樹的加權結果。採用的是分類回歸樹 cart 樹的劃分採用基尼係數。採用前向分布演算法 1 gbdt為什麼是用負梯度代替殘差?首先這是邏輯上顛倒的錯誤。實質沒有明白gbdt是怎麼...