模型融合之stacking方法

2021-08-19 09:10:02 字數 1327 閱讀 2758

之前一直對stacking一知半解,找到的資料也介紹的很模糊。所以有多看了幾篇文章,然後來此寫篇部落格,加深一下印象,順便給各位朋友分享一下。

stacking的過程有一張圖非常經典,如下:

雖然他很直觀,但是沒有語言描述確實很難搞懂。

上半部分是用乙個基礎模型進行5折交叉驗證,如:用xgboost作為基礎模型model1,5折交叉驗證就是先拿出四折作為training data,另外一折作為testing data。注意:在stacking中此部分資料會用到整個traing set。如:假設我們整個training set包含10000行資料,testing set包含2500行資料,那麼每一次交叉驗證其實就是對training set進行劃分,在每一次的交叉驗證中training data將會是8000行,testing data是2000行。

每一次的交叉驗證包含兩個過程,1. 基於training data訓練模型;2. 基於training data訓練生成的模型對testing data進行**。在整個第一次的交叉驗證完成之後我們將會得到關於當前testing data的**值,這將會是乙個一維2000行的資料,記為a1。注意!在這部分操作完成後,我們還要對資料集原來的整個testing set進行**,這個過程會生成2500個**值,這部分**值將會作為下一層模型testing data的一部分,記為b1。因為我們進行的是5折交叉驗證,所以以上提及的過程將會進行五次,最終會生成針對testing set資料**的5列2000行的資料a1,a2,a3,a4,a5,對testing set的**會是5列2500行資料b1,b2,b3,b4,b5。

在完成對model1的整個步驟之後,我們可以發現a1,a2,a3,a4,a5其實就是對原來整個training set的**值,將他們拼湊起來,會形成乙個10000行一列的矩陣,記為a1。而對於b1,b2,b3,b4,b5這部分資料,我們將各部分相加取平均值,得到乙個2500行一列的矩陣,記為b1。

以上就是stacking中乙個模型的完整流程,stacking中同一層通常包含多個模型,假設還有model2: lr,model3:rf,model4: gbdt,model5:svm,對於這四個模型,我們可以重複以上的步驟,在整個流程結束之後,我們可以得到新的a2,a3,a4,a5,b2,b3,b4,b5矩陣。

在此之後,我們把a1,a2,a3,a4,a5並列合併得到乙個10000行五列的矩陣作為training data,b1,b2,b3,b4,b5並列合併得到乙個2500行五列的矩陣作為testing data。讓下一層的模型,基於他們進一步訓練。

以上即為stacking的完整步驟!

機器學習 Stacking融合模型

知乎 必讀 kaggle機器學習之模型融合 stacking 心得 mrlevo520的 blog stacking learning在分類問題中的使用 blog stacking models for improved predictions blog kaggle ensembling guid...

模型融合方法總結

即各模型結果的均值 各模型結果 權值再求和,其中權值通過交叉驗證確定,權值之和為1 適合模型結果差異比較小的情況 從特徵,引數,樣本的多樣性差異性來做多模型融合,參考隨機森林 首先將訓練集分為兩部分 d1和d2 一部分用於第一層 level 1 的訓練,另一部分用於第二層 level 2 的訓練。l...

筆記 Stacking方法

先前學習的整合學習 先前的思路很簡單,假設有三個演算法,每個演算法都對資料進行乙個 最後綜合這三個結果得出乙個最終結果,對於分類問題可以進行少數服從多數,對於回歸問題可以簡單地取平均值 stacking是另一種思路,對於stacking這個方法來說,假設有三個演算法,首先求出這三個演算法對於這個資料...