Ensemble的簡(jiǎn)易原理
Ensemble就是一種一次性結(jié)合多種機(jī)器學(xué)習(xí)模型,以提高機(jī)器學(xué)習(xí)結(jié)果的方法-
Ensemble的過程
為了處理Ensemble中遇到的不同問題抡医,Ensemble有很多中不同的方法
-
<方法1>Ensemble的Bagging方法(Bagging := Bootstrap aggregation)用于多個(gè)復(fù)雜模型/容易o(hù)verfitting模型/low bias high variance模型的融合以及降低variance
(1)Bagging的動(dòng)機(jī): 我們知道丘逸,對(duì)于一個(gè)機(jī)器學(xué)習(xí)模型犁功,如果提高其模型的復(fù)雜性(比如:線性模型把input feature增加)囚霸,那么這個(gè)模型的bias是會(huì)不斷地降低的瞧省,可是此時(shí)variance同時(shí)又會(huì)開始不斷增加硼一,所以綜合起來累澡,復(fù)雜的模型是有可能overfitting的(overfitting的一個(gè)統(tǒng)計(jì)學(xué)體現(xiàn)就是:小的bias 和 大的 variance)。 但是般贼,學(xué)界給出了一個(gè)使用混合模型減小復(fù)雜模variance的方法愧哟,也就是bagging。
Bias,variance和整體預(yù)測(cè)水平間的關(guān)系圖
混合模型以減少?gòu)?fù)雜模型產(chǎn)生的variance的方法 Bagging的步驟:
假設(shè)訓(xùn)練數(shù)據(jù)集大小為N哼蛆。
1.為了使用bagging訓(xùn)練模型蕊梧,每次訓(xùn)練一個(gè)模型時(shí),從數(shù)據(jù)集中有放回的抽取M個(gè)樣本(通常設(shè)M = N)人芽。
- 然后我們就根據(jù)步驟1望几,訓(xùn)練T個(gè)機(jī)器學(xué)習(xí)模型(這里的機(jī)器學(xué)習(xí)模型可以是不一樣的,比如可以是linear regression, svm, decision tree等)萤厅。
3.訓(xùn)練好T個(gè)機(jī)器學(xué)習(xí)模型以后橄抹。當(dāng)每次要處理test集的時(shí)候靴迫, 對(duì)于每個(gè)test集,都讓T個(gè)機(jī)器學(xué)習(xí)模型分別做一下結(jié)果楼誓,然后再把所有的結(jié)果進(jìn)行 avg(當(dāng)任務(wù)是預(yù)測(cè)時(shí))/ voting(當(dāng)任務(wù)是分類時(shí))玉锌。
-
4.最后,根據(jù)avg/voting的結(jié)果疟羹,當(dāng)作test集的結(jié)果就行主守。
Decision Tree的intuition
- Decision Tree是一個(gè)非線性分類器
-
Decision Tree會(huì)通過tree node把整個(gè)解空間分割成一小塊一小塊,然后每個(gè)小塊就代表著不同的結(jié)果榄融。
Random Forest (注意:因?yàn)锽agging是用來通過降多個(gè)high variance的復(fù)雜模型的方法参淫。所以,如果你手頭有幾個(gè)underfitting的模型愧杯,那么即使做了Bagging涎才,也不會(huì)提高fit的程度,只會(huì)導(dǎo)致最后的結(jié)果還是high bias & underfitting力九。所以耍铜,Random Forest在當(dāng)前你的Decision Tree還不能很好地fit數(shù)據(jù)集的時(shí)候,那是沒有提升作用的跌前!)
主要思想:Random Forest就是把很多Decision Tree模型做Bagging得到的棕兼。
Random Forest的難點(diǎn)(1):就是對(duì)一組數(shù)據(jù)集做Bagging的Decision Tree時(shí),那個(gè)數(shù)據(jù)集的隨機(jī)選取抵乓,和特征選取是關(guān)鍵伴挚,比較難。如果直接給每個(gè)Decision Tree分配不同的數(shù)據(jù)集臂寝,在剛好使用完數(shù)據(jù)集中的所有數(shù)據(jù)以后章鲤,事實(shí)上,我們這樣得到的多個(gè)Decision Tree的訓(xùn)練結(jié)果會(huì)趨同,這樣的話咆贬,即使在對(duì)這些Decision Tree做Bagging,那么結(jié)果也不會(huì)得到明顯地提高帚呼。
為了解決Decision Tree訓(xùn)練趨同這個(gè)Random Forest的難點(diǎn):我們可以人為的在每個(gè)Decision Tree的訓(xùn)練過程中掏缎,隨機(jī)允許數(shù)據(jù)集的一部分特征參與Decision Tree的訓(xùn)練,而不是讓每個(gè)模型訓(xùn)練時(shí)都使用到數(shù)據(jù)集的所有特征煤杀。
Random Forest的難點(diǎn)(2):因?yàn)榫祢冢瑀andom forest使用了Bagging技術(shù),所以整個(gè)數(shù)據(jù)集被很多個(gè)模型同時(shí)用沈自,所以酌儒,如何合理地設(shè)計(jì)數(shù)據(jù)集的使用過程,以及利用數(shù)據(jù)集在訓(xùn)練完模型后還可以進(jìn)行交叉驗(yàn)證枯途。
解決Random Forest的Cross Validation的方法:我們使用一種Out-Of_Bag的cross validation技術(shù)忌怎。
1.為每個(gè)Decision Tree均勻地分配訓(xùn)練數(shù)據(jù)籍滴。
2.然后,根據(jù)不同組合(如這里的f2和f4),使用沒用分配給f2和f4的訓(xùn)練數(shù)據(jù)作為test數(shù)據(jù)榴啸,進(jìn)行cross validation孽惰。
-
3.最后,把所有的Out-Of-Bag的結(jié)果綜合起來鸥印,記作OOB error勋功。
Out-Of-Bag validation <方法二>.Ensemble的Boosting方法(Boosting很好記,就是一種和Bagging相反的方法库说,當(dāng)我們使用Boosting的時(shí)候狂鞋,是應(yīng)該想要將對(duì)數(shù)據(jù)集fitting不是很好的模型變得更加的fit,也就是說Boosting是用作提升模型的fit程度,降低模型的Bias值的Ensemble方法)
Boosting的優(yōu)勢(shì):Boosting承諾潜的,只要你當(dāng)前的模型的測(cè)試正確率比亂猜好一點(diǎn)(如:二分類要销,測(cè)試正確率比50%高一點(diǎn)),Boosting就有能力把正確率提升至百分之百夏块。
-
Boosting的主要步驟: (注意:在訓(xùn)練Boosting中的多個(gè)模型時(shí)疏咐,需要按順序訓(xùn)練,先訓(xùn)練模型1脐供,然后是模型2浑塞,然后是模型3...)
知道Boosting需要訓(xùn)練多個(gè)不同的模型(比如:多個(gè)不同的classifier),那么,如何分配訓(xùn)練集,才能做到政己,在同一個(gè)大的訓(xùn)練集下面訓(xùn)練出多個(gè)不同的模型酌壕?:
- 1.需要使用同一個(gè)大的訓(xùn)練集,訓(xùn)練出多個(gè)不同的模型的基本思路就是歇由,把訓(xùn)練數(shù)據(jù)集做一個(gè)分割卵牍,然后把子訓(xùn)練集喂給多個(gè)模型去訓(xùn)練,這樣就是叫做: Re-sampling沦泌。
- 2.Resampling的缺點(diǎn): Re-sampling作為讓一個(gè)數(shù)據(jù)集訓(xùn)練出多個(gè)不同模型的一種簡(jiǎn)單方法糊昙,是很直接有效的。但是谢谦,Re-sampling有分割數(shù)據(jù)集的粒度太粗的缺點(diǎn)释牺。也就是說,在re-sampling數(shù)據(jù)集的時(shí)候回挽,對(duì)于數(shù)據(jù)集中的一個(gè)數(shù)據(jù)没咙,只能完整地喂給某個(gè)模型,而不能說千劈,分0.5個(gè)數(shù)據(jù)集給模型1祭刚。。。
- 3.Re-Weighting解決細(xì)粒度分割數(shù)據(jù)集的問題:
此時(shí)涡驮,我們給數(shù)據(jù)集中的每一對(duì)數(shù)據(jù)都分配一個(gè)weight值ui暗甥,這樣一來,我們就可以從定義權(quán)重的角度遮怜,細(xì)粒度淋袖,連續(xù)地分割數(shù)據(jù)集給多個(gè)模型了。(值得注意的是锯梁,在進(jìn)行Re-weighting的時(shí)候即碗,其主要目的就是對(duì)模型的objective function(or called loss function)進(jìn)行一番修改,也就是在計(jì)算每單筆loss的時(shí)候陌凳,系數(shù)上面要帶上本條數(shù)據(jù)的weight值)
Boosting的一種算法:AdaBoost
-
計(jì)算d1的數(shù)學(xué)步驟:
-
更詳細(xì)的