pg棋牌 RF,GBDT,XGBoost,lightGBM的對(duì)比
RF、GBDT、XGBoost、lightGBM都屬于集成學(xué)習(xí)(Ensemble Learning)。集成學(xué)習(xí)的目的是通過(guò)結(jié)合多個(gè)基學(xué)習(xí)器的預(yù)測(cè)結(jié)果來(lái)提高基學(xué)習(xí)器的泛化能力和魯棒性。
根據(jù)基礎(chǔ)學(xué)習(xí)器的生成方式,目前的集成學(xué)習(xí)方法大致分為兩類:即基礎(chǔ)學(xué)習(xí)器之間存在強(qiáng)依賴關(guān)系、必須串行生成的序列化方法和基礎(chǔ)學(xué)習(xí)器之間不存在強(qiáng)依賴關(guān)系。 ,可以同時(shí)生成的并行化方法;前者以Boosting為代表,后者以Bagging和“隨機(jī)森林”(Random Forest)為代表。
集成學(xué)習(xí)簡(jiǎn)介:機(jī)器學(xué)習(xí)模型優(yōu)化的模型融合
本文主要比較集成學(xué)習(xí)中重要且廣泛使用的方法:RF(隨機(jī)森林)、ET(極端隨機(jī)樹(shù))、GBDT(梯度提升決策樹(shù))、XGBoost、lightGBM
1. RF(隨機(jī)森林):
1、射頻原理:
RF是Bagging算法的優(yōu)化版本。改進(jìn)1:基礎(chǔ)學(xué)習(xí)器僅限于決策樹(shù)。改進(jìn)2:除了bagging之外,還對(duì)樣本添加擾動(dòng),對(duì)屬性也添加擾動(dòng),即在決策樹(shù)學(xué)習(xí)的過(guò)程中。引入隨機(jī)屬性選擇。對(duì)于基礎(chǔ)決策樹(shù)的每個(gè)節(jié)點(diǎn),從該節(jié)點(diǎn)的屬性集中隨機(jī)選擇一個(gè)包含k個(gè)屬性的子集,然后從這個(gè)子集中選擇一個(gè)最優(yōu)屬性進(jìn)行劃分。 。
2. RF的生成:算法如下
輸入為樣本集D={(x,y1),(x2,y2),...(xm,ym)}D={(x,y1),(x2,y2),...(xm,ym)},弱分類器迭代次數(shù)T。
輸出為最終的強(qiáng)分類器f(x)f(x)
1)對(duì)于t=1,2...,T:
a)對(duì)訓(xùn)練集進(jìn)行第t次隨機(jī)采樣,共采集m次,得到包含m個(gè)樣本的采樣集D-m
b)用采樣集D-m訓(xùn)練'第m個(gè)決策樹(shù)模型Gm(x)',在訓(xùn)練決策樹(shù)模型的節(jié)點(diǎn)的時(shí)候, '在節(jié)點(diǎn)上所有的樣本特征中選擇一部分樣本特征, 在這些隨機(jī)選擇的部分樣本特征中選擇一個(gè)最優(yōu)的特征來(lái)做決策樹(shù)的左右子樹(shù)劃分'
2) 如果是'分類算法預(yù)測(cè)',則T個(gè)弱學(xué)習(xí)器投出最多票數(shù)的類別或者類別之一為最終類別。
'如果是回歸算法',T個(gè)弱學(xué)習(xí)器得到的回歸結(jié)果進(jìn)行算術(shù)平均得到的值為最終的模型輸出。
3. RF和Bagging的比較:RF的初始性能很差,特別是當(dāng)只有一個(gè)基學(xué)習(xí)器時(shí)。隨著學(xué)習(xí)者數(shù)量的增加,隨機(jī)森林通常會(huì)收斂到較低的泛化誤差。隨機(jī)森林的訓(xùn)練效率也會(huì)高于bagging,因?yàn)樵跇?gòu)建單個(gè)決策樹(shù)時(shí),bagging使用的是“確定性”決策樹(shù)。選擇特征劃分節(jié)點(diǎn)時(shí),必須考慮所有特征,而使用隨機(jī)森林“隨機(jī)”特征數(shù)并且僅考慮特征的子集。
4、優(yōu)點(diǎn)和缺點(diǎn):
優(yōu)點(diǎn):訓(xùn)練可以高度并行,在大數(shù)據(jù)時(shí)代大樣本訓(xùn)練速度上有優(yōu)勢(shì)(個(gè)人認(rèn)為這是主要優(yōu)勢(shì));它可以處理非常高維的數(shù)據(jù),無(wú)需進(jìn)行特征選擇pg電子娛樂(lè)平臺(tái),并且在訓(xùn)練后,給出特征的重要性;與Boosting系列的Adaboost和GBDT相比,RF實(shí)現(xiàn)相對(duì)簡(jiǎn)單。 。
缺點(diǎn):在有噪聲的分類或回歸問(wèn)題上很容易過(guò)擬合。
2. ET(Extremely random trees) Extra-Trees(極端隨機(jī)樹(shù)):
1、ET的原理:該算法與隨機(jī)森林算法非常相似,都是由很多決策樹(shù)組成。但該算法與隨機(jī)森林有兩個(gè)主要區(qū)別:
1)對(duì)于每棵決策樹(shù)的訓(xùn)練集,RF使用隨機(jī)采樣bootstrap來(lái)選擇采樣集作為每棵決策樹(shù)的訓(xùn)練集,而額外樹(shù)一般不使用隨機(jī)采樣,即每棵決策樹(shù)都使用原始訓(xùn)練放。
2)RF決策樹(shù)選擇劃分特征后,會(huì)根據(jù)信息增益、基尼系數(shù)、均方誤差等原則選擇最優(yōu)特征值劃分點(diǎn),與傳統(tǒng)決策樹(shù)相同。但額外的樹(shù)木更為激進(jìn)。他們隨機(jī)選擇一個(gè)特征值來(lái)劃分決策樹(shù)。
2、ET隨機(jī)選取特征值的說(shuō)明:
當(dāng)特征屬性為類別形式時(shí),隨機(jī)選擇某些類別的樣本作為左分支,其他類別的樣本作為右分支;當(dāng)特征屬性為數(shù)值形式時(shí),隨機(jī)選擇特征屬性最大值的樣本。該值和最小值之間的任意數(shù)字。當(dāng)樣本的特征屬性值大于該值時(shí),則作為左分支。當(dāng)小于這個(gè)值時(shí),就作為右分支。這樣就達(dá)到了將樣本隨機(jī)分配到該特征屬性下的兩個(gè)分支的目的。然后計(jì)算此時(shí)的分叉值(如果特征屬性是類別形式,可以應(yīng)用基尼指數(shù);如果特征屬性是數(shù)值形式,可以應(yīng)用均方誤差)。遍歷節(jié)點(diǎn)中的所有特征屬性,根據(jù)上述方法獲取所有特征屬性的分叉值。我們選擇分叉值最大的形式來(lái)實(shí)現(xiàn)節(jié)點(diǎn)的分叉。
3、ET和RF的比較:由于特征值的劃分點(diǎn)是隨機(jī)選擇的,而不是最優(yōu)點(diǎn),所以生成的決策樹(shù)的大小一般會(huì)比RF生成的要大。換句話說(shuō),模型的方差相對(duì)于RF進(jìn)一步減小,但偏差相對(duì)于RF進(jìn)一步增大。在某些時(shí)候,額外的樹(shù)比 RF 具有更好的泛化能力。
(RF還有一個(gè)變體,Isolation Forest,用于查找異常值,與本文關(guān)系不大,可以自行關(guān)注)
3.GBDT(梯度提升決策樹(shù)):
1、GBDT原理:
GBDT是集成學(xué)習(xí)Boosting家族的一員,是對(duì)boosting樹(shù)的改進(jìn)。 Boosted Tree是當(dāng)加性模型和學(xué)習(xí)算法都是前向分布算法時(shí)的算法。然而,它將基本學(xué)習(xí)器限制在決策樹(shù)上。對(duì)于二元分類問(wèn)題,損失函數(shù)是指數(shù)函數(shù),這意味著AdaBoost算法中的基本學(xué)習(xí)器僅限于二元決策樹(shù);對(duì)于回歸問(wèn)題,損失函數(shù)是平方誤差,此時(shí)擬合的是當(dāng)前模型。殘差。梯度boosting樹(shù)GBDT是boosting樹(shù)算法的改進(jìn)。 boosting樹(shù)算法僅適用于誤差函數(shù)為指數(shù)函數(shù)和平方誤差的情況。對(duì)于一般損失函數(shù),梯度boosting樹(shù)算法使用當(dāng)前模型值中損失函數(shù)的負(fù)梯度作為殘差Poor近似。
GBDT會(huì)累加所有樹(shù)的結(jié)果,而這個(gè)累加并不能通過(guò)分類來(lái)完成,所以GBDT的樹(shù)都是CART回歸樹(shù),而不是分類樹(shù)(雖然GBDT調(diào)整后也可以用于分類,但它不代表樹(shù)) GBDT 是一個(gè)分類樹(shù))。
2.GBDT算法:
關(guān)于GBDT算法原理的詳細(xì)信息可以參考:梯度提升樹(shù)(GBDT)原理總結(jié)
關(guān)鍵部分總結(jié)如下:
輸入是訓(xùn)練集樣本
,最大迭代次數(shù)T,損失函數(shù)L。
輸出是強(qiáng)學(xué)習(xí)器 f(x)
1)初始化弱學(xué)習(xí)器
2)對(duì)于迭代輪數(shù)t=1,2,…T,有:
a) 計(jì)算樣本 i=1,2,...m 的負(fù)梯度
b) 利用
,擬合一棵CART回歸樹(shù)得到第t棵回歸樹(shù),其對(duì)應(yīng)的葉子節(jié)點(diǎn)面積為
。其中 J 是回歸樹(shù) t 的葉節(jié)點(diǎn)數(shù)。
c) 計(jì)算葉面積 j =1,2,..J 的最佳擬合值
d) 更新強(qiáng)學(xué)習(xí)器
3)獲取強(qiáng)學(xué)習(xí)器f(x)的表達(dá)式
3、GBDT和Boosting的區(qū)別:
GBDT 與傳統(tǒng)的 Boosting 有很大不同。 GBDT的每一次計(jì)算都是為了減少之前的殘差。為了消除殘差,我們可以在殘差減小的梯度方向建立模型。所以,在 GradientBoost 中,每建立一個(gè)新模型,都是讓之前模型的殘差走梯度下降法,這與傳統(tǒng)的 Boosting 注重正確和錯(cuò)誤的樣本權(quán)重有很大不同。
4、優(yōu)點(diǎn)和缺點(diǎn):
優(yōu)點(diǎn):可以靈活處理各種類型的數(shù)據(jù);與SVM相比,參數(shù)調(diào)整時(shí)間相對(duì)較少,預(yù)測(cè)精度較高。
缺點(diǎn):基學(xué)習(xí)器之前存在串行關(guān)系pg電子麻將胡了,難以并行訓(xùn)練數(shù)據(jù)。
4.XGBoost:
1.了解XGBoost原理:
XGBoost原理詳解。推薦兩篇很棒的博客,xgboost原理和xgboost算法原理。
這里我簡(jiǎn)單解釋一下我的理解:
XGBoost是集成學(xué)習(xí)Boosting家族的一員,是基于GBDT的Boosting算法的改進(jìn)。 GBDT使用模型在數(shù)據(jù)上的負(fù)梯度作為殘差的近似值來(lái)擬合殘差。 XGBoost 也對(duì)數(shù)據(jù)進(jìn)行殘差擬合,但它使用泰勒展開(kāi)來(lái)近似模型損失殘差;同時(shí),XGBoost改進(jìn)了模型的損失函數(shù),并添加了模型復(fù)雜度的正則項(xiàng)。
2、XGBoost和GBDT的區(qū)別:了解了XGBoost的原理就很容易理解兩者的區(qū)別
損失函數(shù)的變化:(衍生品和正則項(xiàng)的理解)
工具的優(yōu)化:(趨勢(shì)值和并行性的認(rèn)知)
5. 輕GBM:
1. lightGBM的理解:它是微軟開(kāi)發(fā)的一個(gè)新的boosting框架。基本原理與XGBoost相同,但在框架上進(jìn)行了優(yōu)化(重點(diǎn)是優(yōu)化模型的訓(xùn)練速度)。
lightGBM介紹參考:Faster Than XGBOOST – LightGBM介紹
2.lightGBM和XGBoost的區(qū)別:
(1) xgboost采用level-wise分裂策略,而lightGBM采用leaf-wise策略。不同之處在于xgboost不加區(qū)別地分割每一層中的所有節(jié)點(diǎn)。有些節(jié)點(diǎn)的增益可能很小,對(duì)結(jié)果沒(méi)有影響。大,但是xgboost也被拆分了,這就帶來(lái)了必要的開(kāi)銷。 leaf-wise的方法是在當(dāng)前所有葉子節(jié)點(diǎn)中選擇分裂收益最大的節(jié)點(diǎn)進(jìn)行分裂,并遞歸地進(jìn)行。很明顯,leaf-wise的這種方法很容易過(guò)擬合,因?yàn)楹苋菀紫萑氲奖容^高的深度,所以需要限制最大深度,以避免過(guò)擬合。
(2)lightgbm采用的是基于直方圖的決策樹(shù)算法,與xgboost中的exact算法不同。直方圖算法在內(nèi)存和計(jì)算成本方面具有相當(dāng)大的優(yōu)勢(shì)。
-.內(nèi)存優(yōu)勢(shì):顯然,直方圖算法的內(nèi)存消耗是(#data* #features * 1Bytes)(因?yàn)閷?duì)特征分桶后只保存了特征離散化后的值)pg賞金女王單機(jī)版試玩平臺(tái),而xgboost的exact算法的內(nèi)存消耗是:(2 * #data * #features* 4Bytes),因?yàn)閤gboost需要同時(shí)保存原始特征值和該值的順序索引。這些值需要32位浮點(diǎn)數(shù)來(lái)保存。
-.計(jì)算優(yōu)勢(shì)。預(yù)排序算法在選擇分割特征時(shí)需要遍歷所有樣本的特征值來(lái)計(jì)算分割收益,時(shí)間為(#data),而直方圖算法只需要遍歷桶,時(shí)間為( #垃圾桶 )
(3)直方圖差分加速度
-.父節(jié)點(diǎn)的直方圖減去兄弟節(jié)點(diǎn)的直方圖就可以得到子節(jié)點(diǎn)的直方圖,從而加快計(jì)算速度。
(4)lightgbm支持直接輸入分類特征
-.在分割離散特征時(shí),將每個(gè)值視為一個(gè)桶,分割時(shí)的增益計(jì)算為“是否屬于某個(gè)類別”的增益。類似于one-hot編碼。
(5)但實(shí)際上,xgboost的近似直方圖算法也與lightgbm的直方圖算法類似。為什么xgboost的近似直方圖算法還是比lightgbm慢很多?
-. xgboost 在每一層動(dòng)態(tài)構(gòu)建直方圖。因?yàn)閤gboost的直方圖算法并不是針對(duì)特定的特征,而是所有的特征共享一個(gè)直方圖(每個(gè)樣本的權(quán)重是二階導(dǎo)數(shù)),所以每個(gè)層的直方圖都要重新構(gòu)建,而lightgbm對(duì)于每個(gè)層都有一個(gè)直方圖特征,因此構(gòu)建一次直方圖就足夠了。
-. lightgbm做了緩存優(yōu)化嗎?
(6)lightgbm的哪些方面是并行化的?
-.特征并行
一般的特征并行就是對(duì)數(shù)據(jù)進(jìn)行垂直分區(qū)(垂直分區(qū)數(shù)據(jù),即拆分屬性),然后將拆分后的數(shù)據(jù)分散到各個(gè)worker上。每個(gè)worker計(jì)算自己擁有的數(shù)據(jù)的最佳分割點(diǎn),然后匯總得到全局結(jié)果。最佳分裂點(diǎn)。但lightgbm表示,這種方式的通信開(kāi)銷比較大。 lightgbm的做法是每個(gè)worker擁有所有數(shù)據(jù),然后進(jìn)行劃分? (我不明白,既然每個(gè)worker都有所有的數(shù)據(jù),那么總結(jié)有什么意義呢?這個(gè)并行性體現(xiàn)在哪里??)
-.數(shù)據(jù)并行
傳統(tǒng)的數(shù)據(jù)并行對(duì)數(shù)據(jù)集進(jìn)行劃分,也稱為并行分區(qū)(水平分區(qū)數(shù)據(jù))。分發(fā)到每個(gè)worker后,worker將獲得的數(shù)據(jù)制作直方圖,并對(duì)每個(gè)worker的直方圖進(jìn)行匯總,得到全局直方圖。 Lightgbm還聲稱這個(gè)操作的通信開(kāi)銷比較大。 Lightgbm的做法是使用“Reduce Scatter”機(jī)制。它并沒(méi)有總結(jié)所有的直方圖,只是總結(jié)了不同worker的不同特征的直方圖(原理?)。在這個(gè)總結(jié)的直方圖上進(jìn)行分割并最終同步。
我要評(píng)論