注意
此篇筆記是嘗試將 Gradient Boosting 那些艱澀難懂的數學式,應用在實際例子上(迴歸與分類),建議先看參考資料,瞭解什麼是 Gradient Boosting 再來看這篇會比較有心得(吧
根據任務性質,定義個可微分的損失函數:
重點
給定已經定義好的損失函數,推導其在 的梯度(gradient):
重點
初始化第 個模型 ,通常稱為 base learner。該模型很簡單,不論輸入什麼,它只輸出一個固定值 。而該值必須最小化總樣本損失:
重點
實際上,我們會將損失函數在 的梯度加總起來並設為 ,推導出 :
重點
初始化好基準模型後,接下來就是依序建立 個模型,疊加在前個模型之上。以下的步驟都是給定我們正在建立第 個模型。
給定前個模型 ,計算每個樣本的負梯度 :
重點
通常又被稱為虛擬殘差(pseudo residual),後續的實際例子會更瞭解其內涵。
以輔助資料集 ,建立第 個模型 ,用來預測虛擬殘差 。如此一來,該模型就正朝著正確的方向更新其輸出值了。
假設模型訓練完成後會有 個葉節點 。那麼接下來就是計算這些葉節點的輸出應該要是多少。計算每個葉節點的輸出值 ,負責預測 :
重點
實際上,我們會將損失函數在 的梯度加總起來並設為 ,推導出 :
重點
重點
重點
目前還沒整理,但這篇文章已經有很完整的介紹了。
STEP 0-定義損失函數並推導其梯度
STEP 1-初始化基準模型
STEP 2-依序建立 T 個模型
STEP 2.1-計算樣本負梯度(虛擬殘差)
STEP 2.2-根據樣本負梯度(虛擬殘差)建立模型
STEP 2.3-計算模型輸出值
STEP 2.4-更新模型
STEP 3-產出最終模型
STEP 3-產出最終模型
在分類任務中使用梯度提升樹,會借用到 Logistic 迴歸的理論。
STEP 0-定義損失函數並推導其梯度
首先,分類任務的梯度提升樹的損失函數定義如下:
重點
可以看得出來,就是 Logistic 迴歸的 negative log likelihood。
實際上,上述損失函數也可以簡化為以下兩種形式(省略推導過程):
透過簡化過後的損失函數,我們可以更容易推導出其在 的梯度(省略推導過程):
重點
可以觀察到,結果是實際值( 或 )減去預測機率值(介於 到 )再加上負號。
STEP 1-初始化基準模型
初始化基準模型 :
實際上,我們會將損失函數在 的梯度加總起來並設為 ,推導出 :
重點
可以看到,最小化損失函數的基準模型,固定會輸出 ,非常容易計算。
STEP 2-依序建立 T 個模型
初始化好基準模型後,接下來就是依序建立 個模型,疊加在前個模型之上。以下的步驟都是給定我們正在建立第 個模型。
STEP 2.1-計算樣本負梯度(虛擬殘差)
第一步就是計算每個樣本的虛擬殘差,定義如下:
推導後結果如下所示:
重點
為實際值減去前個模型 的預測機率值,可以理解成殘差(residual),但通常被稱為虛擬殘差(pseudo residual),因為會隨著不同的損失函數而變,有時候可能並沒有這麼好的直覺。
STEP 2.2-根據樣本負梯度(虛擬殘差)建立模型
以輔助資料集 ,建立第 個模型 ,用來預測虛擬殘差 。如此一來,該模型就能朝著正確的方向更新其輸出值了。
STEP 2.3-計算模型輸出值
假設訓練完成後會有 個葉節點 。接下來就是計算每個葉節點的輸出值 ,負責預測 :
這裡我們並不會「直接」將上述的損失函數在 的梯度加總起來並設為 ,推導出 ,如果這麼做,式子將會變得很複雜。
取而代之的是,我們會先將損失函數以二階泰勒公式展開:
重點
接著,再求展開後的損失函數在 的梯度:
重點
再來,才跟過去一樣,將損失函數在 的梯度加總起來並設為 ,推導出 :
重點
將損失函數經由泰勒公式展開後,能簡化 的計算,結果也相當容易理解,分子是樣本的虛擬殘差相加,而分母則是樣本在前個模型的「預測成功機率值」乘上「預測失敗機率值」,再相加。
STEP 2.4-更新模型
重點
STEP 3-產出最終模型
重點
ML