日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【机器学习】集成学习之stacking

發布時間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器学习】集成学习之stacking 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

stacking方法也是集成學習的一個作弊一樣的方法。

比bagging,boosting內容要少一點。

簡介

Stacking(有時候也稱之為stacked generalization)是指訓練一個模型用于組合(combine)其他各個模型。即首先我們先訓練多個不同的模型,然后再以之前訓練的各個模型的輸出為輸入來訓練一個模型,以得到一個最終的輸出。如果可以選用任意一個組合算法,那么理論上,Stacking可以表示上面提到的各種Ensemble方法。然而,實際中,我們通常使用單層logistic回歸作為組合模型。

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

?

上半部分是用一個基礎模型進行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的完整步驟!

XGB模型,把train分train1~train5,共5份,用其中4份預測剩下的那份,同時預測test數據,這樣的過程做5次,生成5份train(原train樣本數/5)數據和5份test數據。然后把5份預測的train數據縱向疊起來,把test預測的結果做平均。

RF模型和XGB模型一樣,再來一次。這樣就生成了2份train數據和2份test數據(XGB重新表達的數據和RF重新表達的數據),然后用LR模型,進一步做融合,得到最終的預測結果。

左邊部分為訓練集,右邊部分為測試集

依舊是以原來的label作為訓練的target

為什么stacking高效呢?

可以這么理解,原本的多個模型訓練的精度已經到達了一個程度,上不去了。眾所周知,模型的精度在起初的時候上升總是較快,但是越到后面上升就越慢。舉一個例子吧。有場馬拉松,有10公里,一個人跑了7公里,實在跑不動了。這個時候裁判突然說,可以接力跑,他叫了個兄弟來幫他跑,剩下但3公里跑起來就輕松多了。就是這個道理,幾個模型的精度達到了上限,從原始數據到target已經很困難了,無法在提高了,那我們就不訓練原始數據了,從上一個模型的輸出的直接去擬合target。就是這么作弊的一個東西。

個人感覺這東西容易過擬合,也有人試過多層的stacking效果不如層數少的,很大的可能性就是過擬合了。

參考:https://blog.csdn.net/willduan1/article/details/73618677/

https://blog.csdn.net/wstcjf/article/details/77989963

https://blog.csdn.net/qq_18916311/article/details/78557722

總結

以上是生活随笔為你收集整理的【机器学习】集成学习之stacking的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。