月刊: Kaggleは役に立たない

Kaggle Meetupのネタにでも、ふわっとした文章を書いてみる。
個人の意見です&ここ1-2年の状況変化は追えていないかも。

(追記:タイトルは「月刊競技プログラミングは役に立たない」という競プロ方面のネタから来ています)

どうでもいい技術、どうでもいくない技術

Kaggleで勝つための技術を書き連ねてみる:

  • Python, R, ライブラリの使い方
  • 特徴量の作成
  • データについての考察、EDA
  • モデルの使い方、パラメータチューニング
  • 評価指標についての考察
  • DiscussionやWinner's interviewを読む英語力
  • 柔軟に作業や分析を回すためのクラス・ワークフロー・ログなどの実装
  • GCP, AWS, BigQueryといったサービスの運用
  • 論文を読んで手法を参考にしたり実装したりする力
  • 折れない心

改めてまとめてみると普通に学んで損のないものばかりな気がしてきた。

ただ、実際には、

  • 脳みそを空っぽにしていろんなモデルや特徴量を作ってアンサンブル
  • たくさんランを流してxgboostのscoreの流れをぼーっと眺める
  • 画像コンペでのトレーニングデータへのラベリング

とか、何やってんだろと思うこともあるのは確か。

Bestfitting氏のインタビュー

http://blog.kaggle.com/2018/05/07/profiling-top-kagglers-bestfitting-currently-1-in-the-world/

現在のKaggle User Ranking 第1位のBestfittingのインタビュー。
ちゃんと自分を律しているなぁという印象。
人によって興味深いポイントはそれぞれだが、個人的にはコンペを始める前に類似のコンペのSolution(にとどまらず論文まで)をおさえることをきっちりやっているのは偉いと思った。
(どうやってその時間を捻出するのだろう…)

競プロとの違い

以下のTweetが本質を突いているのかなと思った。

https://twitter.com/stakemura/status/989352911665676289

私としては、

競プロ(特にアルゴリズム

  • 「純粋」な印象。範囲が定められているが、深度が要求される。
  • 強い人には絶対かなわない感がある(逆に競プロが強い人がKaggleにアジャストすると楽に勝てるイメージ)

Kaggle

  • 「複線的」でいろんな方向から攻めなくてはいけない印象。
  • 実世界への適用が意識されている
  • 実力差があっても、攻め方や頑張りや運でワンチャンある感じ。

Kagglerは仕事ができる説

「Kagglerは仕事ができる」とか吹いても良いんじゃないかと思った。

  • 複線的でいろんな技術が要求される
  • どのモデルやどの特徴量から作るか、手元のCVスコアとPublic LeaderBoardのスコアが合わないときに何を疑うか、手を動かすのか情報収集をするのか、優先順位をつけて攻めていく必要がある
  • 計算時間やメモリ使用量だけでなく、睡眠時間や現実でのお仕事の状況を含めたリソース管理が要求される

楽しみ方はいろいろ

"ガチ勢"はgold medalを基本目指していると思いますが、他にもいろいろと楽しみ方はある。

https://twitter.com/smly/status/989359778370469888

金メダルを目指す

競技者としては、ここがベースになりそう。
ほぼ金メダル=Kaggle Masterであり、対外的にもなんか強そうな印象を与えられる。
hard workを積み重ねないとgold medalには届かないのはメルカリのceremonyでも共通意見だったか。 (たまにラッキーパンチが入るという噂もある)

銀メダルを目指す

そこまでガチではなく、単純に学びたいとか、データ分析と違う業種にいるけど実力を示したいとか、という場合には銀メダルを目指すのが良いと思う。
実力証明としては、銀メダル(できたら複数)で十分価値はありそう。
学びの場としても、ここに至るまでが一番費用対効果が高そう。

beat the benchmarkを自力で超えられる力をつける

銅メダルは入るための基準がコンペによってまちまちな印象があるので、これを目指すというのはあまりお勧めしないかも。
どのコンペでも大体誰か優しい人がbeat the benchmark(以下btb)と言われる、基本的なモデリングを行ったSolutionをKaggle Kernelに上げてくれるのですが、 銅メダルを目指すよりは、btbを自力で超えられる力をつけるということを目指して結果として銅メダルなどがついてくる方が良さそう。

上の順位を目指さない

こんな感じで、興味や軸をずらして参加してみるのもあり。

  • 可視化、EDAに絞ってkernelを眺めてみたりまとめてみる
  • 特定のモデル・ライブラリについて深く追う
  • Winners' Interviewで人間ドラマを追う
  • Datasets AwardやKernels Awardを目指してみる