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

初手が爆速になるフレームワークを作ってコンペ設計した話

Avatar for Yamaguchi Takahiro Yamaguchi Takahiro
November 30, 2019
5.8k

 初手が爆速になるフレームワークを作ってコンペ設計した話

Avatar for Yamaguchi Takahiro

Yamaguchi Takahiro

November 30, 2019
Tweet

More Decks by Yamaguchi Takahiro

Transcript

  1. Hello! 山口貴大 twitter @nyker_goto atma(アートマ)株式会社 取締役 / DS / ふろんと

    / ばっくえんど / いんふら 京都大学大学院 最適化数理卒 SGDが好き Kaggle Master kaggle.com/nyk510 2
  2. 17 初手(開始30分ぐらい)でこれができます 特徴量 • 指定カラムの Count Encoding • 指定カラムの OneHotEncoding

    • 集計系の特徴量 モデル • Single Model (LightGBM/XGBoost/RandomForest…) • Optuna での parameter tuning • Seed averaging • 上記モデルのEnsemble・Stacking (Ridge/LightGBM/XGBoost)
  3. 18

  4. 22 1.学習モデルを fold ごとに保存 2.Fold ごとの feature importance 3.Log と

    OutOfFold, そのスコアの保存 やってくれること
  5. 23 大枠は Base Class で定義 • Fold ごとの学習・予測 • target/input

    の scaling • Early Stopping • Optunaでのチューニング • Metric・feature importance の出力 ...
  6. 25 色々Stacking 1. XGBoost 2. Optuna で tuning するXGBoost 3.

    SeedAveraging するXGBoost 4. 1~3+特徴量のstacking + Optuna で tuning する Ridge 5. 1~3+特徴量のstacking する XGBoost 6. Stacking モデルのアンサンブル
  7. 27 Good Points • 共通部分の見える化 そのプロジェクト固有のコードと汎用部分を意識して コーディングするようになるので自ずと見やすくなる • Version 管理できる

    昔のプロジェクトでも問題なく使える 改良部分がわかりやすい(コピペだと何が良くなったかわから なくなりがち) • テストが容易 (GitlabCI で master merge ごとにテスト)
  8. 課題設計: 大きく3つの要素 Targetの選定 • そもそもどのカラムを予測する? 加工はいらない? • 回帰? 分類? Train/Public/Private

    の設定 • 時系列で切る? ユーザーIDで切る? 何も考えないで切る? 実際に解いたときのスコアの見積り • ほんまに予測できるの? privateで破綻してたりしない? • 予測が無理だと「コンペとしては」成立しない (仕事ならわからないでもOKだけど) 33
  9. atmaCup#2の場合 Target候補: 16種類 • アンケートのカラム (x5) • コンディション (atmaCup#2で採用したもの含む) 切り方

    (train/private/public)候補: 6種類 • User で分離する・時系列で分離する・testの割合 モデル: 10種類ぐらい • みんな本気で来るのでモデリングも手は抜けない… 34
  10. 課題の設計 Target候補: 8種類ぐらい • アンケートのカラム (x5) • コンディション (atmaCup#2で採用したもの)... 切り方

    (train/private/public)候補 6種類ぐらい • User で分離する・時系列で分離する・割合 モデル: 5種類ぐらい • みんな本気で来るのでモデリングも手は抜けない… 35 16x6 = 96種類のデータセットに対して 特徴量とモデルx10を作成して Target と切り方ごとに性能評価 やらなあかんこと