RF原理
提到隨機(jī)森林,就不得不提Bagging理澎,Bagging可以簡(jiǎn)單的理解為:放回抽樣逞力,多數(shù)表決(分類)或簡(jiǎn)單平均(回歸),同時(shí)Bagging的基學(xué)習(xí)器之間屬于并列生成,不存在強(qiáng)依賴關(guān)系糠爬。
Random Forest(隨機(jī)森林)是Bagging的擴(kuò)展變體寇荧,它在以決策樹 為基學(xué)習(xí)器構(gòu)建Bagging集成的基礎(chǔ)上,進(jìn)一步在決策樹的訓(xùn)練過(guò)程中引入了隨機(jī)特征選擇执隧,因此可以概括RF包括四個(gè)部分:1揩抡、隨機(jī)選擇樣本(放回抽樣)户侥;2、隨機(jī)選擇特征峦嗤;3蕊唐、構(gòu)建決策樹;4烁设、隨機(jī)森林投票(平均)替梨。
隨機(jī)選擇樣本和Bagging相同,隨機(jī)選擇特征是指在樹的構(gòu)建中装黑,會(huì)從樣本集的特征集合中隨機(jī)選擇部分特征副瀑,然后再?gòu)倪@個(gè)子集中選擇最優(yōu)的屬 性用于劃分,這種隨機(jī)性導(dǎo)致隨機(jī)森林的偏差會(huì)有稍微的增加(相比于單棵不隨機(jī)樹)曹体,但是由于隨機(jī)森林的‘平均’特性俗扇,會(huì)使得它的方差減小,而且方差的減小補(bǔ)償了偏差的增大箕别,因此總體而言是更好的模型铜幽。
在構(gòu)建決策樹的時(shí)候,RF的每棵決策樹都最大可能的進(jìn)行生長(zhǎng)而不進(jìn)行剪枝串稀;在對(duì)預(yù)測(cè)輸出進(jìn)行結(jié)合時(shí)除抛,RF通常對(duì)分類問(wèn)題使用簡(jiǎn)單投票法,回歸任務(wù)使用簡(jiǎn)單平均法母截。
RF的重要特性是不用對(duì)其進(jìn)行交叉驗(yàn)證或者使用一個(gè)獨(dú)立的測(cè)試集獲得無(wú)偏估計(jì)到忽,它可以在內(nèi)部進(jìn)行評(píng)估,也就是說(shuō)在生成的過(guò)程中可以對(duì)誤差進(jìn)行無(wú)偏估計(jì)清寇,由于每個(gè)基學(xué)習(xí)器只使用了訓(xùn)練集中約63.2%的樣本喘漏,剩下約36.8%的樣本可用做驗(yàn)證集來(lái)對(duì)其泛化性能進(jìn)行“包外估計(jì)”。
RF和Bagging對(duì)比:
RF的起始性能較差华烟,特別當(dāng)只有一個(gè)基學(xué)習(xí)器時(shí)翩迈,隨著學(xué)習(xí)器數(shù)目增多,隨機(jī)森林通常會(huì)收斂到更低的泛化誤差盔夜。隨機(jī)森林的訓(xùn)練效率也會(huì)高于Bagging负饲,因?yàn)樵趩蝹€(gè)決策樹的構(gòu)建中,Bagging使用的是‘確定性’決策樹喂链,在選擇特征劃分結(jié)點(diǎn)時(shí)返十,要對(duì)所有的特征進(jìn)行考慮,而隨機(jī)森林使用的是‘隨機(jī)性’特征數(shù)椭微,只需考慮特征的子集洞坑。
RF缺點(diǎn):
- 在噪聲較大的分類或者回歸問(wèn)題上會(huì)過(guò)擬合。
RF優(yōu)點(diǎn):
- 由于采用了集成算法蝇率,本身精度比大多數(shù)單個(gè)算法要好 迟杂;
- 在測(cè)試集上表現(xiàn)良好匈仗,由于兩個(gè)隨機(jī)性(樣本隨機(jī)、特征隨機(jī))的引入逢慌,使得隨機(jī)森林不容易陷入過(guò)擬合(樣本隨機(jī),特征隨機(jī)) 间狂;
- 在工業(yè)上攻泼,由于兩個(gè)隨機(jī)性的引入,使得隨機(jī)森林具有一定的抗噪聲能力鉴象,對(duì)比其他算法具有一定優(yōu)勢(shì) 忙菠;
- 由于樹的組合,使得隨機(jī)森林可以處理非線性數(shù)據(jù)纺弊,本身屬于非線性分類(擬合)模型 牛欢;
- 它能夠處理很高維度(feature很多)的數(shù)據(jù),并且不用做特征選擇淆游,對(duì)數(shù)據(jù)集的適應(yīng)能力強(qiáng):既能處理離散型數(shù)據(jù)傍睹,也能處理連續(xù)型數(shù)據(jù),數(shù)據(jù)集無(wú)需規(guī)范化 犹菱;
- 訓(xùn)練速度快拾稳,可以運(yùn)用在大規(guī)模數(shù)據(jù)集上 ;
- 可以處理缺省值(單獨(dú)作為一類)腊脱,不用額外處理 访得;
- 由于有袋外數(shù)據(jù)(OOB),可以在模型生成過(guò)程中取得真實(shí)誤差的無(wú)偏估計(jì)陕凹,且不損失訓(xùn)練數(shù)據(jù)量 悍抑;
- 在訓(xùn)練過(guò)程中,能夠檢測(cè)到feature間的互相影響杜耙,且可以得出feature的重要性搜骡,具有一定參考意義 ;
- 由于每棵樹可以獨(dú)立泥技、同時(shí)生成浆兰,容易做成并行化方法 ;
- 由于實(shí)現(xiàn)簡(jiǎn)單珊豹、精度高簸呈、抗過(guò)擬合能力強(qiáng),當(dāng)面對(duì)非線性數(shù)據(jù)時(shí)店茶,適于作為基準(zhǔn)模型蜕便。
GBDT 原理
GBDT與傳統(tǒng)的Boosting區(qū)別較大,它的每一次計(jì)算都是為了減少上一次的殘差贩幻,而為了消除殘差轿腺,我們可以在殘差減小的梯度方向上建立模型,所以說(shuō)两嘴,在GradientBoost中,每個(gè)新的模型的建立是為了使得之前的模型的殘差往梯度下降的方法族壳,與傳統(tǒng)的Boosting中關(guān)注正確錯(cuò)誤的樣本加權(quán)有著很大的區(qū)別憔辫。
在GradientBoosting算法中,關(guān)鍵就是利用損失函數(shù)的負(fù)梯度方向在當(dāng)前模型的值作為殘差的近似值仿荆,進(jìn)而擬合一棵CART回歸樹贰您。
GBDT的會(huì)累加所有樹的結(jié)果,而這種累加是無(wú)法通過(guò)分類完成的拢操,因此GBDT的樹都是CART回歸樹锦亦,而不是分類樹(盡管GBDT調(diào)整后也可以用于分類但不代表GBDT的樹為分類樹)。
GBDT 優(yōu)缺點(diǎn)
GBDT的性能在RF的基礎(chǔ)上又有一步提升令境,因此其優(yōu)點(diǎn)也很明顯杠园,1、它能靈活的處理各種類型的數(shù)據(jù)舔庶;2抛蚁、在相對(duì)較少的調(diào)參時(shí)間下,預(yù)測(cè)的準(zhǔn)確度較高栖茉。
當(dāng)然由于它是Boosting篮绿,因此基學(xué)習(xí)器之前存在串行關(guān)系,難以并行訓(xùn)練數(shù)據(jù)吕漂。
XGBoost原理
XGBoost的性能在GBDT上又有一步提升亲配,而其性能也能通過(guò)各種比賽管窺一二。坊間對(duì)XGBoost最大的認(rèn)知在于其能夠
自動(dòng)地運(yùn)用CPU的多線程進(jìn)行并行計(jì)算惶凝,同時(shí)在算法精度上也進(jìn)行了精度的提高吼虎。
由于GBDT在合理的參數(shù)設(shè)置下,往往要生成一定數(shù)量的樹才能達(dá)到令人滿意的準(zhǔn)確率苍鲜,在數(shù)據(jù)集較復(fù)雜時(shí)思灰,模型可能需要幾千次迭代運(yùn)算。但是XGBoost利用并行的CPU更好的解決了這個(gè)問(wèn)題混滔。
其實(shí)XGBoost和GBDT的差別也較大洒疚,這一點(diǎn)也同樣體現(xiàn)在其性能表現(xiàn)上,詳見(jiàn)XGBoost與GBDT的區(qū)別坯屿。
GBDT和XGBoost區(qū)別
- 傳統(tǒng)的GBDT以CART樹作為基學(xué)習(xí)器油湖,XGBoost還
支持線性分類器
,這個(gè)時(shí)候XGBoost相當(dāng)于L1和L2正則化的邏輯斯蒂回歸(分類)或者線性回歸(回歸)领跛;- 傳統(tǒng)的GBDT在優(yōu)化的時(shí)候只用到一階導(dǎo)數(shù)信息乏德,XGBoost則對(duì)
代價(jià)函數(shù)進(jìn)行了二階泰勒展開
,得到一階和二階導(dǎo)數(shù);- XGBoost在
代價(jià)函數(shù)中加入了正則項(xiàng)
喊括,用于控制模型的復(fù)雜度胧瓜。從權(quán)衡方差偏差來(lái)看,它降低了模型的方差
郑什,使學(xué)習(xí)出來(lái)的模型更加簡(jiǎn)單刁赦,放置過(guò)擬合弥奸,這也是XGBoost優(yōu)于傳統(tǒng)GBDT的一個(gè)特性相恃;- shrinkage(縮減)胚嘲,相當(dāng)于學(xué)習(xí)速率(XGBoost中的eta)。XGBoost在進(jìn)行完一次迭代時(shí)强胰,會(huì)將葉子節(jié)點(diǎn)的權(quán)值乘上該系數(shù),主要是為了削弱每棵樹的影響妹沙,讓后面有更大的學(xué)習(xí)空間偶洋。(GBDT也有學(xué)習(xí)速率);
列抽樣
距糖。XGBoost借鑒了隨機(jī)森林的做法玄窝,支持列抽樣,不僅防止過(guò) 擬合悍引,還能減少計(jì)算恩脂;對(duì)缺失值的處理
。對(duì)于特征的值有缺失的樣本趣斤,XGBoost還可以自動(dòng) 學(xué)習(xí)出它的分裂方向俩块;- XGBoost工具支持
并行
。Boosting不是一種串行的結(jié)構(gòu)嗎?怎么并行 的浓领?注意XGBoost的并行不是tree粒度的并行玉凯,XGBoost也是一次迭代完才能進(jìn)行下一次迭代的(第t次迭代的代價(jià)函數(shù)里包含了前面t-1次迭代的預(yù)測(cè)值)。XGBoost的并行是在特征粒度上的联贩。我們知道漫仆,決策樹的學(xué)習(xí)最耗時(shí)的一個(gè)步驟就是對(duì)特征的值進(jìn)行排序(因?yàn)橐_定最佳分割點(diǎn)),XGBoost在訓(xùn)練之前泪幌,預(yù)先對(duì)數(shù)據(jù)進(jìn)行了排序盲厌,然后保存為block結(jié)構(gòu),后面的迭代 中重復(fù)地使用這個(gè)結(jié)構(gòu)祸泪,大大減小計(jì)算量吗浩。這個(gè)block結(jié)構(gòu)也使得并行成為了可能,在進(jìn)行節(jié)點(diǎn)的分裂時(shí)浴滴,需要計(jì)算每個(gè)特征的增益拓萌,最終選增益最大的那個(gè)特征去做分裂,那么各個(gè)特征的增益計(jì)算就可以開多線程進(jìn)行升略。
作者:Vico_Men
來(lái)源:CSDN
原文:https://blog.csdn.net/qq_28031525/article/details/70207918
版權(quán)聲明:本文為博主原創(chuàng)文章微王,轉(zhuǎn)載請(qǐng)附上博文鏈接屡限!