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

Db4af41c084fb66f56725d0b3b40fb09?s=47 pao
February 29, 2020

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

Db4af41c084fb66f56725d0b3b40fb09?s=128

pao

February 29, 2020
Tweet

Transcript

  1. Shake と 10th Place Solutionの一部 pao DataScienceBowl2019 振り返り

  2. • 名前 ◦ Pao • 所属 ◦ JTC(もうすぐ卒業予定) • 悩み

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

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

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

  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概要
  7. • Feature Importance上位300件くらいを利用 ◦ CVだけあげないようにするために、 Validation使う系のSelectionは避けた • 懸念:普通に学習すると、TruncatedされてないTrainデータでのImportanceになって しまう ◦

    Trainのほうが過去Play回数が多いデータが多い ◦ Play回数が多いデータに効く特徴が上位に来やすくなる • 対策:TruncatedされたTrainデータで学習したときのImportanceを利用する ◦ Submit時とは別の特徴選択用の学習 ◦ 5iteration毎に新しくTruncatedしたデータセットに変更して学習 ▪ LightGBMのinit_modelパラメータを使用 →比較していないので効果は分からなかったが意味があったと信じてる Feature Selection
  8. • 本当にランダムにユーザで分割されているのか? ◦ Train/Publicであまりに分布が違いすぎる。。 →シミュレーションしまくった。 Trainからランダムに1000個のinstallation_idをPickupしたとき、 • PublicTestに近い分布にどれくらいの確率でなるのか? • PublicLBに近いQWKのスコアがどれくらい出るのか?

    • Testは本当にランダムなAssessmentでTruncatedしたものなのか? ◦ ランダムにsession_idをとってきて、その次の Assessmentにしたのではないか? ◦ 結果のないAssessmentも含めてランダムでとってきて、結果がない場合は次の Assessmentを使ったの ではないか? PublicLBはどこまで信用できるのか?
  9. • 10th Place Solutionの一部 • Shakeについて

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

  12. ShakeUp/ Downにはいろんな要因がある • コンペ自体の性質によるもの ◦ 評価指標が不安定 ◦ Publicのデータ量が少ない ◦ PublicとPrivateでデータの質が違う

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

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

    ▪ 相関がある時系列的なもの ←頑張れる ▪ 相関がないもの ←仕方ない(クソコンペ) • 参加者要因 ◦ ハイスコアカーネル&コピー勢 ←気をつけれる • 個人要因 ◦ PublicにOverfitした特徴量・モデルを作る ←気をつけれる DSB2019での主な要因
  15. ハイスコアカーネル&コピー勢 • 相関の高い類似SubmissionがLBを占める ◦ Privateでその集団に勝てるかどうかで一気に順位が変わる • ハイスコアカーネルはPublicLBにOverfitting気味である ◦ 毒入りのときもある ◦

    謎の特徴量、ハイパーパラメータ、後処理など注意 参考にするのは解釈ができる部分だけにしたほうがいい DSBはまさにこれ
  16. PublicにOverfitした特徴量・モデルを作る • CV気にせずサブミットしまくり、LBをあげる • 何か分からないけど、スコアが上がった ◦ 解釈できない場合、危険(特にテーブルデータ) よくある要因 個人的に気をつけていること •

    出来るだけ仮説ベースで実験する ◦ 「何かわからんがやってみた!」は危険 ▪ 頭回っていないときにやりがちなので注意 • 自分の信じる指標・方針を最初に決めておく ◦ 終盤にTrustLBからTrustCVに切り替えても手遅れだったりする ◦ TrustLBかTrustCVの二択だけでなく、両方使うことも含めて決める • 最終サブ選択 ◦ 状況次第だが、Shakeしそうなときは出来るだけ相関の低い2つのものを選ぶ
  17. その他 • ShakeDownして自ら辛い経験をすることで次から気を つけられるようになる ◦ Malware以降、異常に考えるようになった ShakeDownの数だけ強くなれる

  18. End