模型融合stacking原理
一.Stacking思想簡介
1.Stacking的思想是一種有層次的融合模型,比如我們將用不同特征訓(xùn)練出來的三個GBDT模型進行融合時,我們會將三個GBDT作為基層模型,在其上在訓(xùn)練一個次學(xué)習器(通常為線性模型LR),用于組織利用基學(xué)習器的答案,也就是將基層模型的答案作為輸入,讓次學(xué)習器學(xué)習組織給基層模型的答案分配權(quán)重。
2.下圖是個簡單的例子,A、B是學(xué)習器,C、D、E是進行答案再組織的次學(xué)習器,次學(xué)習器會組織利用底層模型提供的答案。
二.Stacking過程解讀
? ? ? ?Stacking的主要思想是訓(xùn)練模型來學(xué)習使用底層學(xué)習器的預(yù)測結(jié)果,下圖是一個5折stacking中基模型在所有數(shù)據(jù)集上生成預(yù)測結(jié)果的過程,次學(xué)習器會基于模型的預(yù)測結(jié)果進行再訓(xùn)練,單個基模型生成預(yù)測結(jié)果的過程是: ? ? ? ? ? ?
? ? ? ? ?*首先將所有數(shù)據(jù)集生成測試集和訓(xùn)練集(假如訓(xùn)練集為10000,測試集為2500行),那么上層會進行5折交叉檢驗,使用訓(xùn)練集中的8000條作為喂養(yǎng)集,剩余2000行作為驗證集(橙色)
? ? ? ? *每次驗證相當于使用了藍色的8000條數(shù)據(jù)訓(xùn)練出一個模型,使用模型對驗證集進行驗證得到2000條數(shù)據(jù),并對測試集進行預(yù)測,得到2500條數(shù)據(jù),這樣經(jīng)過5次交叉檢驗,可以得到中間的橙色的5*2000條驗證集的結(jié)果(相當于每條數(shù)據(jù)的預(yù)測結(jié)果),5*2500條測試集的預(yù)測結(jié)果。 ? ? ? ? ? ?
? ? ? ? *接下來會將驗證集的5*2000條預(yù)測結(jié)果拼接成10000行長的矩陣,標記為A1,而對于5*2500行的測試集的預(yù)測結(jié)果進行加權(quán)平均,得到一個2500一列的矩陣,標記為B1。 ?
? ? ? ? *上面得到一個基模型在數(shù)據(jù)集上的預(yù)測結(jié)果A1、B1,這樣當我們對3個基模型進行集成的話,相于得到了A1、A2、A3、B1、B2、B3六個矩陣。
? ? ? ? *之后我們會將A1、A2、A3并列在一起成10000行3列的矩陣作為training data,B1、B2、B3合并在一起成2500行3列的矩陣作為testing ?data,讓下層學(xué)習器基于這樣的數(shù)據(jù)進行再訓(xùn)練。
? ? ? ?*再訓(xùn)練是基于每個基礎(chǔ)模型的預(yù)測結(jié)果作為特征(三個特征),次學(xué)習器會學(xué)習訓(xùn)練如果往這樣的基學(xué)習的預(yù)測結(jié)果上賦予權(quán)重w,來使得最后的預(yù)測最為準確。
以上就是Stacking的思想,進行Stacking集成同樣需要基學(xué)習器盡量保持獨立,效果相近。
三.Stacking特點
?使用stacking,組合1000多個模型,有時甚至要計算幾十個小時。但是,這些怪物般的集成方法同樣有著它的用處: ? ? ? ?
? ? ? (1)它可以幫你打敗當前學(xué)術(shù)界性能最好的算法 ? ? ? ? ?
? ? ? (2)我們有可能將集成的知識遷移到到簡單的分類器上 ? ? ? ? ?
? ? ??(3)自動化的大型集成策略可以通過添加正則項有效的對抗過擬合,而且并不需要太多的調(diào)參和特征選擇。所以從原則上講,stacking非常適合于那些“懶人” ? ? ? ?
? ? ??(4)這是目前提升機器學(xué)習效果最好的方法,或者說是最效率的方法human ensemble learning 。
四.Stacking和Blending對比
1.Blending方式和Stacking方式很類似,相比Stacking更簡單點,兩者區(qū)別是: ? ? ? ?
? ? ?*blending是直接準備好一部分10%留出集只在留出集上繼續(xù)預(yù)測,用不相交的數(shù)據(jù)訓(xùn)練不同的 Base Model,將它們的輸出取(加權(quán))平均。實現(xiàn)簡單,但對訓(xùn)練數(shù)據(jù)利用少了。 ? ? ? ? ?
2.blending 的優(yōu)點是:比stacking簡單,不會造成數(shù)據(jù)穿越(所謂數(shù)據(jù)創(chuàng)越,就比如訓(xùn)練部分數(shù)據(jù)時候用了全局的統(tǒng)計特征,導(dǎo)致模型效果過分的好),generalizers和stackers使用不同的數(shù)據(jù),可以隨時添加其他模型到blender中。 ? ? ? ? ? ? ? ?
3.缺點在于:blending只使用了一部分數(shù)據(jù)集作為留出集進行驗證,而stacking使用多折交叉驗證,比使用單一留出集更加穩(wěn)健
4.兩個方法都挺好,看偏好了,可以一部分做Blending、一部分做Stacking。 ? ? ? ?
?
?
?
轉(zhuǎn)載自: [https://blog.csdn.net/maqunfi/article/details/82220115](https://blog.csdn.net/maqunfi/article/details/82220115)總結(jié)
以上是生活随笔為你收集整理的模型融合stacking原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LAGT100型无线网关
- 下一篇: 用ChemDraw画3D图的方法