Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MoA Public 14th 振り返り

Kouki
December 17, 2020

MoA Public 14th 振り返り

はじめてフルコミットで取り組んだMoAコンペの振り返りです。

解法概要
https://www.kaggle.com/c/lish-moa/discussion/200585

解法Notebook
https://www.kaggle.com/kokitanisaka/moa-ensemble

Kouki

December 17, 2020
Tweet

Other Decks in Technology

Transcript

  1. MoAコンペ 私の理解  テーブルデータ。  説明変数が875個。多い。  目的変数が207個。多い。  使途不明の

    train_targets_nonscored.csv。  説明変数がマスクされている。ドメイン知識があっても有効利用が難しい?  Notebookコンペ。2時間以内にRunさせる。(Notebook分離OKなのは後半に知る)  MoA(作用機序)について  ディスカッションやインターネットで調べてはみたが、よくわからなかった・・・  どうやら新薬の開発に役立てたいという雰囲気まではつかめたくらい。 5
  2. 前半の取り組み とりあえず LGBM Over Sampling NNに 乗り換え アンサンブル! label smoothing

    とか これしか 知らない… 他のDatasetで 効いたので -> 今回は効かず Kerasの本を読んで NNを勉強 Public Notebookを参考 にしながらモデル追加。 Discussionに投稿されて いた有効そうな手段を 組み込み 0.06072 0.06398 0.01892 0.01884 0.01861 6
  3. 後半の取り組み non scored を特徴量にする Stackingの Blending 新しいモデルを 追加(頭2NN) Blending 重み調整

    意図的な リーク NNで学習。 test用の特徴 量生成 Stackingの結果 もブレンドに含める trainと、non_scoredか ら作った特徴量をわけて 入れてみる CVを見ながら 重みを手動調整。 その後勘による調整で LB向上… ディスカッションから、 リークさせる方向で調整 0.01851 0.01841 0.01830 0.01821 0.01815 7
  4. 後半の取り組み Stackingの Blending 新しいモデルを 追加(頭2NN) Blending 重み調整 意図的な リーク NNで学習。

    test用の特徴 量生成 Stackingの結果 もブレンドに含める trainと、non_scoredか ら作った特徴量をわけて 入れてみる CVを見ながら 重みを手動調整。 その後勘による調整で LB向上… ディスカッションから、 リークさせる方向で調整 0.01851 0.01841 0.01830 0.01821 0.01815 non scored を特徴量にする 8
  5. non scored の特徴量化 train non scored Simple Neural Net test

    トレーニング 説明変数 目的変数 モデル train 予測 モデル 予測 新しい特徴量 (train用) 新しい特徴量 (test用) 予測対象 予測対象 これらを後続の説明変数にす る。 train用にはnon scoredそ のものを使うことも可能だが、 スコアに寄与しなかった。 9
  6. 後半の取り組み non scored を特徴量にする 新しいモデルを 追加(頭2NN) Blending 重み調整 意図的な リーク

    NNで学習。 test用の特徴 量生成 Stackingの結果 もブレンドに含める trainと、non_scoredか ら作った特徴量をわけて 入れてみる CVを見ながら 重みを手動調整。 その後勘による調整で LB向上… ディスカッションから、 リークさせる方向で調整 0.01851 0.01841 0.01830 0.01821 0.01815 Stackingの Blending 10
  7. stackingのBlending モデル1 モデル2 モデル3 ・ ・ ・ Stacking (NN) Blending

    Stackingの結果も Blendingに混ぜることでス コアが大幅改善。 元のモデルの予測値をもう 一度使うことになるので、“こ れってありなの・・・”と、自信 はなかった。 11
  8. 後半の取り組み non scored を特徴量にする Stackingの Blending 新しいモデルを 追加(頭2NN) Blending 重み調整

    意図的な リーク NNで学習。 test用の特徴 量生成 Stackingの結果 もブレンドに含める trainと、non_scoredか ら作った特徴量をわけて 入れてみる CVを見ながら 重みを手動調整。 その後勘による調整で LB向上… ディスカッションから、 リークさせる方向で調整 0.01851 0.01841 0.01830 0.01821 0.01815 12
  9. 意図的なリーク PCA VT train test 普通は・・・ 今回は・・・ Fit PCA VT

    train test Fit 通常はfit時にtest setを 含めるべきではない。 未知であるべき情報が使われて、 transformされてしまうため。 今回はprivate test setが submission中に参照可能、 という事実があったため、 privateにoverfitするという目的で 利用することは可能だったと考えた。 13
  10. Final Submission 奇跡的に最も良い private scoreを 選択していた。 結果的にはLBを信じていた。 後半のShakeについてのディスカッションには震えた。 CVが似たような値しか出なくなっていたので、 ここは初心者らしく色気を出さずTrust

    the LB。 0.01616のサブは、いわゆるChris’s Fold ver。 ひょっとしたらこっちのがbetterもあるかもな・・・ ということで選択。 最後の1サブは エラーというオチ・・・ 14
  11. 全体を通して  終了ギリギリまで2時間で全部(train, inference)やらないといけないと思っていた。  ディスカッションで聞いてもあまりピンと来る回答もなく、またルール等にも書いてない。  結局最後まで1Notebookで全部やるスタイルを崩さずに走り切った。  このためモデルの高速化なんかも途中でやっている。Seed,

    Fold数にも気を遣っている。  とにかくShakeが心配だった。  中盤のStackingのブレンドで高スコアが出たため、割とずっと上位にいた。  初心者がいきなりこんな上なはずはないと、根拠なく過学習していると思っていた。  とはいえ初心者が深読みしてもどうにもならないので、LB向上に努め続けた。 15
  12. 疑問  中盤以降はハイパーパラメーターチューニングに多くの時間をつぎ込んだ。  実際、どういうActivationを使うか、Dropoutはどれくらいにするか、レイヤーの順序を組み替 えたらどうなるか・・・とかいろいろやると、個別のCVは結構改善したので。  これでよかったのか?ほかの人はどういうところに時間を費やしたのか。  そもそもStackingの結果を、Stackingに使った結果と合わせてBlendingするという

    のはアリなのか?  これに関しては解法公開時に疑問として投げかけてはみたものの、特にだれからもコメントなし。  Variance Thresholdの適用のしかた  特徴量エンジニアリング前にfitし、その他の特徴量エンジニアリング(PCA, Rank Gauss、 StandardScaler etc…)が終わった後に、列の除去を実施していた。特にStandardScaler 後にfitしても、もはや列削除ができない。またPCAといった特徴量には、削除予定の列の情報も 含めて生成したかった。 17