機械学習系コンペの意義
参加者にとっての意義
- 機械学習のスキルアップ
特徴量作成、モデリング、可視化など - エンジニアリング技術のスキルアップ
コードの構造化、awsの利用など - スキルの客観的評価
- 賞金
モチベーションや質を担保する要因の一つだが、賞金自体は割に合わないでしょう - 楽しさ
価値があるから楽しい、楽しいから高いレベルの人が集まって価値がある、の循環
参加者のつらみ
- かなりの体力と精神力を費やすことになる(週8時間で良い順位をとるのは厳しい)
- 精度が出ない、順位が上がらない
- 頑張ってもkaggle master連合軍や500 model stackingに負けるとつらい
- leakなど、あまり意味のないソリューションを頑張んなきゃいけないことがある
スポンサーにとっての意義
- リクルーティング
- 宣伝効果
- 良い知見やソリューションの獲得
- モデリング
- データに関する知見、良い特徴量
- 可視化手法
良い知見やソリューションを獲得できるかは分の良くない賭けである気がする(後述)
そのほかの意義
- 効果的でわかりやすいツールや手法を広める役割
xgboost, stacking, keras, t-sne など
データセットとソリューション
- 機械学習系コンペは問題設定が難しいように思う
- 理想は実務に役立つ、知られざる知見を得ることだが、そんなものが都合よくあるとは限らない
- 印象に残っているソリューションはTaxi Trajectory PredictionやNOAA Right Whale Recognition。これらは実際に役に立ちそう。
- 一方で入賞者のソリューションが何の役にも立たなそうなコンペもある
- 純粋に技術を競うのなら、人工的なデータセットを作ってそれの”謎を解く"方がよいのかもしれない。ただ、それでは機械学習の実世界との関わり感が失われてしまう
train/test split、データ量
- trainとtestが均一なsplitでデータ量が十分にある場合、評価指標にもよるが、多数のモデルによるstacking競争になる可能性がある。ただ、ひたすらcross validation scoreを高めることに注力できるので、スキルアップには良い。
- trainとtestが均一でない場合(時系列データやtrain/test splitが何らかのグループで分かれている場合)は、stacking競争になりにくいが、train/testの違いを考察したり、LBに投げてみて良いスコアを探すなどが必要なケースがある。下手すると運ゲーになることもある。
どんなコンペがやりたいか?
個人的に一番楽しそうなのは強化学習を用いたAIの対戦ゲーム。
codingameはローカルで流せないようなのと、UIがちょっと見た目重視過ぎる気がするのがいまいち。
code vsが求められている?