Slide 1

Slide 1 text

初めてのコンペ ~MoA Prediction~ 2020/12 KOUKI

Slide 2

Slide 2 text

自己紹介 Kaggle: Kouki • 地方のSIerのSE • C#、Java、SQL等の言語を使ったシステム開発が主 • 今年6月から機械学習に挑戦開始 Kaggleスタートブック、Titanic、House Price、他諸々書籍読んだり twitter @kou_256 2

Slide 3

Slide 3 text

結果 でフィニッシュ! まさかの24位からのShake-up。 Discussion Expertになりました。 Notebookも1つ金をいただきました。 最終サブのNotebookを説明付きで公開。 3

Slide 4

Slide 4 text

MoAコンペ 参加の理由 スキルアップ テーブル データ 初心者向け (とkaggler-jaで見た) 4

Slide 5

Slide 5 text

MoAコンペ 私の理解  テーブルデータ。  説明変数が875個。多い。  目的変数が207個。多い。  使途不明の train_targets_nonscored.csv。  説明変数がマスクされている。ドメイン知識があっても有効利用が難しい?  Notebookコンペ。2時間以内にRunさせる。(Notebook分離OKなのは後半に知る)  MoA(作用機序)について  ディスカッションやインターネットで調べてはみたが、よくわからなかった・・・  どうやら新薬の開発に役立てたいという雰囲気まではつかめたくらい。 5

Slide 6

Slide 6 text

前半の取り組み とりあえず LGBM Over Sampling NNに 乗り換え アンサンブル! label smoothing とか これしか 知らない… 他のDatasetで 効いたので -> 今回は効かず Kerasの本を読んで NNを勉強 Public Notebookを参考 にしながらモデル追加。 Discussionに投稿されて いた有効そうな手段を 組み込み 0.06072 0.06398 0.01892 0.01884 0.01861 6

Slide 7

Slide 7 text

後半の取り組み 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

Slide 8

Slide 8 text

後半の取り組み 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

Slide 9

Slide 9 text

non scored の特徴量化 train non scored Simple Neural Net test トレーニング 説明変数 目的変数 モデル train 予測 モデル 予測 新しい特徴量 (train用) 新しい特徴量 (test用) 予測対象 予測対象 これらを後続の説明変数にす る。 train用にはnon scoredそ のものを使うことも可能だが、 スコアに寄与しなかった。 9

Slide 10

Slide 10 text

後半の取り組み 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

Slide 11

Slide 11 text

stackingのBlending モデル1 モデル2 モデル3 ・ ・ ・ Stacking (NN) Blending Stackingの結果も Blendingに混ぜることでス コアが大幅改善。 元のモデルの予測値をもう 一度使うことになるので、“こ れってありなの・・・”と、自信 はなかった。 11

Slide 12

Slide 12 text

後半の取り組み 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

Slide 13

Slide 13 text

意図的なリーク PCA VT train test 普通は・・・ 今回は・・・ Fit PCA VT train test Fit 通常はfit時にtest setを 含めるべきではない。 未知であるべき情報が使われて、 transformされてしまうため。 今回はprivate test setが submission中に参照可能、 という事実があったため、 privateにoverfitするという目的で 利用することは可能だったと考えた。 13

Slide 14

Slide 14 text

Final Submission 奇跡的に最も良い private scoreを 選択していた。 結果的にはLBを信じていた。 後半のShakeについてのディスカッションには震えた。 CVが似たような値しか出なくなっていたので、 ここは初心者らしく色気を出さずTrust the LB。 0.01616のサブは、いわゆるChris’s Fold ver。 ひょっとしたらこっちのがbetterもあるかもな・・・ ということで選択。 最後の1サブは エラーというオチ・・・ 14

Slide 15

Slide 15 text

全体を通して  終了ギリギリまで2時間で全部(train, inference)やらないといけないと思っていた。  ディスカッションで聞いてもあまりピンと来る回答もなく、またルール等にも書いてない。  結局最後まで1Notebookで全部やるスタイルを崩さずに走り切った。  このためモデルの高速化なんかも途中でやっている。Seed, Fold数にも気を遣っている。  とにかくShakeが心配だった。  中盤のStackingのブレンドで高スコアが出たため、割とずっと上位にいた。  初心者がいきなりこんな上なはずはないと、根拠なく過学習していると思っていた。  とはいえ初心者が深読みしてもどうにもならないので、LB向上に努め続けた。 15

Slide 16

Slide 16 text

全体を通して  ディスカッションは“全部”読んだ。  文字通り全部読んでた。おかげでスコア向上、学習速度向上などできた。  気になることは書き込んだ。勉強になった。やはり絡んでみないとわからない。  わからないことはトピックも立てて聞いてみた。  初心者すぎるのでスルーされるかとも思いつつ。優しいGMが教えてくれたりした。  結果なんだかMoAに愛着がわいた。(笑 16

Slide 17

Slide 17 text

疑問  中盤以降はハイパーパラメーターチューニングに多くの時間をつぎ込んだ。  実際、どういうActivationを使うか、Dropoutはどれくらいにするか、レイヤーの順序を組み替 えたらどうなるか・・・とかいろいろやると、個別のCVは結構改善したので。  これでよかったのか?ほかの人はどういうところに時間を費やしたのか。  そもそもStackingの結果を、Stackingに使った結果と合わせてBlendingするという のはアリなのか?  これに関しては解法公開時に疑問として投げかけてはみたものの、特にだれからもコメントなし。  Variance Thresholdの適用のしかた  特徴量エンジニアリング前にfitし、その他の特徴量エンジニアリング(PCA, Rank Gauss、 StandardScaler etc…)が終わった後に、列の除去を実施していた。特にStandardScaler 後にfitしても、もはや列削除ができない。またPCAといった特徴量には、削除予定の列の情報も 含めて生成したかった。 17

Slide 18

Slide 18 text

18 以上、ありがとうございました。