筆記 Stacking方法

2022-06-07 01:06:12 字數 1368 閱讀 7731

先前學習的整合學習

先前的思路很簡單,假設有三個演算法,每個演算法都對資料進行乙個**,最後綜合這三個結果得出乙個最終結果,對於分類問題可以進行少數服從多數,對於回歸問題可以簡單地取平均值

stacking是另一種思路,對於stacking這個方法來說,假設有三個演算法,首先求出這三個演算法對於這個資料的**結果,但是不直接使用這三個**結果進行綜合來得到最終結果,將這三個**結果作為輸入,再新增進一層演算法,也就是說,以這三個結果作為輸入,再訓練出乙個新的模型,然後用這個新的模型的輸出作為最終的結果

這個方法可以解決回歸問題也可以解決分類問題,只要三個演算法得出的三個模型,其**的結果是輸入資料是某一類的概率就可以了,將這三個模型**的某一類的概率值作為第四個模型的輸入,最後得到乙個總的新的樣本是某一類的概率,使用這個概率再進行分類

實際上分類問題和回歸問題可以以**這個樣本在哪個類別中的概率這個數值作為連線,就可以很輕鬆的將分類問題轉換成回歸問題或者是將回歸問題轉換成分類問題

明白了stacking是什麼以後,看一下如何訓練出乙個stacking的分類器,思路本身是很簡單的

要做的事情就是首先將訓練資料集分成兩份,對於其中的乙份,使用這乙份資料集訓練出三個模型,第二份的意義是訓練第四份模型

也就是說,首先使用第乙份資料通過三個演算法訓練出三個模型,訓練好以後將第二份資料直接丟進訓練好的三個模型中,相應的,訓練好的三個模型也就有了輸出結果,這些新的輸出結果和第二份的資料裡相應的真值輸出就形成了乙個新的資料集,然後用這個新的資料集來訓練第四個模型,最終形成stacking的整合訓練模型

在了解構成以及思路以後就可以構建出更複雜的模型,使用三層的模型,第一層有三個模型,相應的可以得到三個輸出,將這三個輸入作為輸入可以再分別訓練出三個模型作為第二層的模型,這三個模型以第一層的輸出作為輸入,又可以得到三個輸出結果,然後再使用這三個輸出作為第三層這乙個模型的輸入,然後使用第三層模型得到的結果作為整個stacking模型的最終結果

按照上面的思路的話,如果要訓練上面的stacking模型的話,就要將訓練資料集分成三份,第乙份用來訓練第一層的三個模型,第二份用來訓練第二層的三個模型,第三份就用來訓練第三層的乙個模型

所以對於stacking來說,層數是乙個超引數,每一層的模型數也是乙個超引數,因此stacking模型具有很高的複雜性,也正是如此,這個模型是很容易過擬合的

可以發現,stacking這種組建方式是很像神經網路的

模型融合之stacking方法

之前一直對stacking一知半解,找到的資料也介紹的很模糊。所以有多看了幾篇文章,然後來此寫篇部落格,加深一下印象,順便給各位朋友分享一下。stacking的過程有一張圖非常經典,如下 雖然他很直觀,但是沒有語言描述確實很難搞懂。上半部分是用乙個基礎模型進行5折交叉驗證,如 用xgboost作為基...

整合學習 stacking

參考文獻 stacking具體的演算法流程 以上圖為例,我們現在有訓練集train x,train y,測試集test 我們首先選擇一種模型比如隨機森林rf。未經訓練 這裡假設把訓練集均分成5份,把其中四份作為小的訓練集s train x,s train y另外乙份作為小的測試集s test,測試集...

整合學習 Stacking

在整合學習中,結合策略也是影響整合模型效能的重要因素之一。傳統的結合策略有多數投票 加權平均等。stacking的本質是設計合適的結合策略,達到比傳統結合策略更優的整合效果。首先,stacking訓練一組基學習器,用以參與後續的整合構建。其次,演算法將這些學習器的輸出和期望的樣本標籤視為新的學習任務...