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. • 名前 ◦ Pao • 所属 ◦ JTC(もうすぐ卒業予定) • 悩み

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

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

    • Testは本当にランダムなAssessmentでTruncatedしたものなのか? ◦ ランダムにsession_idをとってきて、その次の Assessmentにしたのではないか? ◦ 結果のないAssessmentも含めてランダムでとってきて、結果がない場合は次の Assessmentを使ったの ではないか? PublicLBはどこまで信用できるのか?
  5. ここ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
  6. ShakeUp/ Downにはいろんな要因がある • コンペ自体の性質によるもの ◦ 評価指標が不安定 ◦ Publicのデータ量が少ない ◦ PublicとPrivateでデータの質が違う

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

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

    ▪ 相関がある時系列的なもの ←頑張れる ▪ 相関がないもの ←仕方ない(クソコンペ) • 参加者要因 ◦ ハイスコアカーネル&コピー勢 ←気をつけれる • 個人要因 ◦ PublicにOverfitした特徴量・モデルを作る ←気をつけれる DSB2019での主な要因
  9. PublicにOverfitした特徴量・モデルを作る • CV気にせずサブミットしまくり、LBをあげる • 何か分からないけど、スコアが上がった ◦ 解釈できない場合、危険(特にテーブルデータ) よくある要因 個人的に気をつけていること •

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