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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

机器学习模型融合

發布時間:2023/12/3 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 机器学习模型融合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模型融合方式:

· 均值法Averaging:適用于回歸類算法,將每個評估器的輸出做平均,類似于Bagging中回歸的做法。

· 投票法Voting: 適用于分類算法,將每個評估器的輸出進行投票, 類似于Bagging中分類的做法

· 堆疊法Stacking: 使用一個/多個算法在訓練集上輸出的某種結果作為下一個算法的訓練數據。

· 改進堆疊法Blending: 一種特殊的stacking, 使用一個/多個算法在驗證集上輸出的某種結果作為下一個算法的訓練數據。

一 投票法Voting:

1 五大類投票方法

(1)相對多數投票

只要有一個類別占比較多即可

(2)絕對多數投票

要求至少有50%或者以上的分類器都輸出了同一類別,否則拒絕預測。

(3)硬投票

將不同類別的出現次數進行計數,出現次數最多的類別就是投票結果。

(4)軟投票

將不同類別下的概率進行加和,概率最高的類別就是投票結果。基于概率的軟投票可以衡量投票的置信程度, 某一類別下的概率越高, 說明該模型對該類別的預測結果越有信心。

(5)加權投票

加權投票是在投票過程中賦予不同分類器權重的投票,具體表現在:
· 對于硬投票,加權投票可以改變每一個分類器所擁有的票數。

· 對于軟投票,加權投票可以改變每一個分類器所占的權重,令概率的普通加和變成加權求和。

2 模型融合流程(分類問題)

(1)建立基于交叉驗證的benchmark、做模型選擇

在模型融合前,需將可能有用的算法簡單運行一次,從中調選出表現較好的算法作為融合的基礎。找到單一算法可以實現的最好分數來作為benchmark,然后將融合后的模型與benchmark進行比較。

(2)構建多組分類器, 進行融合

進行投票或者平均融合后,結果反而沒有單個算法好,可能是以下原因:

1. 評估器之間的學習能力/模型表現差異太大。 在融合中,一個表現很差的模型會拉低整個融合模型的上限,尤其是回歸類算法,所以應當剔除差得模型。

2. 評估器在類型上過于相似。比如都是樹模型、都是Boosting算法,如果平均/投票的評估器都一致,那融合模型最終得出的結果也會與單個評估器一致。

3. 對評估器進行了過于精密的調優。經過粗略調優的評估器融合能夠提升模型表現, 但如果對評估器進行過于精密的調優, 可能會讓融合后的算法處于嚴重過擬合的狀態。

3 構建多樣性

在模型融合中,獨立性被稱為多樣性,評估器之間的差別越大、彼此之間就越獨立,因此評估器越多樣,獨立性就越強。

以下方法,用來讓評估器變得更多樣,讓評估器之間相互獨立:

· 訓練數據多樣性: 完成多組有效的特征工程,使用不同的特征矩陣訓練不同的模型。但如何找出多組有效的特征工程是難題。

· 樣本多樣性: 使用相同的特征矩陣, 但每次訓練時抽樣出不同的樣本子集進行訓練。

· 特征多樣性: 使用相同特征矩陣, 但每次訓練時抽樣出不同的特征子集進行訓練。

· 隨機多樣性/訓練多樣性: 使用相同的算法,但使用不同的隨機數種子(會導致使用不同的特征、樣本、起點)、或使用不同的損失函數、使用不同的不純度下降量等。

· 算法多樣性: 增加類型不同的算法,如集成、樹、概率、線性模型相混合。

二 堆疊法Stacking

1 Stacking基本思想

Stacking集模型效果好、可解釋性強、適用復雜數據

Stacking由兩層組成,分別為level 0和level 1,level 0中包含一個或多個強學習器,而level 1只能包含一個學習器。在訓練過程中,level 0先進行訓練,level 0中的每個算法會輸出相應的預測結果(驗證集),將這些預測結果拼湊成新特征矩陣,再輸入level 1的算法進行訓練。融合模型最終輸出的預測結果就是level 1的學習器輸出的結果。

?在訓練過程中,level 0輸出的預測結果一般如下排布:

?注意:

level 0上的學習器是復雜度高、學習能力強的學習器,如繼承算法。而level 1上的學習器是可解釋性強、較為簡單的學習器,如決策樹、線性回歸、邏輯回歸等。

有這樣的要求是因為level 0上的算法目的是找出原始數據與標簽的關系、建立原始數據與標簽之間的假設,因此需要強大的學習能力。level 1上的算法的職責是融合個體學習器做出的假設、并且最終輸出融合模型的結果,相當于在尋找“最佳融合規則”。

2 Stacking細節問題

