14款機器學習加權平均模型融合的火花

  • 2019 年 12 月 23 日
  • 筆記

來源:素質雲筆記

模型融合的方法很多,Voting、Averaging、Bagging 、Boosting、 Stacking,那麼一些kaggle比賽中選手會選用各種方法進行融合,其中嶺回歸就是一類輕巧且非常有效的方法,當然現在還有很多更有逼格的方法。本文是受快照集成的啟發,把 titu1994/Snapshot-Ensembles 項目中,比較有意思的加權平均集成的內容抽取出來,單獨應用。

練習案例簡單易懂,無需外部調用數據,

code更新於:https://github.com/mattzheng/WA-ModelEnsemble

——戳原文閱讀

1 快照集成 Snapshot Ensembles

因為受其啟發,所以在這提一下,快照集成是一種無需額外訓練代價的多神經網路集成方法。 通過使單個神經網路沿它的優化路徑進行多個局部最小化,保存模型參數。 利用多重學習速率退火循環實現了重複的快速收斂。

1

比較有意思的做法

作者在訓練相同網路時使用權重快照,在訓練結束後用這些結構相同但權重不同的模型創建一個集成模型。這種方法使測試集效果提升,而且這也是一種非常簡單的方法,因為你只需要訓練一次模型,將每一時刻的權重保存下來就可以了。

也就是,同一款模型,在學習率稍微調高,訓練中得到的不同階段的模型文件都保存並拿來做最後的模型融合。

長學習率循環的思想 在於能夠在權重空間找到足夠多不同的模型。如果模型相似度太高,集合中各網路的預測就會太接近,而體現不出集成帶來的好處.

2

權重的解決方案

對於一個給定的網路結構,每一種不同的權重組合將得到不同的模型。因為所有模型結構都有無限多種權重組合,所以將有無限多種組合方法。

訓練神經網路的目標是找到一個特別的解決方案(權重空間中的點),從而使訓練集和測試集上的損失函數的值達到很小。

3

相關實現:cifar100 影像分類任務

可參考項目:titu1994/Snapshot-Ensembles 該項目用keras1.1 做了cifar_10、cifar_100兩套練習,使用的是比較有意思的影像框架: Wide Residual Net (16-4)。作者已經預先給定了5款訓練快照,拿著5套模型的預測結果做模型集成,使使訓練集和測試集上的損失函數的值達到很小。

2、14款常規機器學習模型

sklearn官方案例中就有非常多的機器學習演算法示例,本著實驗的精神筆者借鑒了其中幾個。

01

特徵重要性

在本次10+機器學習案例之中,可以看到,可以輸出重要性的模型有:

  • 隨機森林 rf.feature_importances_
  • GBT grd.feature_importances_
  • Decision Tree decision.feature_importances_
  • AdaBoost AdaBoost.feature_importances_

可以計算係數的有:線性模型,lm.coef_ 、 SVM svm.coef_

Naive Bayes得到的是:NaiveBayes.sigma_

解釋為:variance of each feature per class

02

機器學習演算法輸出

演算法輸出主要有:重要指標(本案例中提到的是acc/recall)、ROC值的計算與plot、校準曲線(Calibration curves)

Calibration curves may also be referred to as reliability diagrams.

3、權重空間優化 Optimize

主要是從titu1994/Snapshot-Ensembles抽取出來的。簡單看看邏輯:

01

簡述權重空間優化邏輯

先定義loss函數:log_loss(testY_cat, final_prediction)

testY_cat為正確預測標籤, final_prediction為多款模型預測概率組合。

迭代策略:minimize(log_loss_func, prediction_weights, method='SLSQP')

SciPy的optimize模組提供了許多數值優化演算法,minimize就是其中一種。

02

實踐

具體code筆者會上傳至筆者的github之上了。 步驟為:

  • 1、隨機準備數據make_classification
  • 2、兩套模型的訓練與基本資訊準備
  • 3、觀察14套模型的準確率與召回率
  • 4、刻畫14套模型的calibration plots校準曲線
  • 5、14套模型的重要性輸出
  • 6、14套模型的ROC值計算與plot
  • 7、加權模型融合數據準備
  • 8、基準優化策略:14套模型融合——平均
  • 9、加權平均優化策略:14套模型融合——加權平均優化

可以觀察到基準優化策略:14套模型融合——平均的結果為:

>>> Accuracy : 79.7

>>> Recall : 0.7043390514631686

弱分類器的性能拉低了整個集成模型的結論。

加權平均優化策略:14套模型融合——加權平均優化

>>> Best Accuracy : 90.4

>>> Best Weights : [1.57919854e-02 2.25437178e-02 1.60078948e-01 1.37993631e-01 1.60363024e-03 1.91105368e-01 2.34578651e-02 1.24696769e-02 3.18793907e-03 1.29753377e-02 1.12151337e-01 7.62845967e-04 3.05643629e-01 2.34089531e-04]

>>> Accuracy : 90.4

>>> Recall : 0.9112008072653885

在迭代了20次之後,通過加權求得的綜合預測水平,要高於平均水平很多。不過,跟一些比較出眾的機器學習模型差異不大。