轉(zhuǎn)自:https://www.cnblogs.com/wxquare/p/5440664.html有刪改
姓名:梁祥????????學(xué)號:17021210935
【嵌牛導(dǎo)讀】:泛化能力是機器學(xué)習(xí)關(guān)注的一個根本問題捻脖,其表征了學(xué)習(xí)系統(tǒng)對新事件的適用性戴涝,一般來說泛化能力越強越好。集成方法是構(gòu)建一種對單個分類器進(jìn)行集成的學(xué)習(xí)算法,將各分類器的分類結(jié)果以一定的方式集成起來實現(xiàn)對新數(shù)據(jù)點的分類蚕涤。其中,單個分類器是獨立的且不要求分類精度很高土陪。通過這種方式春寿,大大提高了集成系統(tǒng)的泛化性能。
【嵌牛鼻子】:集成學(xué)習(xí)剖毯,Bagging圾笨,Boosting?
【嵌牛提問】:集成學(xué)習(xí)算法主要有哪些分類?使用的時候應(yīng)該注意些什么逊谋?
【嵌牛正文】:
集成學(xué)習(xí)(Ensemble Learning)是一種機器學(xué)習(xí)范式擂达,它使用多個(通常是同質(zhì)的)學(xué)習(xí)器來解決同一個問題。它的思想非常簡單胶滋,集合多個模型的能力板鬓,達(dá)到“三個臭皮匠,賽過諸葛亮”的效果究恤。
這里我把集成學(xué)習(xí)分為兩個大類俭令,第一大類稱為模型融合,模型融合其實是個再學(xué)習(xí)的過程部宿。第一步是訓(xùn)練出多個不同的強學(xué)習(xí)器抄腔,然后考慮如何將這多個學(xué)習(xí)器組合起來,更進(jìn)一步提高性能理张。第二大類稱為機器學(xué)習(xí)元算法赫蛇,這類算法本身就是多模型組合的結(jié)果,只是元算法中的基算法(base_algorithm一般會比較弱)雾叭,稱為弱模型的組合悟耘,例如RF、GDBT织狐。
一暂幼、模型融合
實際中筏勒,我們總可以根據(jù)實際問題,訓(xùn)練出多個功能強大學(xué)習(xí)器旺嬉,為了進(jìn)一步提高學(xué)習(xí)器的能力管行,可以嘗試將這些學(xué)習(xí)組合起來,這個過程就是模型融合鹰服。一般來說模型能在一定程度上提高性能病瞳,有時使模型的預(yù)測能力更加強大,有時增加模型的泛化能力悲酷,顯而易見的壞處是多模型的學(xué)習(xí)加上再學(xué)習(xí)的過程會增加計算的代價。模型融合在競賽中十分常見设易,屢試不爽逗柴,融合方法恰當(dāng)顿肺,一般能提高成績戏溺。
1.1 常用的獲得不同模型的方法
a. 由于不同的訓(xùn)練模型得到不同的模型,例如處理分類的LR屠尊、SVM旷祸、RF等
b. 由于同一訓(xùn)練模型調(diào)節(jié)不同參數(shù)獲得不同的模型,例如GDBT中迭代次數(shù)讼昆,每個樹的復(fù)雜度等
c. 有些算法本身就有一定的隨機性托享,如PLA
d. 由于訓(xùn)練數(shù)據(jù)不同得到不同的模型,如交叉驗證浸赫、隨機抽樣
闰围。。既峡。上面這些生成不同模型可以組合生成更多不同的模型羡榴,比較常用的是最前面的兩個
1.2 模型融合的方法
通過驗證(validation)的方式,從第一步中訓(xùn)練出的多個模型中挑選最佳的模型运敢,作為最終的模型校仑。這種方式必須要驗證,不同使Ein最小传惠,否則很容易過擬合肤视。
統(tǒng)一融合(Uniform blending),分類時使用一人一票的投票方式涉枫,回歸時使用多個模型的平均值。這種方式的優(yōu)點是一般泛化能力會得到加強腐螟,但是只能保證比那些模型中最差的模型要好愿汰,不能保證能得到比那些不同模型中的最好的模型要好
線性融合(Linear blending)困后,二次學(xué)習(xí),使用線性模型將第一步中學(xué)習(xí)到的學(xué)習(xí)器組合起來衬廷,用得好可以提高模型性能摇予,但是要注意有過擬合的風(fēng)險。
堆融合(Any blending吗跋、stacking)侧戴,任何其它非線性模型將那些學(xué)習(xí)器組合起來,有過擬合的風(fēng)險跌宛,注意驗證酗宋。
模型融合在實際中十分常見,下面是臺大在2011KDDCup獲得冠軍時使用的模型融合方法疆拘,先用了any blending (stacking)處于領(lǐng)先群的位置蜕猫,最后的linear blend使得臺大獲得冠軍。
二哎迄、機器學(xué)習(xí)元算法
機器學(xué)習(xí)元算法分為兩類:Averaging methods 和Boosting methods
Averaging methods 核心是引入隨機(對樣本回右、特征屬性隨機取樣)學(xué)習(xí)產(chǎn)生多個獨立的模型,然后平均所有模型的預(yù)測值漱挚。一般而言翔烁,這種方法,會減小方差(variance)旨涝,不太會過擬合蹬屹。主要包括bagging、RF颊糜。
Boosting methods 逐步加強方法哩治,該方法集合學(xué)習(xí)多個模型,提高模型的準(zhǔn)確率衬鱼。不同的是业筏,它是基于前面模型的訓(xùn)練結(jié)果(誤差),生成新的模型鸟赫,從而減小偏差(bias)蒜胖。一般而言,這種方法會比上者的準(zhǔn)確率高一點抛蚤,但是也不是絕對的台谢。它的缺點是有過擬合的風(fēng)險,另外岁经,由于它每個模型是“序列化”(有前后關(guān)系)產(chǎn)生的朋沮,不易并行化。它的代表是AdaBoost缀壤、GDBT樊拓。
2.1 Bagging
Bagging 在原始樣本中隨機抽樣獲取子集纠亚,用隨機抽樣的子集訓(xùn)練基學(xué)習(xí)器(base_estimator),然后對每個基學(xué)習(xí)器的結(jié)果求平均筋夏,最終得到的預(yù)測值蒂胞。隨機獲取樣本子集的方法有很多中,最常用的是有放回抽樣的booststrap条篷,也可以是不放回的抽樣骗随。基學(xué)習(xí)器可以是相同的模型赴叹,也可以是不同的鸿染,一般使用的是同一種基學(xué)習(xí)器,最常用的是DT決策樹稚瘾。由于bagging提供了一種降低方差(variance)的方式牡昆,所以一般會使用比較強、復(fù)雜的基學(xué)習(xí)器模型(e.g.fully developed decision trees)摊欠,作為對比在boosting方法中會使用非常弱的基學(xué)習(xí)器模型(e.g. shallow decision trees)丢烘。在sklearn中實現(xiàn)了基于bagging的分類和回歸方法,主要設(shè)置參數(shù)為基學(xué)習(xí)器的類型些椒、迭代次數(shù)(子模型的個數(shù))播瞳、獲取訓(xùn)練子集的方式。由于bagging訓(xùn)練每個模型可以并行免糕,還可以設(shè)置n_jobs訓(xùn)練模型使用的多少個cpu核赢乓。
2.2 隨機森林(RF)
RF在實際中使用非常頻繁,其本質(zhì)上可bagging并無不同石窑,只是RF更具體一些牌芋。一般而言可以將RF理解為bagging和DT(CART)的結(jié)合。RF中基學(xué)習(xí)器使用的是CART樹松逊,由于算法本身能降低方差(variance)躺屁,所以會選擇完全生長的CART樹。抽樣方法使用bootstrap经宏,除此之外犀暑,RF認(rèn)為隨機程度越高,算法的效果越好烁兰。所以RF中還經(jīng)常隨機選取樣本的特征屬性耐亏、甚至于將樣本的特征屬性通過映射矩陣映射到隨機的子空間來增大子模型的隨機性、多樣性沪斟。RF預(yù)測的結(jié)果為子樹結(jié)果的平均值广辰。RF具有很好的降噪性,相比單棵的CART樹,RF模型邊界更加平滑择吊,置信區(qū)間也比較大袱耽。一般而言,RF中干发,樹越多模型越穩(wěn)定。
2.3 AdaBoost
AdaBoost 是一種Boosting方法史翘,與Bagging不同的是枉长,Adaboost中不同的子模型必須是串行訓(xùn)練獲得的,每個新的子模型都是根據(jù)已訓(xùn)練出的模型性能來進(jìn)行訓(xùn)練的琼讽,而且Boosting算法中基學(xué)習(xí)器為弱學(xué)習(xí)必峰。弱學(xué)習(xí)器可以理解為只比隨機猜測好一點,在二分類情況下钻蹬,錯誤率略低0.5即可吼蚁,實際中常使用 small decision trees。AdaBoost中每個訓(xùn)練樣本都有一個權(quán)重问欠,這些權(quán)重構(gòu)成了一個向量W肝匆,初始值都為為W_i=1/N。Adaboost中每次迭代生成新的子模型使用的訓(xùn)練數(shù)據(jù)都相同顺献,但是樣本的權(quán)重會不一樣旗国。AdaBoost會根據(jù)當(dāng)前的錯誤率,增大錯誤樣本權(quán)重注整,減小正確樣本權(quán)重的原則更新每個樣本的權(quán)重能曾。不斷重復(fù)訓(xùn)練和調(diào)整權(quán)重,直到訓(xùn)練錯誤率或弱學(xué)習(xí)器的個數(shù)滿足用戶指定的值為止肿轨。Adaboost的最終結(jié)果為每個弱學(xué)習(xí)器加權(quán)的結(jié)果寿冕。使用sklearn中的Adaboot時,主要調(diào)節(jié)的參數(shù)有n_estimator(多少棵樹)椒袍、max_depth(每棵樹的深度驼唱。復(fù)雜度)或者min_samples_leaf(最少的葉子節(jié)點)。
2.4 GDBT
GDBT也是一種Boosting方法槐沼,每個子模型是根據(jù)已訓(xùn)練出的學(xué)習(xí)器的性能(殘差)訓(xùn)練出來的曙蒸,子模型是串行訓(xùn)練獲得,不易并行化岗钩。GDBT使用非常廣泛的纽窟,能分類,能回歸預(yù)測兼吓。GDBT基于殘差學(xué)習(xí)的算臂港,沒有AdaBoost中的樣本權(quán)重的概念。GDBT結(jié)合了梯度迭代和回歸樹,準(zhǔn)確率非常高审孽,但是也有過擬合的風(fēng)險县袱。GDBT中迭代的殘差的梯度,殘差就是目前結(jié)合所有得到的訓(xùn)練器預(yù)測的結(jié)果與實際值的差值佑力,不理解可以參考另一篇博客式散,里面有一個實例介紹如何基于殘差來學(xué)習(xí)預(yù)測人的年齡。GDBT的使用也非常的簡單打颤,主要調(diào)節(jié)的參數(shù)有確定需要多少棵樹(n_estimator)暴拄、每棵樹的復(fù)雜度(max_depth,max_leaf_node)编饺、損失函數(shù)(loss)以及學(xué)習(xí)率(learning_rating)乖篷。為了防止過擬合一般學(xué)習(xí)率會選小一點的(<0.1),learning_rate會影響n_estimator透且,需要權(quán)衡撕蔼,選擇最佳的組合參數(shù)。