模型融合策略voting、averaging、stacking
原文:https://zhuanlan.zhihu.com/p/25836678
1.voting
對于分類問題,采用多個基礎模型,采用投票策略選擇投票最多的為最終的分類。
2.averaging
對于回歸問題,一方面采用簡單平均法,另一方面采用加權平均法,加權平均法的思路:權值可以用排序的方法確定或者根據均方誤差確定。
3.stacking
Stacking模型本質上是一種分層的結構,這里簡單起見,只分析二級Stacking。假設我們有3個基模型M1、M2、M3。下面先看一種錯誤的訓練方式:
【1】基模型M1,對訓練集train訓練,然后用于預測train和test的標簽列,分別是P1,T1(對于M2和M3,重復相同的工作,這樣也得到P2,T2,P3,T3):
【2】分別把P1,P2,P3以及T1,T2,T3合并,得到一個新的訓練集和測試集train2,test2:
【3】再用第二層的模型M4訓練train2,預測test2,得到最終的標簽列:
Stacking本質上就是這么直接的思路,但是這樣肯定是不行的,問題在于P1的得到是有問題的,用整個訓練集訓練的模型反過來去預測訓練集的標簽,過擬合是非常非常嚴重的,因此現在的問題變成了如何在解決過擬合的前提下得到P1、P2、P3,這就變成了熟悉的節奏——K折交叉驗證。我們以2折交叉驗證得到P1為例,假設訓練集為4行3列:
將其劃分為兩部分:
,
用traina訓練模型M1,然后在trainb上進行預測得到preb3和pred4:
在trainb上訓練模型M1,然后在traina上進行預測得到pred1和pred2:
然后把兩個預測集進行拼接:
對于測試集T1的得到,有兩種方法。注意到剛剛是2折交叉驗證,M1相當于訓練了2次,所以一種方法是每一次訓練M1,可以直接對整個test進行預測,這樣2折交叉驗證后測試集相當于預測了2次,然后對這兩列求平均得到T1?;蛘咧苯訉y試集只用M1預測一次直接得到T1。P1、T1得到之后,P2、T2、P3、T3也就是同樣的方法。理解了2折交叉驗證,對于K折的情況也就理解也就非常順利了。所以最終的代碼是兩層循環,第一層循環控制基模型的數目,每一個基模型要這樣去得到P1,T1,第二層循環控制的是交叉驗證的次數K,對每一個基模型,會訓練K次最后拼接得到P1,取平均得到T1。
該圖是一個基模型得到P1和T1的過程,采用的是5折交叉驗證,所以循環了5次,拼接得到P1,測試集預測了5次,取平均得到T1。而這僅僅只是第二層輸入的一列/一個特征,并不是整個訓練集。再分析作者的代碼也就很清楚了。也就是剛剛提到的兩層循環。
總結
以上是生活随笔為你收集整理的模型融合策略voting、averaging、stacking的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CRM_MESSAGES_DISPLAY
- 下一篇: 我的世界中国版生化危机版陷阱怎么制作 僵