使用sklearn進(jìn)行集成學(xué)習(xí)——理論
系列
《使用sklearn進(jìn)行集成學(xué)習(xí)——理論》
《使用sklearn進(jìn)行集成學(xué)習(xí)——實(shí)踐》
目錄
1 前言
2 集成學(xué)習(xí)是什么?
3 偏差和方差
3.1 模型的偏差和方差是什么脚祟?
3.2 bagging的偏差和方差
3.3 boosting的偏差和方差
3.4 模型的獨(dú)立性
3.5 小結(jié)
4 Gradient Boosting
4.1 擬合殘差
4.2 擬合反向梯度
4.2.1 契機(jī):引入損失函數(shù)
4.2.2 難題一:任意損失函數(shù)的最優(yōu)化
4.2.3 難題二:無(wú)法對(duì)測(cè)試樣本計(jì)算反向梯度
4.3 常見(jiàn)的損失函數(shù)
4.4 步子太大容易扯著蛋:縮減
4.5 初始模型
4.5 Gradient Tree Boosting
4.6 小結(jié)
5 總結(jié)
6 參考資料
1 前言
很多人在競(jìng)賽(Kaggle,天池等)或工程實(shí)踐中使用了集成學(xué)習(xí)(例如晾嘶,RF果覆、GTB等)摇幻,確實(shí)也取得了不錯(cuò)的效果,在保證準(zhǔn)確度的同時(shí)也提升了模型防止過(guò)擬合的能力顷锰。但是柬赐,我們真的用對(duì)了集成學(xué)習(xí)嗎?
sklearn提供了sklearn.ensemble庫(kù)官紫,支持眾多集成學(xué)習(xí)算法和模型躺率÷杲纾恐怕大多數(shù)人使用這些工具時(shí),要么使用默認(rèn)參數(shù)悼吱,要么根據(jù)模型在測(cè)試集上的性能試探性地進(jìn)行調(diào)參(當(dāng)然慎框,完全不懂的參數(shù)還是不動(dòng)算了),要么將調(diào)參的工作丟給調(diào)參算法(網(wǎng)格搜索等)后添。這樣并不能真正地稱為“會(huì)”用sklearn進(jìn)行集成學(xué)習(xí)笨枯。
我認(rèn)為,學(xué)會(huì)調(diào)參是進(jìn)行集成學(xué)習(xí)工作的前提遇西。然而馅精,第一次遇到這些算法和模型時(shí),肯定會(huì)被其豐富的參數(shù)所嚇到粱檀,要知道洲敢,教材上教的偽代碼可沒(méi)這么多參數(shù)啊G羊恰Q古怼!沒(méi)關(guān)系渗常,暫時(shí)壮不,我們只要記住一句話:參數(shù)可分為兩種,一種是影響模型在訓(xùn)練集上的準(zhǔn)確度或影響防止過(guò)擬合能力的參數(shù)皱碘;另一種不影響這兩者的其他參數(shù)询一。模型在樣本總體上的準(zhǔn)確度(后簡(jiǎn)稱準(zhǔn)確度)由其在訓(xùn)練集上的準(zhǔn)確度及其防止過(guò)擬合的能力所共同決定,所以在調(diào)參時(shí)癌椿,我們主要對(duì)第一種參數(shù)進(jìn)行調(diào)整健蕊,最終達(dá)到的效果是:模型在訓(xùn)練集上的準(zhǔn)確度和防止過(guò)擬合能力的大和諧!
本篇博文將詳細(xì)闡述模型參數(shù)背后的理論知識(shí)踢俄,在下篇博文中绊诲,我們將對(duì)最熱門(mén)的兩個(gè)模型Random Forrest和Gradient Tree Boosting(含分類和回歸,所以共4個(gè)模型)進(jìn)行具體的參數(shù)講解褪贵。如果你實(shí)在無(wú)法靜下心來(lái)學(xué)習(xí)理論,你也可以在下篇博文中找到最直接的調(diào)參指導(dǎo)抗俄,雖然我不贊同這么做脆丁。
2 集成學(xué)習(xí)是什么?
我們還是花一點(diǎn)時(shí)間來(lái)說(shuō)明一下集成學(xué)習(xí)是什么动雹,如果對(duì)此有一定基礎(chǔ)的同學(xué)可以跳過(guò)本節(jié)槽卫。簡(jiǎn)單來(lái)說(shuō),集成學(xué)習(xí)是一種技術(shù)框架胰蝠,其按照不同的思路來(lái)組合基礎(chǔ)模型歼培,從而達(dá)到其利斷金的目的震蒋。
目前,有三種常見(jiàn)的集成學(xué)習(xí)框架:bagging躲庄,boosting和stacking查剖。國(guó)內(nèi),南京大學(xué)的周志華教授對(duì)集成學(xué)習(xí)有很深入的研究噪窘,其在09年發(fā)表的一篇概述性論文《Ensemble Learning》對(duì)這三種集成學(xué)習(xí)框架有了明確的定義笋庄,概括如下:
bagging:從訓(xùn)練集從進(jìn)行子抽樣組成每個(gè)基模型所需要的子訓(xùn)練集,對(duì)所有基模型預(yù)測(cè)的結(jié)果進(jìn)行綜合產(chǎn)生最終的預(yù)測(cè)結(jié)果:
boosting:訓(xùn)練過(guò)程為階梯狀倔监,基模型按次序一一進(jìn)行訓(xùn)練(實(shí)現(xiàn)上可以做到并行)直砂,基模型的訓(xùn)練集按照某種策略每次都進(jìn)行一定的轉(zhuǎn)化。對(duì)所有基模型預(yù)測(cè)的結(jié)果進(jìn)行線性綜合產(chǎn)生最終的預(yù)測(cè)結(jié)果:
stacking:將訓(xùn)練好的所有基模型對(duì)訓(xùn)練基進(jìn)行預(yù)測(cè)浩习,第j個(gè)基模型對(duì)第i個(gè)訓(xùn)練樣本的預(yù)測(cè)值將作為新的訓(xùn)練集中第i個(gè)樣本的第j個(gè)特征值静暂,最后基于新的訓(xùn)練集進(jìn)行訓(xùn)練。同理谱秽,預(yù)測(cè)的過(guò)程也要先經(jīng)過(guò)所有基模型的預(yù)測(cè)形成新的測(cè)試集洽蛀,最后再對(duì)測(cè)試集進(jìn)行預(yù)測(cè):
有了這些基本概念之后,直覺(jué)將告訴我們弯院,由于不再是單一的模型進(jìn)行預(yù)測(cè)辱士,所以模型有了“集思廣益”的能力,也就不容易產(chǎn)生過(guò)擬合現(xiàn)象听绳。但是颂碘,直覺(jué)是不可靠的,接下來(lái)我們將從模型的偏差和方差入手椅挣,徹底搞清楚這一問(wèn)題头岔。
3 偏差和方差
廣義的偏差(bias)描述的是預(yù)測(cè)值和真實(shí)值之間的差異,方差(variance)描述距的是預(yù)測(cè)值作為隨機(jī)變量的離散程度鼠证。《Understanding the Bias-Variance Tradeoff》當(dāng)中有一副圖形象地向我們展示了偏差和方差的關(guān)系:
3.1 模型的偏差和方差是什么峡竣?
模型的偏差是一個(gè)相對(duì)來(lái)說(shuō)簡(jiǎn)單的概念:訓(xùn)練出來(lái)的模型在訓(xùn)練集上的準(zhǔn)確度。
要解釋模型的方差量九,首先需要重新審視模型:模型是隨機(jī)變量适掰。設(shè)樣本容量為n的訓(xùn)練集為隨機(jī)變量的集合(X1, X2, ..., Xn),那么模型是以這些隨機(jī)變量為輸入的隨機(jī)變量函數(shù)(其本身仍然是隨機(jī)變量):F(X1, X2, ..., Xn)荠列。抽樣的隨機(jī)性帶來(lái)了模型的隨機(jī)性类浪。
定義隨機(jī)變量的值的差異是計(jì)算方差的前提條件,通常來(lái)說(shuō)肌似,我們遇到的都是數(shù)值型的隨機(jī)變量费就,數(shù)值之間的差異再明顯不過(guò)(減法運(yùn)算)。但是川队,模型的差異性呢力细?我們可以理解模型的差異性為模型的結(jié)構(gòu)差異睬澡,例如:線性模型中權(quán)值向量的差異,樹(shù)模型中樹(shù)的結(jié)構(gòu)差異等眠蚂。在研究模型方差的問(wèn)題上煞聪,我們并不需要對(duì)方差進(jìn)行定量計(jì)算,只需要知道其概念即可河狐。
研究模型的方差有什么現(xiàn)實(shí)的意義呢米绕?我們認(rèn)為方差越大的模型越容易過(guò)擬合:假設(shè)有兩個(gè)訓(xùn)練集A和B,經(jīng)過(guò)A訓(xùn)練的模型Fa與經(jīng)過(guò)B訓(xùn)練的模型Fb差異很大馋艺,這意味著Fa在類A的樣本集合上有更好的性能栅干,而Fb反之,這便是我們所說(shuō)的過(guò)擬合現(xiàn)象捐祠。
我們常說(shuō)集成學(xué)習(xí)框架中的基模型是弱模型碱鳞,通常來(lái)說(shuō)弱模型是偏差高(在訓(xùn)練集上準(zhǔn)確度低)方差小(防止過(guò)擬合能力強(qiáng))的模型踱蛀。但是窿给,并不是所有集成學(xué)習(xí)框架中的基模型都是弱模型。bagging和stacking中的基模型為強(qiáng)模型(偏差低方差高)率拒,boosting中的基模型為弱模型崩泡。
在bagging和boosting框架中,通過(guò)計(jì)算基模型的期望和方差猬膨,我們可以得到模型整體的期望和方差角撞。為了簡(jiǎn)化模型,我們假設(shè)基模型的權(quán)重勃痴、方差及兩兩間的相關(guān)系數(shù)相等谒所。由于bagging和boosting的基模型都是線性組成的,那么有:
3.2 bagging的偏差和方差
對(duì)于bagging來(lái)說(shuō)沛申,每個(gè)基模型的權(quán)重等于1/m且期望近似相等(子訓(xùn)練集都是從原訓(xùn)練集中進(jìn)行子抽樣)劣领,故我們可以進(jìn)一步化簡(jiǎn)得到:
根據(jù)上式我們可以看到,整體模型的期望近似于基模型的期望铁材,這也就意味著整體模型的偏差和基模型的偏差近似尖淘。同時(shí),整體模型的方差小于等于基模型的方差(當(dāng)相關(guān)性為1時(shí)取等號(hào))著觉,隨著基模型數(shù)(m)的增多村生,整體模型的方差減少,從而防止過(guò)擬合的能力增強(qiáng)固惯,模型的準(zhǔn)確度得到提高。但是缴守,模型的準(zhǔn)確度一定會(huì)無(wú)限逼近于1嗎葬毫?并不一定镇辉,當(dāng)基模型數(shù)增加到一定程度時(shí),方差公式第二項(xiàng)的改變對(duì)整體方差的作用很小贴捡,防止過(guò)擬合的能力達(dá)到極限忽肛,這便是準(zhǔn)確度的極限了。另外烂斋,在此我們還知道了為什么bagging中的基模型一定要為強(qiáng)模型屹逛,否則就會(huì)導(dǎo)致整體模型的偏差度低,即準(zhǔn)確度低汛骂。
Random Forest是典型的基于bagging框架的模型罕模,其在bagging的基礎(chǔ)上,進(jìn)一步降低了模型的方差帘瞭。Random Fores中基模型是樹(shù)模型淑掌,在樹(shù)的內(nèi)部節(jié)點(diǎn)分裂過(guò)程中丑勤,不再是將所有特征搭独,而是隨機(jī)抽樣一部分特征納入分裂的候選項(xiàng)过牙。這樣一來(lái)捂蕴,基模型之間的相關(guān)性降低型宝,從而在方差公式中什黑,第一項(xiàng)顯著減少檀何,第二項(xiàng)稍微增加辞槐,整體方差仍是減少廷蓉。
3.3 boosting的偏差和方差
對(duì)于boosting來(lái)說(shuō)全封,基模型的訓(xùn)練集抽樣是強(qiáng)相關(guān)的,那么模型的相關(guān)系數(shù)近似等于1苦酱,故我們也可以針對(duì)boosting化簡(jiǎn)公式為:
通過(guò)觀察整體方差的表達(dá)式售貌,我們?nèi)菀装l(fā)現(xiàn),若基模型不是弱模型疫萤,其方差相對(duì)較大颂跨,這將導(dǎo)致整體模型的方差很大,即無(wú)法達(dá)到防止過(guò)擬合的效果扯饶。因此恒削,boosting框架中的基模型必須為弱模型。
因?yàn)榛P蜑槿跄P臀残颍瑢?dǎo)致了每個(gè)基模型的準(zhǔn)確度都不是很高(因?yàn)槠湓谟?xùn)練集上的準(zhǔn)確度不高)钓丰。隨著基模型數(shù)的增多,整體模型的期望值增加每币,更接近真實(shí)值携丁,因此,整體模型的準(zhǔn)確度提高。但是準(zhǔn)確度一定會(huì)無(wú)限逼近于1嗎梦鉴?仍然并不一定李茫,因?yàn)橛?xùn)練過(guò)程中準(zhǔn)確度的提高的主要功臣是整體模型在訓(xùn)練集上的準(zhǔn)確度提高,而隨著訓(xùn)練的進(jìn)行肥橙,整體模型的方差變大魄宏,導(dǎo)致防止過(guò)擬合的能力變?nèi)酰罱K導(dǎo)致了準(zhǔn)確度反而有所下降存筏。
基于boosting框架的Gradient Tree Boosting模型中基模型也為樹(shù)模型宠互,同Random Forrest,我們也可以對(duì)特征進(jìn)行隨機(jī)抽樣來(lái)使基模型間的相關(guān)性降低椭坚,從而達(dá)到減少方差的效果予跌。
3.4 模型的獨(dú)立性
聰明的讀者這時(shí)肯定要問(wèn)了,如何衡量基模型的獨(dú)立性藕溅?我們說(shuō)過(guò)匕得,抽樣的隨機(jī)性決定了模型的隨機(jī)性,如果兩個(gè)模型的訓(xùn)練集抽樣過(guò)程不獨(dú)立巾表,則兩個(gè)模型則不獨(dú)立汁掠。這時(shí)便有一個(gè)天大的陷阱在等著我們:bagging中基模型的訓(xùn)練樣本都是獨(dú)立的隨機(jī)抽樣,但是基模型卻不獨(dú)立呢集币?
我們討論模型的隨機(jī)性時(shí)考阱,抽樣是針對(duì)于樣本的整體。而bagging中的抽樣是針對(duì)于訓(xùn)練集(整體的子集)鞠苟,所以并不能稱其為對(duì)整體的獨(dú)立隨機(jī)抽樣乞榨。那么到底bagging中基模型的相關(guān)性體現(xiàn)在哪呢?在知乎問(wèn)答《為什么說(shuō)bagging是減少variance当娱,而boosting是減少bias?》中請(qǐng)教用戶“過(guò)擬合”后吃既,我總結(jié)bagging的抽樣為兩個(gè)過(guò)程:
樣本抽樣:整體模型F(X1, X2, ..., Xn)中各輸入隨機(jī)變量(X1, X2, ..., Xn)對(duì)樣本的抽樣
子抽樣:從整體模型F(X1, X2, ..., Xn)中隨機(jī)抽取若干輸入隨機(jī)變量成為基模型的輸入隨機(jī)變量
假若在子抽樣的過(guò)程中,兩個(gè)基模型抽取的輸入隨機(jī)變量有一定的重合跨细,那么這兩個(gè)基模型對(duì)整體樣本的抽樣將不再獨(dú)立鹦倚,這時(shí)基模型之間便具有了相關(guān)性。
3.5 小結(jié)
還記得調(diào)參的目標(biāo)嗎:模型在訓(xùn)練集上的準(zhǔn)確度和防止過(guò)擬合能力的大和諧冀惭!為此震叙,我們目前做了一些什么工作呢?
使用模型的偏差和方差來(lái)描述其在訓(xùn)練集上的準(zhǔn)確度和防止過(guò)擬合的能力
對(duì)于bagging來(lái)說(shuō)散休,整體模型的偏差和基模型近似媒楼,隨著訓(xùn)練的進(jìn)行,整體模型的方差降低
對(duì)于boosting來(lái)說(shuō)戚丸,整體模型的初始偏差較高划址,方差較低,隨著訓(xùn)練的進(jìn)行,整體模型的偏差降低(雖然也不幸地伴隨著方差增高)夺颤,當(dāng)訓(xùn)練過(guò)度時(shí)对人,因方差增高,整體模型的準(zhǔn)確度反而降低
整體模型的偏差和方差與基模型的偏差和方差息息相關(guān)
這下總算有點(diǎn)開(kāi)朗了拂共,那些讓我們抓狂的參數(shù),現(xiàn)在可以粗略地分為兩類了:控制整體訓(xùn)練過(guò)程的參數(shù)和基模型的參數(shù)姻几,這兩類參數(shù)都在影響著模型在訓(xùn)練集上的準(zhǔn)確度以及防止過(guò)擬合的能力宜狐。
4?Gradient Boosting
對(duì)基于Gradient Boosting框架的模型的進(jìn)行調(diào)試時(shí),我們會(huì)遇到一個(gè)重要的概念:損失函數(shù)蛇捌。在本節(jié)中抚恒,我們將把損失函數(shù)的“今生來(lái)世”講個(gè)清楚!
基于boosting框架的整體模型可以用線性組成式來(lái)描述络拌,其中h[i](x)為基模型與其權(quán)值的乘積:
根據(jù)上式俭驮,整體模型的訓(xùn)練目標(biāo)是使預(yù)測(cè)值F(x)逼近真實(shí)值y,也就是說(shuō)要讓每一個(gè)基模型的預(yù)測(cè)值逼近各自要預(yù)測(cè)的部分真實(shí)值春贸。由于要同時(shí)考慮所有基模型混萝,導(dǎo)致了整體模型的訓(xùn)練變成了一個(gè)非常復(fù)雜的問(wèn)題。所以萍恕,研究者們想到了一個(gè)貪心的解決手段:每次只訓(xùn)練一個(gè)基模型逸嘀。那么,現(xiàn)在改寫(xiě)整體模型為迭代式:
這樣一來(lái)允粤,每一輪迭代中崭倘,只要集中解決一個(gè)基模型的訓(xùn)練問(wèn)題:使F[i](x)逼近真實(shí)值y。
4.1?擬合殘差
使F[i](x)逼近真實(shí)值类垫,其實(shí)就是使h[i](x)逼近真實(shí)值和上一輪迭代的預(yù)測(cè)值F[i-1](x)之差司光,即殘差(y-F[i-1](x))。最直接的做法是構(gòu)建基模型來(lái)擬合殘差悉患,在博文《GBDT(MART) 迭代決策樹(shù)入門(mén)教程 | 簡(jiǎn)介》中残家,作者舉了一個(gè)生動(dòng)的例子來(lái)說(shuō)明通過(guò)基模型擬合殘差,最終達(dá)到整體模型F(x)逼近真實(shí)值购撼。
研究者發(fā)現(xiàn)跪削,殘差其實(shí)是最小均方損失函數(shù)的關(guān)于預(yù)測(cè)值的反向梯度:
也就是說(shuō),若F[i-1](x)加上擬合了反向梯度的h[i](x)得到F[i](x)迂求,該值可能將導(dǎo)致平方差損失函數(shù)降低碾盐,預(yù)測(cè)的準(zhǔn)確度提高!這顯然不是巧合揩局,但是研究者們野心更大毫玖,希望能夠創(chuàng)造出一種對(duì)任意損失函數(shù)都可行的訓(xùn)練方法,那么僅僅擬合殘差是不恰當(dāng)?shù)牧恕?/p>
4.2 擬合反向梯度
4.2.1 契機(jī):引入任意損失函數(shù)
引入任意損失函數(shù)后,我們可以定義整體模型的迭代式如下:
在這里付枫,損失函數(shù)被定義為泛函烹玉。
4.2.2 難題一:任意損失函數(shù)的最優(yōu)化
對(duì)任意損失函數(shù)(且是泛函)的最優(yōu)化是困難的。我們需要打破思維的枷鎖阐滩,將整體損失函數(shù)L'定義為n元普通函數(shù)(n為樣本容量)二打,損失函數(shù)L定義為2元普通函數(shù)(記住5嗬啤<绦А!這里的損失函數(shù)不再是泛函W盎瘛H鹦拧!):
我們不妨使用梯度最速下降法來(lái)解決整體損失函數(shù)L'最小化的問(wèn)題穴豫,先求整體損失函數(shù)的反向梯度:
假設(shè)已知樣本x的當(dāng)前預(yù)測(cè)值為F[i-1](x)凡简,下一步將預(yù)測(cè)值按照反向梯度,依照步長(zhǎng)為r[i]精肃,進(jìn)行更新:
步長(zhǎng)r[i]不是固定值秤涩,而是設(shè)計(jì)為:
4.2.3 難題二:無(wú)法對(duì)測(cè)試樣本計(jì)算反向梯度
問(wèn)題又來(lái)了,由于測(cè)試樣本中y是未知的司抱,所以無(wú)法求反向梯度溉仑。這正是Gradient Boosting框架中的基模型閃亮登場(chǎng)的時(shí)刻!在第i輪迭代中状植,我們創(chuàng)建訓(xùn)練集如下:
也就是說(shuō)浊竟,讓基模型擬合反向梯度函數(shù),這樣我們就可以做到只輸入x這一個(gè)參數(shù)津畸,就可求出其對(duì)應(yīng)的反向梯度了(當(dāng)然振定,通過(guò)基模型預(yù)測(cè)出來(lái)的反向梯度并不是準(zhǔn)確的,這也提供了泛化整體模型的機(jī)會(huì))肉拓。
綜上后频,假設(shè)第i輪迭代中,根據(jù)新訓(xùn)練集訓(xùn)練出來(lái)的基模型為f[i](x)暖途,那么最終的迭代公式為:
4.3 常見(jiàn)的損失函數(shù)
ls:最小均方回歸中用到的損失函數(shù)卑惜。在之前我們已經(jīng)談到,從擬合殘差的角度來(lái)說(shuō)驻售,殘差即是該損失函數(shù)的反向梯度值(所以又稱反向梯度為偽殘差)露久。不同的是,從擬合殘差的角度來(lái)說(shuō)欺栗,步長(zhǎng)是無(wú)意義的毫痕。該損失函數(shù)是sklearn中Gradient Tree Boosting回歸模型默認(rèn)的損失函數(shù)征峦。
deviance:邏輯回歸中用到的損失函數(shù)。熟悉邏輯回歸的讀者肯定還記得消请,邏輯回歸本質(zhì)是求極大似然解栏笆,其認(rèn)為樣本服從幾何分布,樣本屬于某類別的概率可以logistic函數(shù)表達(dá)臊泰。所以蛉加,如果該損失函數(shù)可用在多類別的分類問(wèn)題上,故其是sklearn中Gradient Tree Boosting分類模型默認(rèn)的損失函數(shù)缸逃。
exponential:指數(shù)損失函數(shù)七婴,表達(dá)式為:
對(duì)該損失函數(shù)求反向梯度得:
這時(shí),在第i輪迭代中察滑,新訓(xùn)練集如下:
腦袋里有什么東西浮出水面了吧?讓我們看看Adaboost算法中修肠,第i輪迭代中第j個(gè)樣本權(quán)值的更新公式:
樣本的權(quán)值什么時(shí)候會(huì)用到呢贺辰?計(jì)算第i輪損失函數(shù)的時(shí)候會(huì)用到:
讓我們?cè)倩剡^(guò)頭來(lái),看看使用指數(shù)損失函數(shù)的Gradient Boosting計(jì)算第i輪損失函數(shù):
天吶嵌施,兩個(gè)公式就差了一個(gè)對(duì)權(quán)值的歸一項(xiàng)饲化。這并不是巧合,當(dāng)損失函數(shù)是指數(shù)損失時(shí)吗伤,Gradient Boosting相當(dāng)于二分類的Adaboost算法吃靠。是的,指數(shù)損失僅能用于二分類的情況足淆。
4.4 步子太大容易扯著蛋:縮減
縮減也是一個(gè)相對(duì)顯見(jiàn)的概念巢块,也就是說(shuō)使用Gradient Boosting時(shí),每次學(xué)習(xí)的步長(zhǎng)縮減一點(diǎn)巧号。這有什么好處呢族奢?縮減思想認(rèn)為每次走一小步,多走幾次丹鸿,更容易逼近真實(shí)值越走。如果步子邁大了,使用最速下降法時(shí)靠欢,容易邁過(guò)最優(yōu)點(diǎn)廊敌。將縮減代入迭代公式:
縮減需要配合基模型數(shù)一起使用,當(dāng)縮減率v降低時(shí)门怪,基模型數(shù)要配合增大骡澈,這樣才能提高模型的準(zhǔn)確度。
4.5 初始模型
還有一個(gè)不那么起眼的問(wèn)題掷空,初始模型F[0](x)是什么呢秧廉?如果沒(méi)有定義初始模型伞广,整體模型的迭代式一刻都無(wú)法進(jìn)行!所以疼电,我們定義初始模型為:
根據(jù)上式可知嚼锄,對(duì)于不同的損失函數(shù)來(lái)說(shuō),初始模型也是不一樣的蔽豺。對(duì)所有的樣本來(lái)說(shuō)区丑,根據(jù)初始模型預(yù)測(cè)出來(lái)的值都一樣。
4.6 Gradient Tree Boosting
終于到了備受歡迎的Gradient Tree Boosting模型了修陡!但是沧侥,可講的卻已經(jīng)不多了。我們已經(jīng)知道了該模型的基模型是樹(shù)模型魄鸦,并且可以通過(guò)對(duì)特征的隨機(jī)抽樣進(jìn)一步減少整體模型的方差宴杀。我們可以在維基百科的Gradient Boosting詞條中找到其偽代碼實(shí)現(xiàn)。
4.7 小結(jié)
到此拾因,讀者應(yīng)當(dāng)很清楚Gradient Boosting中的損失函數(shù)有什么意義了旺罢。要說(shuō)偏差描述了模型在訓(xùn)練集準(zhǔn)確度,則損失函數(shù)則是描述該準(zhǔn)確度的間接量綱绢记。也就是說(shuō)扁达,模型采用不同的損失函數(shù),其訓(xùn)練過(guò)程會(huì)朝著不同的方向進(jìn)行蠢熄!
5 總結(jié)
磨刀不誤砍柴功跪解,我們花了這么多時(shí)間來(lái)學(xué)習(xí)必要的理論,我強(qiáng)調(diào)一次:必要的理論签孔!集成學(xué)習(xí)模型的調(diào)參工作的核心就是找到合適的參數(shù)叉讥,能夠使整體模型在訓(xùn)練集上的準(zhǔn)確度和防止過(guò)擬合的能力達(dá)到協(xié)調(diào),從而達(dá)到在樣本總體上的最佳準(zhǔn)確度饥追。有了本文的理論知識(shí)鋪墊节吮,在下篇中,我們將對(duì)Random Forest和Gradient Tree Boosting中的每個(gè)參數(shù)進(jìn)行詳細(xì)闡述判耕,同時(shí)也有一些小試驗(yàn)證明我們的結(jié)論透绩。
6 參考資料
2壁熄、《為什么說(shuō)bagging是減少variance帚豪,而boosting是減少bias?》
3、《GBDT(MART) 迭代決策樹(shù)入門(mén)教程 | 簡(jiǎn)介》
6、《logistic regression(二分類昌执、多分類)》
7烛亦、《Adaboost與指數(shù)損失》