- Description
- コンペの概要。重要な情報が隠れていることもあるし、問題が出される背景を知ることでアイディアも湧くかもしれないので必ず目を通すこと
- Evaluation
- 評価指標。評価指標によって特徴があるので把握しておく
- LOC-AUCなら値の大小関係だけが重要で、値自体には意味がない
- RMSLEなら小さい方の値を外すと大きなペナルティになりうる みたいな
- Timeline
- コンペのスケジュール。締切はUTC 23:59と書かれていることが多いので、日本時間になおすと朝9時になる
- Prize
- 賞金。ほしい。
- たまに良いKernelに対してとか、特定のライブラリを使ったらとか、別の賞があることも
- Kernel FAQ
- Kernel提出必須のコンペの場合存在する。実行時間制限がここに書かれているので、注意する
各データの役割や各列の意味、データが抽出された背景などが書かれている。 特にコンペ序盤は、このページと見比べながらデータを眺めると良い。
他の人が書いたコードを見ることができる。 左上の並べ替えで「Hotness」や「Most Voted」に並べ替えて見ると良い。 コンペ序盤は、「EDA」や「starter」、「beginner」などで検索して見るのも良い。
EDAはExploratory Data Analysis(探索的データ分析)の略で、データの特徴を掴むためにいろいろ可視化を行っているもの。 眺めるだけでなく、Fork(複製)して自分で実行してみるとさらに気づきがある。
最近ではGPUを使うこともできるようになっているので、多少のDeep LearningならKernel上でも実行可能。
コンペに関する議論が行われるところ。 コンペに参加したら、青色になっているスレッドに全て目を通す。これらは運営が作ったスレッドで、コンペの背景が書かれていることが多い。
全てに目を通すのは難しいかもしれないが、「Hotness」「Most Voted」でソートして上位に来るものは目を通しておいたほうが良い。
現在の順位。
注目すべきはPublic LeaderboardとPrivate Leaderboardのデータ数の比率。Publicが少ない場合は、大きな順位変動(shake-up)が起こるかも。
コンペのルールが書いてある。
注目すべきは
- 1日のサブミット回数
- 最終的に選べるサブミットの数
- External Dataの使用可否
- チーム人数の上限
あたり。
特にExternal Dataについてはスコアに直結するので、扱いをきちんと把握しておくこと。多いのは「使用禁止」もしくは「使用してもよいが、公式スレッドに使ったデータ書いてね」というスタイル。 後者ならばDiscussionに「External Data」みたいなスレッドがあるはず。
また、ほとんどのコンペにおいて「private sharing」が禁止されている。これは、チームを組んでないのにコンペの情報を共有しちゃだめですよ、ということ。厳密に守るなら、KaggleのDiscussion以外でディスカッションしてはいけないということになる。
Leaderboard上での表示名を変えられる。 また、チームを組みたい人に申請を送ることも出来る。
チームを組むと、投稿制限がチーム単位でかかることに注意。
基本的には、自分が興味を持てる/面白そうと思うコンペに参加すると良い。 逆に、避けたほうが良い基準は以下の2つ。
- データが大きすぎる(メモリに乗らないサイズのテーブルデータなど。特徴量作成やモデルの訓練以外に気を配るべきことが多い)
- Leaderboardが崩壊している(ありえない高スコアが大量に並んでいるなど。がんばっても順位が上がらなかったりしてつまらない)
まずは軌道に乗るのが大事。個人的におすすめの流れは以下の通り。 気づきがあったら全てメモをとっておくと良い。
- Descriptionをチェックして、コンペの背景を把握
- データをダウンロード
- Jupyter Notebookでデータの様子を確かめる。どういう値が入っていて、欠損がどれくらいあって、など。この際、Dataタブと照らし合わせながら疑問点を書き出す
- 最初のサブミット(ベースライン)を作る。精度は気にしなくていいので、starter kernelを参考にしつつ提出。まずはLeaderboardに自分の名前を載せる
- あとは自分のアイディア、Kernel、Discussionに基づいて特徴量やモデルの改善を繰り返す
日本のkagglerたちが集まるslackチャンネルがあります。 初心者大歓迎で、日々活発に質問や議論が行われています。
https://kaggler-ja.herokuapp.com/
からメールアドレスを入れると招待リンクが送られます。
#beginners-help
というチャンネルが初心者が質問するためのチャンネルなので、ここでばしばし質問すると良いでしょう。
ただし、現在進行中のコンペに特有の内容についてはprivate sharingに該当するためお答えできません。
データ分析や各種手法、前処理の方法などについて、一般的な質問であれば何でも答えが返ってくると思います。
力をつけるにはこうしたらいいんじゃないかな、ということ。
- ひとつのコンペを完走する(最初からコミットし、最後まで改善を続ける)
- 過去の似たコンペの上位solutionを漁る
- コンペが終わったら復習する
- 上位勢のsolutionを読む
- 再現を行ってみる
- 使えるコードを自分のライブラリに書き足す