1. 程式人生 > >機器學習系列之GBDT

機器學習系列之GBDT

GBDT既可以用於迴歸,也可以用於分類。兩者本質是一樣的,分析流程也大致相同,區別在於loss function不同。

首先,介紹一下提升方法,boosting就是把一系列的弱學習器反覆學習,然後組合成強學習器。對於提升方法,主要需要回答兩個問題:第一個是每一輪學習過程中如何改變訓練資料的權值或概率分佈;第二個就是如何將弱分類器組合成強分分類器。

在前面講到的Adaboost中,根據每次訓練資料的誤分,將上次誤分的資料增加權重,正確分類的降低權重的方式,並且同時為基模型提供權值。最後根據基模型(弱學習器)的權值組合成強學習器。

而在GBDT中,通過擬合損失函式的負梯度值在當前模型的值,基分類器全是決策樹(CART迴歸樹)。GBDT擬合的目標是一個梯度值,這個值當然是一個連續值或者說實值,所以GBDT中統統都是迴歸樹。最後使用加法模型。

步驟1:最開始的損失函式(最小),也就是模型值得初始化;

步驟2:迴圈迭代;

步驟3:計算損失函式的負梯度值在當前模型的值;(更新樣本對應的負梯度值)

步驟4:構建CART,計算CART的某棵樹的某個葉子節點的值;

步驟5:增加學習率引數

步驟6:根據前一個模型的值,加上當前的葉子節點的值,組成模型的當前值;

             然後至步驟2,以這個模型當前的值,計算負梯度;

             直到滿足迭代要求;

步驟7:退出迴圈,結束。

不同的loss function對應不同的負梯度不同:

GBDT迴歸與分類的區別:下圖損失函式為(logloss)

相比迴歸任務講,分類任務需要把最後累加的結果轉為概率。

參考:下面兩篇文章,寫的非常棒。詳細的內容和例子,我沒有寫。請查閱下面的文章。

https://blog.csdn.net/qq_22238533/article/details/79185969

https://blog.csdn.net/qq_22238533/article/details/79192579