(1)要不要對融合的算法進行精密的調參?

個體學習器粗調,元學習器精調,如果不過擬合的話,可以兩類學習器都精調

(2)個體學習器算法要怎么樣選擇才能最大化stacking的效果?

控制過擬合、增加多樣性、注意算法整體的運算時間。

(3)個體學習器可以是復雜度較低的算法嗎?元學習器可以是Xgboost這種復雜度很高的算法嗎?

都可以,以模型效果為準。

(4)level 0和level 1的算法可不可以使用不同的損失函數?

可以,不同的損失函數衡量的是類似的差異,不過不同的損失對于差異的敏感性不同,盡量使用相似的損失函數。

(5)level 0和level 1的算法可不可以使用不同的評估指標?

必須使用相同的模型評估指標

3 Stacking中的交叉驗證

(1)元學習器的特征矩陣的兩個問題:

· 元學習器的特征矩陣中的特征一定很少

特征矩陣中的特征數就等于個體學習器的個數

·元學習器的特征矩陣中樣本量也不太多

因為元學習器的特征矩陣為level 0在驗證集上的輸出結果,驗證集的樣本量有限

因此可使用交叉驗證來造特征矩陣

對任意個體學習器來說,假設執行5折交叉驗證,會將訓練數據分成5份,并按照4份訓練、1份驗證的方式總共建立5個模型,訓練5次,注意每個學習器都要執行一次5折交叉驗證,注意是一個學習器分別執行這5次驗證,并不是正常的迭代訓練執行,因此不會泄露數據。

某個 個體學習器的訓練過程如下圖所示:

?個體學習器最終輸出的列為上圖中的5個預測結果拼接:

?最終,任意個體學習器的輸出的預測值數量 = 樣本量

數據量夠大,使用過多的交叉驗證折數并不會帶來好處,更可能讓訓練時間降低。

4 Stratified K折交叉驗證

Stratified K折驗證會考慮標簽中每個類別占比的交叉驗證,每次訓練時交叉驗證會保證

原始標簽中的類別比例 = 訓練標簽的類別比例 = 驗證標簽的類別比例。

5 特征太少的解決方案

?sklearnStackingClassifier的參數stack_method(這個參數只用于分類問題,因為回歸問題輸出的只能是標簽):

正常情況下,一個個體學習器只能輸出一列的預測結果,但如果把輸出的結果類型更換為概率值、置信度等內容,輸出結果的結構就可以從一列擴展為多列。

這個操作由參數stack_method控制,stack_method里面可以輸入四種字符串:

"auto","predict_proba","decision_function","predict"

· predict_proba?是輸出概率值

????????對n分類,輸出樣本的真實標簽為[0,1,2,3...n]的概率,一共n列

· decision_function?是每個樣本點到分類超平面的距離,可以衡量置信度

????????對n分類,輸出樣本的真實標簽為[0,1,2,3...n]的置信度,一共n列

· predict?輸出具體的預測標簽

? ? ? ? 對任何分類形式,輸出算法在樣本上的預測標簽,一列

6 Stacking融合的訓練/測試流程

*測試流程:

(1)細節問題:

· 最終輸出預測結果的是元學習器,直覺上來說測試數據集或許應該被輸入到元學習器當中。然而,元學習器是使用新特征矩陣進行預測的,新特征矩陣的結構與規律都與原始數據不同。所以元學習器不可能接受從原始數據中分割出來的測試數據,正確的做法應該是讓測試集輸入level 0的個體學習器。

· level 0 的個體學習器們在訓練過程中做的是交叉驗證,而交叉驗證只會輸出驗證結果,不會留下被訓練的模型。因此在level 0中沒有可以用于預測的、已經訓練完畢的模型。

解決方法:

訓練時,在交叉驗證完成后,使用全部訓練數據對所有個體學習器進行訓練,為測試做好準備

stacking的測試:

1.將測試集輸入level 0的個體學習器,分別在每個個體學習器上預測出相應結果,拼接起來作為標簽。

2.將新特征矩陣放入元學習器進行預測。

因此在stacking中,不僅要對個體學習器完成全部交叉驗證,還需要在交叉驗證結束后,重新使用全部訓練數據來訓練所有的模型。

需要注意:想要對原生代碼下的模型進行融合,必須自己手寫融合過程。

三 改進后的堆疊法: Blending

Blending在訓練過程中,level 0輸出的是驗證集的結果,并沒有做K折交叉驗證,即level 1的特征矩陣就是驗證集對應的大小,學習的東西少一些,模型抗過擬合能力越強。(數據量龐大的情況下可用)

數據量很小的情況下,stacking和blending都無法有效使用,實際中,stacking的應用比blending廣泛。

總結

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

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