2021/3/2の分析コンペ勉強会で話した内容です。
https://sansan.connpass.com/event/202716/
短期間コンペの戦い方2021/ 3/ 2 分析コンペ勉強会pao
View Slide
クイズです
Q. なんのグラフ(ヒストグラム)でしょう?Count
https://www.kaggle.com/kaggle/meta-kaggleCount※集計方法● 2016年以降● Tierありのコンペで集計A. Kaggleのコンペ期間(日数)2〜3ヶ月のコンペが大半Q. なんのグラフ(ヒストグラム)でしょう?
長くない?
もっと短い期間のコンペについてお話しますex) atmaCup, KaggleDays, 学生向けコンペイベント
自己紹介● pao● データサイエンティスト@ABEJA● Kaggle Master● atmaCupが得意● 息子が可愛いすぎるpao (@pppaaaooo)
atmaCupについて● atma株式会社が運営しているコンペ● 1day ~ 2週間くらいの短期間● コンペ・サイトの質が高い● 初心者向けの講座などもありつつKagglerたちが多数参加している良質な短期間コンペの一つ(オススメ)
atmaCup戦績
目次● 短期間コンペと長期間コンペ● 戦い方・戦略について
コンペの長さによる比較 〜良いところ〜コンペの長さ 個人的に良いところ長い● 新しいことにじっくり時間をかけて取り組める● 多少の失敗は時間でカバーできる短い● 短時間で効率的にデータ・タスクによる学びを得られる● 限られた時間で効率的に精度を上げるやり方を学べる● LeaderBoardのレース感覚が強くて楽しい長いコンペ・短いコンペそれぞれの良さがある
コンペの長さによる比較 〜良くないところ〜コンペの長さ 個人的な短所長い● 外れコンペに取り組んでしまった時にダメージが大きい● (小さな子持ちには)フルコミットすると健康や家庭に支障がでてきてしまう短い● 新しいチャレンジの難易度が高くなる(1つ2つ新しいチャレンジをすると他のことをする時間がなくなる)長いコンペ・短いコンペそれぞれの短所がある
個人的なオススメ長いコンペと短いコンペ、両方とも参加する短期間コンペ長期間コンペ相互に学びが活きてくる● 色んな手段を試せる● 一つのデータ・タスクへの対策を幅広く知れる● どんな手段がより効果的かを学べる● 時間意識が芽生える
はじめにあくまで私の目線での短期間での戦い方をまとめたものです(人によって合う合わないあると思います)
精度のイメージベースラインから精度の限界までの道のり誰でもできるベースライン技術的に可能な最高精度精度
短期間と長期間での最終到達点ベースラインから精度の限界までの道のり誰でもできるベースライン技術的に可能な最高精度精度? この精度の差は何で生まれているか?
精度の分解基本的な手法やデータ・タスクに応じたアイデアの積み重ねで成り立っている※あくまでイメージ。これらの割合やキーの数などはコンペに寄って大きく変わる精度はたくさんの積み重ねだが、数個のアイデアが大半を占める精度を分解テーブルデータの例➔ アイデア1: モデルをデータによって分ける➔ アイデア2: TargetEncoding➔ アイデア3: オリジナル特徴量(ex: 1つ前のユーザの行動との差分)➔ アイデア4: カテゴリ変数のWord2VecによるEmbedding数個のアイデアで大半を占めるアイデア2アイデア1アイデア3
短期間と長期間での最終到達点精度の最終到達点は期間によって違う誰でもできるベースライン技術的に可能な最高精度精度アイデアの積み重ね
短期間と長期間での最終到達点精度の最終到達点は期間によって違う誰でもできるベースライン技術的に可能な最高精度精度アイデアの積み重ね短期間と長期間の差短期間でできること短期間コンペの優勝ライン長期間コンペの優勝ライン
短期間と長期間での最終到達点長期間と短期間でどこまでアイデアを組み込めばよいかが変わる短期間コンペの優勝ライン長期間コンペの優勝ライン● 長期間コンペで勝つには出来る限り全部のアイデアを組み込まないと勝てない● 短期間コンペの場合は重要なアイデアを抑えておけば勝ちに近づく
限られた時間で何をすれば良い?
限られた時間で何をすべきか?思いつくアイデアからやることを「効果的にしぼる」思いつくアイデアたちの例● アイデア1:LightGBMの代わりにCatboostを使う● アイデア2:ユーザIDをTargetEncoding● アイデア3:Oputunaでハイパラチューニング● アイデア4:一部の特殊な期間を学習から外す● アイデア5:外れ値の補正● アイデア6:ネガティブダウンサンプリング・・・・すべてのアイデアを試す時間はない「効果」x「実装時間」x「成功確率」で決めるかつ重要なアイデアを抑えられるように「効果」を優先する
限られた時間で何をすべきか?思いつくアイデアからやることを「効果的にしぼる」思いつくアイデアたちの例● アイデア1:LightGBMの代わりにCatboostを使う● アイデア2:ユーザIDをTargetEncoding● アイデア3:Oputunaでハイパラチューニング● アイデア4:一部の特殊な期間を学習から外す● アイデア5:外れ値の補正● アイデア6:ネガティブダウンサンプリング・・・・すべてのアイデアを試す時間はない「効果」x「実装時間」x「成功確率」で決める効果:低そう(カテゴリ特徴が少ないし)実装時間:短い成功確率:30%くらい→「効果低そうだし後回しにするかー」かつ重要なアイデアを抑えられるように「効果」を優先する
限られた時間で何をすべきか?思いつくアイデアからやることを「効果的にしぼる」思いつくアイデアたちの例● アイデア1:LightGBMの代わりにCatboostを使う● アイデア2:ユーザIDをTargetEncoding● アイデア3:Oputunaでハイパラチューニング● アイデア4:一部の特殊な期間を学習から外す● アイデア5:外れ値の補正● アイデア6:ネガティブダウンサンプリング・・・・すべてのアイデアを試す時間はない「効果」x「実装時間」x「成功確率」で決める効果:成功したら高そう実装時間:中成功確率:10%くらい「Overfitしそうだけど成功したらかなりスコアあがるのでやるか」かつ重要なアイデアを抑えられるように「効果」を優先する
ゲームみたい
実質ゲーム限られたMP(実装時間)でいかに相手(コンペ)のHPを削るかのゲームHPTOP10 優勝入賞ハイパラチューニングモデルの分離カスタムLossMagic特徴量探しMP(残り実装時間) : 20めいちゅうりつ:80%ダメージ:20しょうひMP:3まるうぇあコンペ
どこで実力に差が出るか?ゲームで例えるとざっくり4つに分けられる● どんな技を使えるか?● どの技を選ぶか?● 技の消費MP(実装時間)を減らせるか?● 命中確率や効果をいかに正しく見積もれるか?
どこで実力に差が出るか?ゲームで例えるとざっくり4つに分けられる● どんな技を使えるか?● どの技を選ぶか?● 技の消費MP(実装時間)を減らせるか?● 命中確率や効果をいかに正しく見積もれるか?➢ めちゃくちゃ大事。ただし、長期コンペでも同じ。➢ 経験、INPUT量がものをいう➢ 相手に応じた技を生み出すことも大事➢ サーベイ・EDAで技を増やすというのもある
どこで実力に差が出るか?ゲームで例えるとざっくり4つに分けられる● どんな技を使えるか?● どの技を選ぶか?● 技の消費MP(実装時間)を減らせるか?● 命中確率や効果をいかに正しく見積もれるか?➢ 時間が短いほど重要になる➢ 「どの技がどういう相手(タスク・データ)に効きやすいか?」を経験積んで学ぶことが重要➢ 技の順番も大事だったりする
どこで実力に差が出るか?ゲームで例えるとざっくり4つに分けられる● どんな技を使えるか?● どの技を選ぶか?● 技の消費MP(実装時間)を減らせるか?● 命中確率や効果をいかに正しく見積もれるか?➢ 時間が短いほど重要になる➢ 「どの技がどういう相手(タスク・データ)に効きやすいか?」を経験積んで学ぶことが重要➢ 技の順番も大事だったりするatmaCup#9の優勝ソリューションでこの観点に近い形でまとめていますhttps://speakerdeck.com/go5paopao/atmacup-number-9-1st-place-solution
どこで実力に差が出るか?ゲームで例えるとざっくり4つに分けられる● どんな技を使えるか?● どの技を選ぶか?● 技の消費MP(実装時間)を減らせるか?● 命中確率や効果をいかに正しく見積もれるか?➢ 1つの技の消費MP(実装時間)が少ないほど、たくさんの技を使える➢ 消費MP(実装時間)をへらす方法a. 「その技を何度も使う」 or 「装備(パイプラインやスニペット)の用意」b. 相手の傾向が事前にわかっている場合はその準備をする
どこで実力に差が出るか?ゲームで例えるとざっくり4つに分けられる● どんな技を使えるか?● どの技を選ぶか?● 技の消費MP(実装時間)を減らせるか?● 命中確率や効果をいかに正しく見積もれるか?方法2の例● atmaCup#6でSansanのネットワークデータということが事前に分かっていた● GNN(Graph Neural Network)が使えるかどうかが重要な気がした● コンペ当日までに以下を実施○ GNNのサーベイ(広く浅く)○ TorchGeometric(PytorchのGNNライブラリ)のドキュメントを一通り読む→結果GNNを使ったソリューションで 3位➢ 1つの技の消費MP(実装時間)が少ないほど、たくさんの技を使える➢ 消費MP(実装時間)をへらす方法a. 「その技を何度も使う」 or 「装備(パイプラインやスニペット)の用意」b. 相手の傾向が事前にわかっている場合はその準備をする
どこで実力に差が出るか?ゲームで例えるとざっくり4つに分けられる● どんな技を使えるか?● どの技を選ぶか?● 技の消費MP(実装時間)を減らせるか?● 命中確率や効果をいかに正しく見積もれるか?➢ 正しく見積もるポイント○ 1:仮説・根拠を用意して見積もる○ 2:その技をいかに使ったことあるか➢ 様々な情報から命中確率や効果を見積もれるかも大事○ Feature Importance, Discussion, EDAなどなど
最後に● スコアを上げるための話をしたが、コンペの楽しみ方は人それぞれ● atmaCup#10が今週金曜日からあるらしい○ 1週間の短期コンペ○ 初心者歓迎らしいので始めての方も是非!!● 自分もまだまだ出来ていないことが多いので頑張る
ありがとうございました