kaggle本第7章
第7章 アンサンブル
7.1 アンサンブルとは?
7.2 シンプルなアンサンブル手法 (P.357)
7.2.1 平均・加重平均 (P.357)
平均でまず手を出すなら簡単だという理由でrandom seed averagingなのかなと思うwakame.icon
実装までの時間がかからず、精度も上げられるということで時間制限ありのオフラインコンペ向きかなwakame.icon
オフラインコンペ例
天色グラフィティ- SUUMOデータ分析ワークショップで優勝した。
アンサンブルはLightGBM、RandomForest、kNN、Ridgeの4種類のモデルを試した。 最終的にはLightGBMとRandomForestのSeed Averagingをして、それらの重み付き平均を取って提出。無事1位を取った。
上の例はPrivateLBがなくPublicLBでチューンできたため
追記wakame.icon
データサイズと学習時間
新しい特徴の効果測定で全訓練データを使う必要はないのではという提言
4分の1のデータで4回平均とるほうが効率的?
時間効率的な話、時間制限ありのオフラインコンペだと効いてきそうな話
データサイズとbest_iteration
averagingとbest_iteration
random seed averagingをすることによって過剰な学習回数でも精度が落ちない
単一モデルでの学習回数不足・過剰を補う役割を果たす
averagingとmax_depth
averagingとbest_iterationの実験結果と合わせて考えると多少過学習気味にあらかじめ学習させ(iteration/max_depthを大きめにする)、random seed averagingすると過学習を抑えられる
というのがJackさんの結論
averagingとeta
averagingするならlearning_rateを小さくすることにそこまでこだわらなくても良いよという話
幾何平均、調和平均の使い分けが知りたい。幾何平均は割合(年平均増加率とか)を足す際に使う?KaggleだとAUCの足し算は幾何平均ですかね?(p359)sinchir0.icon
気になる、著者に聞いてみたいwakame.icon
IEEEコンペで確率値に対して、GMEAN(幾何平均)を行なっているカーネルsinchir0.icon
n乗平均、対数平均の例
AUC Optimization: Ensembling (+ examples/pics)
7.3 スタッキング
「スタッキングの2層目ってなんか線形回帰モデル多いよなぁ・・・」とぼんやり思っていたところ、kaggler-jaで似たような質問があったため紹介しておきます。(p.特になし)sinchir0.icon
https://kaggler-ja-slack-archive.appspot.com/?ch=C6RV8M3DG&ts=1576558243.04
stackingは過学習しがちな面があるので、GBDTではなく線形モデルを使っている場合が多そうです。(u++さんより)
stuckingのfoldを揃えなくても良いという意見(p.360)currypurin.icon
https://www.kaggle.com/c/avito-demand-prediction/discussion/59885#349800
7.4 どんなモデルをアンサンブルすると良いか?
時系列データにおける期間をずらしたモデルのアンサンブル例を下記に紹介しておきます。(p.特になし)sinchir0.icon
Santander Product Recommendation(Jackさん)
https://speakerdeck.com/rsakata/santander-product-recommendationfalseapurotitoxgboostfalsexiao-neta?slide=16
https://www.slideshare.net/OwenZhang2/tips-for-data-science-competitions
Owen氏のスライド
Stacking(P.16,17)
blending(P.21,22)
Try to "diverse" model
本で説明されている通りモデルに多様性を持たせる
https://github.com/nejumi/kaggle_memo#ensembleについて
XGBoostとRandomForestは相性が良いことが経験的に知られている。また、これらにNeural NetworkやSVM, kNNなどを加えるのが良い。これは、XGBoost/RandomForestはTree Baseのために決定境界が特徴軸に平行な矩形になるが、Neural Networkなどは曲線(曲面)となるため(よりdiverseな予測器群のensembleになるため)である。
7.4.4 問題のとらえ方を変える(P. 373)
7.4.4に記載されているような例を実際のコンペで行なっている話、知っている方いたらぜひお聞きしたいです。(p.373)sinchir0.icon
回帰タスクで、ある値以上とある以下との二値分類タスクモデルを作る
全体のデータを使って予測するモデル(回帰)、一定値以上や以下の部分を予測するモデル(分類してから回帰)の2つを作るwakame.icon
全体を予測するモデルはMAEで一定値以上を予測する場合はRMSE or MSE(大きいほど重きが置かれるため)で目的関数を分ける
最終的な予測は一定値以上・以下の部分は2モデルのアンサンブルでそれ以外は全体予測モデルの予測を使うとか
0以上の値を取る販売額のタスクで、販売されたかどうか(=販売額が0か0以外か)の二値分類タスクのモデルを作るcurrypurin.icon
問題設定は異なるけれど、Eloコンペの外れ値予測のモデルと本質は同じ
https://amalog.hateblo.jp/entry/elo-merchant-category-recommendation
多クラス分類において、一部のクラスのみを予測するモデルを作る。そのモデルでは、その一部のクラスに特化した手法を用いることができるcurrypurin.icon
回帰タスクだけれど、signate土地コンペの、土地だけの物件の予測モデルを作るsolution
土地のみの物件はデータ量が少なく、oofでの精度が悪かった為、augmentationなどを行なって、データ量を増やして土地のみモデルを作るなどして精度を改善した事例
分類タスクだと...
重要だが欠損が多い特徴量がある場合に、その特徴量を予測するモデルを作るcurrypurin.icon
signate土地コンペの、公示価格等の欠損値補完。
これは、制度的に欠損になる特徴で、他の特徴から精度よく予測することができた為、欠損値を補完するのが効果的だった。
あるモデルによる予測値の残差(=目的変数-予測値)に対して予測するモデルを作るcurrypurin.icon
給与コンペ1st solution https://prob.space/competitions/salary-prediction/discussions/senkin13-Post46bdfde9468e3d01f4e7
第2回 atma cup 1st http://pao2.hatenablog.com/entry/2019/11/27/233914
もし実務でアンサンブルモデル用いてたり、事例知ってる方いたらぜひお聞きしたいです。精度数%の差が大きな利益向上に結びつく段階まで行けたことなくて・・・(p.374)sinchir0.icon
TODO 次回聞きますwakame.icon
7.5 分析コンペにおけるアンサンブルの例 (P. 375)
参考URL
https://mlwave.com/kaggle-ensembling-guide/
http://ibisforest.org/index.php?cmd=read&page=アンサンブル学習&word=アンサンブル学習
https://naotaka1128.hatenadiary.jp/entry/kaggle-compe-tips
https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble
https://github.com/nejumi/kaggle_memo