基於樹的adaboost和Gradient Tree Boosting區別?

時間 2021-06-01 15:04:57

1樓:楚子航

GBDT vs AdaBoost

相同點:

加性模型+前向分步演算法

每一步訓練乙個弱學習器以彌補前面模型的不足2. 不同點

AdaBoost中當前學習器的「不足」由樣本權重來決定GBDT中當前學習器的「不足」由求梯度決定梯度提公升樹(回歸樹)的演算法與原始的提公升樹(回歸樹)演算法的核心區別主要在於殘差計算這裡,由於原始的回歸樹指定了平方損失函式所以可以直接計算殘差,而梯度提公升樹針對一般損失函式,所以採用負梯度來近似求解殘差,從這個角度來看或者說從發展歷史的角度看,梯度提公升是泛化成使用一般的損失函式

至於學習的效果,確實得具體情況具體分析了,看實驗結果吧

2樓:

它們都是提公升樹演算法,提公升樹可以用於回歸也可以用於分類,當用於回歸時,損失函式為最小二乘,用於分類時,可以採用指數損失函式,而Adaboost就是採用指數損失函式用於二類分類問題的一種特例。

當用於回歸時,通常學習乙個新的學習器去擬合當前模型的殘差,採用最小二乘或指數損失函式可以方便地求損失函式關於變數的梯度,但是,對於一些一般損失函式,Friedman提出了梯度提公升演算法,它類似於梯度下降法,將當前模型往最小化損失函式的方向移動,可以看作在函式空間中損失函式對當前模型求梯度,之後用梯度去擬合當前模型的殘差。

梯度提公升樹與一般的回歸提公升樹相比,乙個使用關於函式的梯度擬合殘差,乙個是新學習一棵決策樹擬合殘差,梯度提公升樹相當於在函式空間中移動當前模型以減小誤差,而一般的回歸提公升樹相當於再加一顆決策樹以減小誤差。

3樓:netfish

gradient boosting可以用於所有loss function。adaboost用的是一種有分析解的loss function

4樓:Nelson.Go

adaboost對於每個樣本有乙個權重,樣本預估誤差越大,權重越大。gradient boosting則是直接用梯度擬合殘差,沒有樣本權重的概念。

Boosting 和 Adaboost 的關係和區別是什麼

大器不早成 提公升 Boosting 是一種常用的統計學習方法,在分類問題中,它通過改變訓練樣本的權重,學習多個分類器 一般是弱分類器 並將這些分類器線性組合,最終提高分類器的效能。而針對於這種提公升方法而言,需要回答兩個問題,一是在每一輪如何改變訓練樣本的權值或概率分布 二是如何將弱分類器組合成乙...

HashMap和Trie樹的比較?

個人淺見,就openjdk而言HashMap的查詢效率並不是O 1 查詢首先要計算查詢物件的hashcode,而String物件的hash成員是 懶漢 式的,延遲到你呼叫hashcode方法時才儲存下來。而點進String物件的hashcode原始碼,可以發現hashcode的計算需要遍歷字串的每乙...

如何看待「基於故事情節」的相聲,和不「基於故事情節」的相聲?

2115gang 相聲遠遠不止兩種 八扇屏,報菜名,地理圖,雖然有人物有情節,但主要的是最後的貫口,精髓不在故事上。批三國,論夢,買賣論,賭論,像是兩個人聊天,但也是有內容有主線,八大吉祥,五行詩,這類相聲不是隨便聊天不是講故事也不是段子合集,扒馬褂,羊上樹,五官爭功,這類又不是講故事,直接進入人物...