機器學習系列之GBDT
阿新 • • 發佈:2018-10-31
GBDT既可以用於迴歸,也可以用於分類。兩者本質是一樣的,分析流程也大致相同,區別在於loss function不同。
首先,介紹一下提升方法,boosting就是把一系列的弱學習器反覆學習,然後組合成強學習器。對於提升方法,主要需要回答兩個問題:第一個是每一輪學習過程中如何改變訓練資料的權值或概率分佈;第二個就是如何將弱分類器組合成強分分類器。
在前面講到的Adaboost中,根據每次訓練資料的誤分,將上次誤分的資料增加權重,正確分類的降低權重的方式,並且同時為基模型提供權值。最後根據基模型(弱學習器)的權值組合成強學習器。
而在GBDT中,通過擬合損失函式的負梯度值在當前模型的值,基分類器全是決策樹(CART迴歸樹)。GBDT擬合的目標是一個梯度值,這個值當然是一個連續值或者說實值,所以GBDT中統統都是迴歸樹。最後使用加法模型。
步驟1:最開始的損失函式(最小),也就是模型值得初始化;
步驟2:迴圈迭代;
步驟3:計算損失函式的負梯度值在當前模型的值;(更新樣本對應的負梯度值)
步驟4:構建CART,計算CART的某棵樹的某個葉子節點的值;
步驟5:增加學習率引數
步驟6:根據前一個模型的值,加上當前的葉子節點的值,組成模型的當前值;
然後至步驟2,以這個模型當前的值,計算負梯度;
直到滿足迭代要求;
步驟7:退出迴圈,結束。
不同的loss function對應不同的負梯度不同:
GBDT迴歸與分類的區別:下圖損失函式為(logloss)
相比迴歸任務講,分類任務需要把最後累加的結果轉為概率。
參考:下面兩篇文章,寫的非常棒。詳細的內容和例子,我沒有寫。請查閱下面的文章。