Boosting和BDT公式推導

2022-07-08 12:27:11 字數 3106 閱讀 6535

提公升方法(boosting)

提公升方法:加法模型+前向分布演算法。

加法模型

\[\begin\begin f(x)=\sum_^n \beta_mb(x;\gamma_m)\end\end

\]一些個基模型加權累加,可以是任何模型。

其中,\(b(x;\gamma_m)\) 為基函式,\(\gamma_m\) 為基函式的引數,\(\beta_m\)為基函式的係數。

在給定訓練資料 \(\lbrace(x_i,y_i)^n_\rbrace\) 及損失函式\(l(y,f(x))\)的條件下,學習加法模型\(f(x)\)成為經驗風險極小化問題:

\[\begin\begin

\min_\sum_^m l

\beginy_i,\sum_^m\beta_mb(x_i;\gamma_m)\end

\end\end

\]前向分布演算法求解這一優化問題的思路:因為學習的是加法模型,可從前向後,每次只學習乙個基函式模型和係數,逐步逼近優化目標函式(3),則可以簡化優化複雜度。具體的每步只需要優化如下損失函式:

\[\begin\begin

\min_\sum_^m l

\beginy_i,\beta b(x_i;\gamma)\end

\end\end

\]前向分步演算法

拿這個\(f(x)=0\) 基礎模型舉例

輸入:輸出:

1、 初始化 \(f_0(x)=0\) 基礎模型

2、 對 $ m=1,2,...,m $

上一步的模型加當前要學習的模型,在損失函式極小化後得到引數 \(\beta_m,\gamma_m\) 是當前這步的基模型對應的引數集。

\[ \begin\begin

f(x)=f_(x)+\beta_m b(x;\gamma_m)

\end\end

\]3、不斷累加得到加法模型

\[\begin\begin

f(x) = f_m(x) = \sum_^m \beta_mb(x;\gamma_m)

\end\end

\]把乙個整體的函式學習問題,轉化為乙個迴圈迭代過程,每一步只學習其中一部分 \(f_(x_i)+\beta b(x_i;\gamma)\)

提公升決策樹(bdt,boosting decision tree):

其實就是boosting整合了樹模型。

在這boosting基礎上定兩個約束:

提公升決策樹模型:

\[\begin\begin

f_m=\sum_^mt(x;\theta_m)

\end\end

\]其中:\(t(x;\theta_m)\) 表示決策樹;\(\theta_m\)為決策樹的引數;m為樹的個數。

學習過程:

採用前向分步演算法,首先確定初始提公升決策樹 $f_0(x)=0 $ (單根節點=0的樹), 第m步的模型是

\[\begin\begin

f_m(x) = f_(x)+t(x;\theta_m)

\end\end

\]其中,\(f_m-1(x)\) 為當前模型,通過經驗分享極小化確定下一顆決策樹的引數\(\theta_m\),

\[\begin\begin

\hat\theta_m = arg\min_\sum_^nl(y_i,f_(x_i)+t(x_j;\theta_m))

\end\end

\]已知訓練資料集 \(t=\lbrace(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\rbrace , x_i \in \chi \subseteq r^n\), \(\chi\) 為輸入空間,y為輸出空間。

如果將輸入控制項\(\chi\) 劃分為j個互不相交的區域 \(r_1,r_2,...r_j\) (樹模型本質離散化) ,並且在每個區域上確定輸出的常量 \(c_j\) 。那麼決策樹可表示為:

\[\begin\begin

t(x;\theta) = \sum_^j c_ji(x\in r_j)

\end\end

\]每乙個區域判斷x屬不屬於rj,用cj進行輸出,不是輸出0

結構上是一顆樹,但在公式表示上,我只關心x落在哪個葉子節點上。

其中,引數\(\theta = \lbrace(r_1,c_1),(r_2,c_2),...,(r_j,c_j)\rbrace\) 表示決策樹的區域劃分和各區域上的常量值。j 是決策樹的複雜度即葉子節點個數。

提公升決策樹使用以下前向分步演算法:

\[\begin\begin

f_0(x) &= 0 \\

f_m(x)&= f_(x) + t(x;\theta_m) ,m=1,2,...,m \\

f_m(x)&= \sum_^m t(x;\theta_m)

\end\end

\]在前向分步演算法的第m步,給定當前模型 \(f_(x)\),需要求解

\[\begin\begin

\theta_m = arg\min_ \sum_^n l(y_i,f_(x_i)+ t(x_j;\theta_m))

\end\end

\]得到 \(\hat\theta_m\), 即第m顆樹的引數。

當採用平方誤差損失函式時,

\[\begin\begin

l(y,f(x))=(y-f(x))^2

\end\end

\]其損失變為

\[\begin\begin

l(y,f_m-1(x)+t(x;\theta_m)) &= [y-f_(x)-t(x;\theta_m)]^2 \\

&=[r-t(x;\theta_m)]^2

\end\end\\

r=y-f_(x)

\]其中,r是當前模型擬合資料的殘差(residual)。對回歸問題的提公升決策樹,只需要簡單地擬合當前模型的殘差。

對比公式(14)和(15)中的r,如果把r作為乙個實際輸出的話,公式(15)就是在r這個實際輸出上去學習乙個決策樹模型。換句話說,在當前步t的學習過程中,不是奔著y去學習的,而學習的是實際輸出y與上乙個模型已經學號的部分的差值(沒學好的那部分)。

回歸問題的提公升決策樹的演算法過程:

\[r_=y_i - f_m-1(x_i) , i=1,2,...,n

\]\[f_m(x)=\sum_^mt(x;\theta_m)

\]

字尾和 推公式

題意 n個數,分為k組,每組的數字的下標是連續的,則分組的代價為 組號 數字 例如3個數1,2,3,分為2組,這麼分組的代價為1 1 1 2 2 3。n,k 3e5。題解 1.假設pi是第i組的第1個數字的下標,sum i 是第i個數到第n個數求和。那麼分組的代價為1 sum p1 sum p2 2...

HDU2552 推公式 用公式

首先,看到這道題千萬不要被那個atan x 的公式嚇倒,根本用不著!兩種思路來做 第一 推導公式,過程如下 1.tan a b tan a tan b 1 tan a tan b 2.tan atan x x arctan 1 s arctan 1 u arctan 1 v 所以得1 s tan a...

HDU dice DP求期望 推公式

題意 乙個m邊形的骰子,求連續投出n個相同的面,和m個兩兩不同的面的期望次數。solution 令 f i 表示已經連續投出i個相同的面,到連續投出n個還需要的期望次數.令 g i 類似的表示第二種問題的期望次數。對於 f i 有兩種情況 投出了和前i個相同的面,轉移到了 f 那麼 f i f 1 ...