gbdt演算法 演算法梳理五 GBDT

2021-10-11 08:42:17 字數 3244 閱讀 9167

真正開始動手寫,才發現以前理解的不夠深。

弄懂乙個演算法,要想明白哪些問題?集合裡有m個樣本,n個特徵,gbdt每棵回歸樹怎麼構造(選取多少樣本,多少特徵),它的損失函式怎麼擬合,殘差是怎麼回事,梯度在其中的作用。

gbdt有很多簡稱,有gbt(gradient boosting tree), gtb(gradient tree boosting ), gbrt(gradient boosting regression tree), mart(multiple additive regression tree),其實都是指的同一種演算法。

一、gbdt的概念

gbdt梯度提公升樹英文全稱為「gradient boosting decision tree」,拆解為三個部分來解釋:

1、boosting

boosting提公升方法是加法模型,它通過改變訓練樣本的權重,增加分錯樣本的權重,減小分對樣本的權重,不斷迭代,學習出多個學習器,將這些學習器線性組合,提高模型效能。常見的有adaboost、gbdt等。

2、gradient boosting

gradient boosting梯度提公升是boosting的一種,在前幾篇中,有提到用梯度下降方法來求解損失函式的最優解

在這裡,梯度提公升有異曲同工之妙,每一次建立模型是在之前建立模型損失函式的梯度下降方向,新模型的擬合值就是上次模型損失函式的負梯度,不斷的迭代,優化負梯度,從而達到損失函式最小的目的。

3、decision tree

decision tree是回歸樹,基函式是cart樹,不能是id3、c4.5,因為boosting是加法模型,id3、c4.5樹的結果加起來沒有意義。

二、boosting tree

講到梯度提公升樹之前,讓我們來看看一般的提公升樹。

cart樹的生成就是遞迴地構建二叉決策樹過程,特徵選擇有兩種標準:回歸樹用平方誤差最小、分類樹用gini指數最小化準則。

前面提到boosting方法只能是回歸樹,回歸問題提公升樹採用以下前向分步演算法:

當採用平方誤差函式時,

三、gbdt的實現(負梯度下降)

gbdt的梯度提公升體現在構建cart樹所需的負梯度階段,這個時候基學習器擬合前一輪模型損失函式的負梯度,而不是殘差,殘差是損失函式的其中一種情況,因此負梯度也被稱為「響應 (response)」或「偽殘差 (pseudo residual)」,從名字可以看出是乙個與殘差接近的概念。

四、gbdt如何正則化

在每一輪迭代獲取最終學習器的時候按照一定的步長進行更新。

shrinkage的思想認為,每次走一小步逐漸逼近結果的效果,要比每次邁一大步很快逼近結果的方式更容易避免過擬合。即它不完全信任每乙個棵cart樹,它認為每棵樹只學到了真理的一小部分,累加的時候只累加一小部分,通過多學幾棵樹彌補不足。

寧肯慢一點,一步一步往下降。

取值為(0,1],採用的不放回取樣,如果取值為1,則全部樣本都使用,等於沒有使用子取樣,如果取值小於1,則只有一部分樣本會去做gbdt的決策樹擬合。

cart回歸樹進行正則化剪枝。

五、gbdt的優缺點

優點:1、可以靈活處理各種型別的資料,包括連續值和離散值。

2、在相對少的調參時間情況下,**的準確率也可以比較高。這個是相對svm來說的。

3、使用一些健壯的損失函式,對異常值的魯棒性非常強。比如 huber損失函式和quantile損失函式。

缺點:1、由於弱學習器之間存在依賴關係,難以並行訓練資料。

六、gbdt哪些地方可以並行

1、計算每個樣本的負梯度;

2、**挑選最佳特徵及其分割點時,對特徵計算相應的誤差及均值時;

3、更新每個樣本的負梯度時;

4、最後**過程中,每個樣本將之前的所有樹的結果累加的時候。

七、sklearn中引數說明

classgradientboostingclassifier(basegradientboosting, classifiermixin)

gbdt中包含決策樹、以及一些在其他演算法**現的引數,在前面文章中均有說明,現在選取幾個gbdt獨有引數說明。

引數:

loss:損失函式度量,有對數似然損失deviance和指數損失函式exponential兩種,預設是deviance,即對數似然損失,如果使用指數損失函式,則相當於adaboost模型。

criterion:樣本集的切分策略,決策樹中也有這個引數,但是兩個引數值不一樣,這裡的引數值主要有friedman_mse、mse和mae3個,分別對應friedman最小平方誤差、最小平方誤差和平均絕對值誤差,friedman最小平方誤差是最小平方誤差的近似。

subsample:取樣比例,這裡的取樣和bagging的取樣不是乙個概念,這裡的取樣是指選取多少比例的資料集利用決策樹基模型去boosting,預設是1.0,即在全量資料集上利用決策樹去boosting。

warm_start:「暖啟動」,預設值是false,即關閉狀態,如果開啟則表示,使用先前除錯好的模型,在該模型的基礎上繼續boosting,如果關閉,則表示在樣本集上從新訓練乙個新的基模型,且在該模型的基礎上進行boosting。

參考:

李航《統計學習與方法》

『機器學習筆記 』gbdt原理-gradient boosting decision tree​blog.csdn.net

gbdt問題彙總 - zhangbaoanhadoop的部落格 - csdn部落格​blog.csdn.net

gbdt的補充:

將gbdt的輸出轉化為評分卡

csdn-專業it技術社群-登入​blog.csdn.net

GBDT演算法梳理

table of contents 1 gbdt概述 2 前向分布演算法 2.1 加法模型 2.2 前向分布演算法 2.2.1 思想 2.2.2 策略 2.2.3 加法模型求解 3 損失函式 4 負梯度擬合 5 回歸 6 gbdt分類 6.1 二分類 6.2 多分類 7 正則化 8 優缺點 9 sk...

GBDT演算法梳理

人工智慧之gbdt演算法 前言 人工智慧之機器學習主要有三大類 1 分類 2 回歸 3 聚類。今天我們重點 一下gbdt演算法。我們知道,gbm 請參見人工智慧 51 是乙個改善弱學習器效果的計算框架。gbm梯度提公升模組可以根據需要任意插入各種各樣的弱分類器。若弱學習器限定了只能使用cart回歸樹...

演算法梳理之GBDT

gbdt是整合學習boosting演算法中的一種,它與adaboost相比,adaboost演算法利用前一輪迭代弱學習器的誤差率來更新訓練集的權重,這樣一輪輪的迭代下去,gbdt也是一輪一輪迭代弱學習器,使用前向分布演算法,但是它限定弱學習器只能是決策樹 cart回歸樹 決策樹分為兩大類,回歸樹和分...