内輪でやろう！KaggleのInClassコンペ

# はじめに

こんにちは。現在「Kaggler-ja」というKaggleでの情報共有を行うSlackに参加しています。その中の「beginners_bootcamp」というチャンネル内のメンバーでInClassコンペという内輪で開催できる大会を開こうとしています。

そこで簡単にInClassコンペの作成方法をまとめました。

## KaggleのInClassコンペとは

[公式サイト](https://www.kaggle.com/about/inclass/overview)

通常のKaggle Competitionの内輪バージョンです。現在3500以上のコンペがあり、イメージとしては大学の課題や社内コンペで使用されている感じです。(Qiitaに投稿する前に試しに1つ大会を開きました)

![inclass_comp.PNG](https://qiita-image-store.s3.amazonaws.com/0/194085/a91b4d26-6631-7e6a-4fcc-fc834b3f8a03.png)

## InClassコンペの始め方

私は[コチラ](https://storage.googleapis.com/kaggle-media/random/InClassSetupGuide.pdf)を参考にしました。

[InClassの公式サイト](https://www.kaggle.com/about/inclass/overview)に移動し、下のほうにある「Create Competition」を選択します。

そのあと、以下のような画面に遷移するので以下の情報を入力します。

1. Competitionの名前
2. Competitionの説明
3. CompetitionのURL

![01.jpg](https://qiita-image-store.s3.amazonaws.com/0/194085/e2320ee9-5e32-8130-fb10-84a7865ad625.jpeg)

以上を入力し「Create Competition」をクリックすると、今度は以下のような画面に移ります。

![after_create.PNG](https://qiita-image-store.s3.amazonaws.com/0/194085/b3110fe7-740d-7ec7-53bd-7c3406e67e52.png)

Competitionの管理画面に移りますが、当然公開などしていないので管理者である自分とKaggle側のみが閲覧できます。

Competitionを開くには、「Host」タブの下にある「Launch Checklist」で必要事項を埋めていく必要があります。

![Launch_CHecklist.PNG](https://qiita-image-store.s3.amazonaws.com/0/194085/0baa80a6-679f-c7a7-166c-26208a676339.png)

必要事項は以下になります。

1. 答えのアップロード
2. 答えの列をマッピングして、評価方法を決める
3. サンプルの列をマッピングして、評価方法を決める
4. サンプルを提出して、実際に評価を行う
5. 使用データをアップロード
6. 期限を決める
7. 使用するデータの説明を記述する

そこでまず使用するデータを決める必要があります。

## 使用したデータセット

コンペで使用するデータセットは、Kaggleの[Datasets](https://www.kaggle.com/datasets)から選択するか、練習用データとしてまとめられている[コチラ](https://www.kaggle.com/annavictoria/ml-friendly-public-datasets)から選びます。

今回私は、[「Exoplanet Hunting in Deep Space」](https://www.kaggle.com/keplersmachines/kepler-labelled-time-series-data)を選択しました。

![exoplanet_dataset.PNG](https://qiita-image-store.s3.amazonaws.com/0/194085/fc610378-6edf-8308-b45f-db6f6c427a28.png)


こちらのデータセットは確認してみるとわかりますが、TrainとTestの2つからなる簡単なデータセットであり、どちらも答えである「Label」と特徴量を含んでいるデータになります。

ではこれらのデータを加工して、管理画面の「Data」タブからアップロードを行います。

### Trainデータ

これはそのまま加工せずにアップロードします。

### Testデータ

最初の列にある「Label」を削除して、アップロードします。

![data_upload.PNG](https://qiita-image-store.s3.amazonaws.com/0/194085/ce78b5ef-4664-e550-bc72-b33d679296fa.png)

すると以上のようにデータがアップロードされていることが確認できます。

この後は同じ画面の下部にある「Data Description」を編集します。
今回は元のページの説明をそのままコピペしました。

![data_discription.PNG](https://qiita-image-store.s3.amazonaws.com/0/194085/89d98a77-74cd-c155-38ae-2beeb95adb13.png)

赤線部分は追加でサンプルをアップロードした部分です。
なくても大丈夫ですが、あったほうがいいとは思います。

あとは「Overview」タブの「Description」ページと「Evaluation」ページも開催する大会の種類に合わせて変更してください。

## 大会の設定を行う

「Host」タブの部分で、大会について様々な設定を行うことができます。
「Settings」の「Deadline」は必ず設定するようにしてください。

その他にも1日の提出数や、チームの制限など設けることができます。

![comp_settings.PNG](https://qiita-image-store.s3.amazonaws.com/0/194085/3a07961a-62fc-59ee-69f1-1d8e5730fdc6.png)

このとき「Save Changes」を忘れないようにしてください。

なお内輪で開く際は、「Privacy」ページからPrivacyを「Limited」にしておき、参加者に下にあるURLを共有してください。

![Privacy_Limited.PNG](https://qiita-image-store.s3.amazonaws.com/0/194085/ee81b483-905f-96af-c4b1-4866636212b6.png)


## 正解データとサンプルデータ

以下の画面から正解データやサンプルデータをアップロードします。

![Evaluation_01.PNG](https://qiita-image-store.s3.amazonaws.com/0/194085/8a8be567-b5f7-c1d0-50b2-4f24ce002075.png)


まず正解データは以下のように「Id」と「Label」が必要になるので、TestデータのLabel以外のデータを削除して、一番右の列にIdを加えたものをアップロードします。

|Id|Label|
|:--|:--|
|1|1|
|2|2|
|3|1|
|...|...|

サンプルデータに関しては、今回は正解データの「Label」をずべて2か1にしておきます

|Id|Label|
|:--|:--|
|1|1|
|2|1|
|3|1|
|...|...|

このとき問題は「2値分類」なので、評価方法は単純に「Accuracy」を選択します。
なお正解データのうち、「Public Leaderboard」と「Private Leaderboard」にどの程度使用するのかを決めることができます。デフォルトは30%が「Public」に使用されます。

![Evaluation_02.PNG](https://qiita-image-store.s3.amazonaws.com/0/194085/e330d7ed-6a1a-e59f-7acf-4497a3ba34ed.png)

次にサンプルをアップロードします。

![Evaluation_03.PNG](https://qiita-image-store.s3.amazonaws.com/0/194085/7f0c58a3-b071-f4e4-df3c-bed76e60e75e.png)

## Sandboxで試しに提出してみる。

最後に「Sandbox Submissions」からサンプルを提出し、実際に正しく評価できているのかどうか確認します。

![sandbox_after.PNG](https://qiita-image-store.s3.amazonaws.com/0/194085/33bf020b-6c3b-ab58-aeb3-ef62e2debe62.png)

このさい学校のテストなどで基準を設ける際は、ベンチマークの欄にチェックをしておきます。

ここまですべてうまくいっていると、「Launch Checklist」ページのすべてToDoが終了しており、大会を開催することができます。

## 終わりに

今回は「2値分類」という単純な課題であったためすんなりいきましたが、他の問題などでは評価方法などを検討する必要があるのかなと思います。

いきなり大会に出場することに抵抗がある人は、友達や社内の中でInClassコンペを開いて、その中でKernelを提出したり解法について議論していきましょう！