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

DSB2019 10th Solutionの一部とShakeについて

pao
February 29, 2020

DSB2019 10th Solutionの一部とShakeについて

pao

February 29, 2020
Tweet

More Decks by pao

Other Decks in Technology

Transcript

  1. Shake

    10th Place Solutionの一部
    pao
    DataScienceBowl2019 振り返り

    View full-size slide

  2. ● 名前
    ○ Pao
    ● 所属
    ○ JTC(もうすぐ卒業予定)
    ● 悩み
    ○ 子供がかわいすぎる
    ● 特技
    ○ Shake
    自己紹介

    View full-size slide

  3. Solutionの一部とShakeについて話します
    ↓に概要書いてます
    https://www.kaggle.com/c/data-science-bowl-2019/discussion/127332
    183 => 10位でSolo Gold!!
    ShakeUpするとは思っていたが、どれくらい上がるかは分かってなかった
    結果

    View full-size slide

  4. ● 10th Place Solutionの一部
    ● Shakeについて

    View full-size slide

  5. ● 10th Place Solutionの一部
    ● Shakeについて

    View full-size slide

  6. ● Model: LightGBM x 6 average
    ● Validation
    ○ StratifiedGroupKFold
    ○ 50個のTruncatedしたSubSet作成し、その平均をCVスコアとした
    ○ EarlyStoppingは別の1つのSubSetに対して実施
    ● QWK Threshold
    ○ 固定値 (Optimizationして出た値を丸めたもの)
    ■ TrainへのOverfitをさけた
    ● Feature
    ○ よかったもの:標準化した過去の成績(センター試験のニュース見て思いついた)
    ○ 累積系は基本入れず、比率系の特徴だけを入れた(過去の Play回数に出来るだけ依存しない)
    ○ Feature Selection(次ページ)
    ● Other
    ○ FeatureFraction 1.0 (Titleの列が必須だった?)
    ○ Testデータを入れる
    Solution概要

    View full-size slide

  7. ● Feature Importance上位300件くらいを利用
    ○ CVだけあげないようにするために、 Validation使う系のSelectionは避けた
    ● 懸念:普通に学習すると、TruncatedされてないTrainデータでのImportanceになって
    しまう
    ○ Trainのほうが過去Play回数が多いデータが多い
    ○ Play回数が多いデータに効く特徴が上位に来やすくなる
    ● 対策:TruncatedされたTrainデータで学習したときのImportanceを利用する
    ○ Submit時とは別の特徴選択用の学習
    ○ 5iteration毎に新しくTruncatedしたデータセットに変更して学習
    ■ LightGBMのinit_modelパラメータを使用
    →比較していないので効果は分からなかったが意味があったと信じてる
    Feature Selection

    View full-size slide

  8. ● 本当にランダムにユーザで分割されているのか?
    ○ Train/Publicであまりに分布が違いすぎる。。
    →シミュレーションしまくった。
    Trainからランダムに1000個のinstallation_idをPickupしたとき、
    ● PublicTestに近い分布にどれくらいの確率でなるのか?
    ● PublicLBに近いQWKのスコアがどれくらい出るのか?
    ● Testは本当にランダムなAssessmentでTruncatedしたものなのか?
    ○ ランダムにsession_idをとってきて、その次の Assessmentにしたのではないか?
    ○ 結果のないAssessmentも含めてランダムでとってきて、結果がない場合は次の Assessmentを使ったの
    ではないか?
    PublicLBはどこまで信用できるのか?

    View full-size slide

  9. ● 10th Place Solutionの一部
    ● Shakeについて

    View full-size slide

  10. ここ1年のコンペShake歴
    コンペ Public Private Shake Result
    Malware 2 1475 ↓ 1473
    Instant Gratification 42 64 ↓ 22
    Predicting Molecular Properties 29 29 -
    atmaCup #2 4 1 ↑ 3
    kaggleDaysTokyo 7 5 ↑ 2
    DataScienceBowl2019 183 10 ↑ 173
    atmaCup #3 9 3 ↑ 6

    View full-size slide

  11. 調子乗って書いていますが、
    Shakeは運ゲーなところも、かなりあると思います。
    (これを書いた翌週にはatmaCupでShakeDownしてるかも)

    View full-size slide

  12. ShakeUp/ Downにはいろんな要因がある
    ● コンペ自体の性質によるもの
    ○ 評価指標が不安定
    ○ Publicのデータ量が少ない
    ○ PublicとPrivateでデータの質が違う
    ■ 相関がある時系列的なもの
    ■ 相関がないもの
    ● 参加者要因
    ○ ハイスコアカーネル&コピー勢
    ● 個人要因
    ○ PublicにOverfitした特徴量・モデルを作る

    View full-size slide

  13. ShakeUp/ Downにはいろんな要因がある
    ● コンペ自体の性質によるもの
    ○ 評価指標が不安定 ←努力できるが仕方ない部分も多い
    ○ Publicのデータ量が少ない ←多少努力できるが仕方ない部分も多い
    ○ PublicとPrivateでデータの質が違う
    ■ 相関がある時系列的なもの ←頑張れる
    ■ 相関がないもの ←仕方ない(クソコンペ)
    ● 参加者要因
    ○ ハイスコアカーネル&コピー勢 ←気をつけれる
    ● 個人要因
    ○ PublicにOverfitした特徴量・モデルを作る ←気をつけれる

    View full-size slide

  14. ShakeUp/ Downにはいろんな要因がある
    ● コンペ自体の性質によるもの
    ○ 評価指標が不安定 ←努力できるが仕方ない部分も多い
    ○ Publicのデータ量が少ない ←多少努力できるが仕方ない部分も多い
    ○ PublicとPrivateでデータの質が違う
    ■ 相関がある時系列的なもの ←頑張れる
    ■ 相関がないもの ←仕方ない(クソコンペ)
    ● 参加者要因
    ○ ハイスコアカーネル&コピー勢 ←気をつけれる
    ● 個人要因
    ○ PublicにOverfitした特徴量・モデルを作る ←気をつけれる
    DSB2019での主な要因

    View full-size slide

  15. ハイスコアカーネル&コピー勢
    ● 相関の高い類似SubmissionがLBを占める
    ○ Privateでその集団に勝てるかどうかで一気に順位が変わる
    ● ハイスコアカーネルはPublicLBにOverfitting気味である
    ○ 毒入りのときもある
    ○ 謎の特徴量、ハイパーパラメータ、後処理など注意
    参考にするのは解釈ができる部分だけにしたほうがいい
    DSBはまさにこれ

    View full-size slide

  16. PublicにOverfitした特徴量・モデルを作る
    ● CV気にせずサブミットしまくり、LBをあげる
    ● 何か分からないけど、スコアが上がった
    ○ 解釈できない場合、危険(特にテーブルデータ)
    よくある要因
    個人的に気をつけていること
    ● 出来るだけ仮説ベースで実験する
    ○ 「何かわからんがやってみた!」は危険
    ■ 頭回っていないときにやりがちなので注意
    ● 自分の信じる指標・方針を最初に決めておく
    ○ 終盤にTrustLBからTrustCVに切り替えても手遅れだったりする
    ○ TrustLBかTrustCVの二択だけでなく、両方使うことも含めて決める
    ● 最終サブ選択
    ○ 状況次第だが、Shakeしそうなときは出来るだけ相関の低い2つのものを選ぶ

    View full-size slide

  17. その他
    ● ShakeDownして自ら辛い経験をすることで次から気を
    つけられるようになる
    ○ Malware以降、異常に考えるようになった
    ShakeDownの数だけ強くなれる

    View full-size slide