Stacking
經(jīng)典Stacking模型是指將多種分類器組合在一起來取得更好表現(xiàn)的一種集成學(xué)習(xí)模型。一般情況下,Stacking模型分為兩層。第一層中我們訓(xùn)練多個(gè)不同的模型,然后再以第一層訓(xùn)練的各個(gè)模型的輸出作為輸入來訓(xùn)練第二層的模型,以得到一個(gè)最終的輸出。為了更加詳細(xì)的闡述stacking模型的訓(xùn)練和預(yù)測(cè)過程,我們用下面的圖作為示例。
?
首先,我們從stacking模型的訓(xùn)練開始闡述。在上圖中我們可以看到,該模型的第一層有五個(gè)分類模型,第二層有一個(gè)分類模型。在第一層中,對(duì)于不同的分類模型,我們分別將訓(xùn)練數(shù)據(jù)分為 5 份,接下來迭代5次。每次迭代時(shí),將 4 份數(shù)據(jù)作為訓(xùn)練集對(duì)每個(gè)分類模型進(jìn)行訓(xùn)練,然后剩下一份數(shù)據(jù)在訓(xùn)練好的分類模型上進(jìn)行預(yù)測(cè)并且保留結(jié)果。當(dāng)5次迭代都完成以后,我們就獲得了一個(gè)結(jié)果矩陣。該矩陣是一個(gè)N*1的矩陣,N是訓(xùn)練集的樣本數(shù)。當(dāng)5個(gè)模型都進(jìn)行完上述操作后,我們就可以得到一個(gè)N*5的結(jié)果矩陣。然后將該矩陣導(dǎo)入到第二層的模型6中進(jìn)行訓(xùn)練,此時(shí)全部模型訓(xùn)練完畢。接下來是stacking模型的預(yù)測(cè)過程。
接下來我們開始闡述該模型的預(yù)測(cè)過程。在第一層中,對(duì)于不同分類模型,我們還是使用在訓(xùn)練時(shí)分成的5份訓(xùn)練數(shù)據(jù)進(jìn)行五次迭代。每次迭代時(shí),我們利用訓(xùn)練后的分類模型對(duì)預(yù)測(cè)集進(jìn)行預(yù)測(cè)并保留下來。當(dāng)5次迭代都完成以后,我們可以得到一個(gè)M*5的矩陣,M是預(yù)測(cè)集的樣本數(shù)。 我們將這個(gè)矩陣按列取平均,縮減成M*1的矩陣。當(dāng)5個(gè)模型都進(jìn)行完上述操作后,我們就可以得到一個(gè)M*5的結(jié)果矩陣。然后將該矩陣導(dǎo)入到第二層中訓(xùn)練好的模型6進(jìn)行預(yù)測(cè),就可以得到最終的預(yù)測(cè)結(jié)果。
在介紹完經(jīng)典stacking模型的訓(xùn)練及預(yù)測(cè)過程后,接下來闡述我們自己的stacking模型構(gòu)建和改進(jìn)。
?
在預(yù)測(cè)過程中,流程和訓(xùn)練過程相似,只是改成了用預(yù)測(cè)集在訓(xùn)練好的分類模型上進(jìn)行預(yù)測(cè)。我們注意到,在Stacking模型中,由于在第一層的預(yù)測(cè)過程也需要使用第一層時(shí)的數(shù)據(jù)劃分,所以一般Stacking模型的運(yùn)行順序是:
1.?第一層訓(xùn)練
2.?第一層預(yù)測(cè)
3.?第二層訓(xùn)練
4.?第二層預(yù)測(cè)
至此,我們改進(jìn)后的stacking模型介紹完畢。
下面談一下自己使用過程中的感受吧。
1.?在sklearn中也是有集成模型的。但是他只有boosting和bagging的集成模型代碼。可能還是因?yàn)閟tacking模型的靈活性太高了。
2.?我們?cè)诘谝粚拥哪P瓦x擇上,主要是考慮到了速度問題,所以選取的都是一些線性分類器和速度比較快的線性核svm等。第二層我們使用的是rbf核SVM。但是在第二層的特征數(shù)由于加入了詞向量特征而變大后,第二層的訓(xùn)練預(yù)測(cè)時(shí)間變得很長(zhǎng)。所以SVM好,但是使用需謹(jǐn)慎。
3.?對(duì)于xgboost模型,我們?cè)诤蛃vm比較后,發(fā)現(xiàn)比不過svm分類器。同時(shí)xgboost的調(diào)參也是一個(gè)蠻長(zhǎng)的貪心過程。所以我們沒有使用xgboost。但是在答辯中,前幾名的大神在集成模型上幾乎都用到了xgboost。這也說明xgboost的效果還是非常好的。
4.?stacking模型理論上可以擴(kuò)大到無數(shù)層。但是在答辯過程中,發(fā)現(xiàn)大家都是只使用了兩層,同時(shí)我們也實(shí)驗(yàn)了搭出三層的stacking,效果也不如兩層的。
5.?在一開始的時(shí)候,我們只在第一層中放入了四個(gè)分類器,但是受到了一些博客的影響,我們開始嘗試加入更多的分類器。第一種是不同類型的分類器,但是更多的是同類型,但是不同參數(shù)下的分類器。我們發(fā)現(xiàn),分類器越多時(shí),最終效果更好。但是隨著分類器的增多,效果提升的越來越少。
?
總結(jié)