パワーアップしたKernelでKaggleに飛び込もう


## はじめに

Kaggleって、初めての人にはちょっと敷居が高いですよね。
私も「猛者ばかり集まっていて辛い」「初心者だと戦えないだろうからまだ使わなくていいや」という印象でアカウントは作ったもののしばらく使っていませんでした。

しかし、最近Kaggleのコンペに参加してみようという社内の有志の集まりがありチャレンジして見たところ、やはり学びが多くて面白く、これからはもっと使ってみようと考えるようになりました。

そこで、まだKaggleを使ったことがない人向けの取っ掛かりとして、この記事を書いて見ることにしました。

## 最近KaggleのKernelがパワーアップした

KaggleにはKernelという機能があり、自分で環境を用意しなくてもブラウザ上で簡単にコードを実際に動かすことができます。さらにそれを公開できるようになっており、他のコンペ参加者とコードを共有することができます。（もちろん非公開のまま使うことも可能）

簡単な処理であれば手軽に動かせることは大きなメリットですが、やはりマシンパワーが必要な処理を呼び出す場合には厳しく、一つの処理で20分でタイムアウトしてしまうため、少し時間のかかる処理には使用できないという欠点がありました。
しかし、最近リソースが増えて、使い勝手が良くなりました。

![Kobito.C3EZCh.png](https://qiita-image-store.s3.amazonaws.com/0/73759/03dcb127-7b96-559d-ec0d-dcf613e8d0d2.png "Kobito.C3EZCh.png")

http://blog.kaggle.com/2017/09/21/product-launch-amped-up-kernels-resources-code-tips-hidden-cells/

4CPU,、メモリ16GBが使えるというだとローカルの環境で動かすよりも速いという場合もあるかもしれません。環境準備が不要でこれだけのリソースが使えるというのは大きな進歩ではないでしょうか。

## タイタニックのコンペに参加する（下準備）

kaggleのアカウント作成後、まずはkaggle入門用に用意されている下記のTitanicのコンペに参加します。

Titanic: Machine Learning from Disaster
https://www.kaggle.com/c/titanic


`Join Competition`を押すと、コンペへの参加が完了です。

![Kobito.n2wNct.png](https://qiita-image-store.s3.amazonaws.com/0/73759/7baec624-27c9-0687-d602-5c2ecdce92c2.png "Kobito.n2wNct.png")

※上記のスクリーンショットは別のコンペのものです。


## Kernelを使って分析を始めてみる

右上に`Kernels`というリンクがありますので、これを選びます。
![Kobito.vepVhP.png](https://qiita-image-store.s3.amazonaws.com/0/73759/2942d99f-9386-6639-d117-01d3e8804281.png "Kobito.vepVhP.png")

`New Kernel`を押して新しくKernelを作ります。Script/Notebookどちらでも好きな方でOKですが、まずはJupyter Notebookが使える`Notebook`を選択して見ましょう。

![Kobito.p9Wu0U.png](https://qiita-image-store.s3.amazonaws.com/0/73759/f8ccc1ec-5bd8-f927-5a44-1d1178506891.png "Kobito.p9Wu0U.png")


分析対象のデータソースを選ぶため`Add Source`をクリックします。「Competition」の中から、先ほどのタイタニックのコンペを検索し選びます。

![Kobito.gerUVg.png](https://qiita-image-store.s3.amazonaws.com/0/73759/b5181c30-20f9-37fa-2f13-0a6476fd7309.png "Kobito.gerUVg.png")

セルに入力されたコードを実行してみると、「../input」のディレクトリ内にデータソースのファイルがあることがわかります。こちらのファイルを分析に使用していきます。

![Kobito.eOwVHZ.png](https://qiita-image-store.s3.amazonaws.com/0/73759/b67f8926-1056-fc35-3316-01b4d0b7da5a.png "Kobito.eOwVHZ.png")


様々な方がこのタイタニックのデータでの分析の方法を記事にされていますので、この記事では割愛します。
機械学習が初めての方は、下記のような記事を参照して動かして、予測結果を出してみてください。

タイタニック号乗客の生存予測モデルを立ててみる
https://qiita.com/suzumi/items/8ce18bc90c942663d1e6

Kaggleでタイタニックの生存者を予測をしてSubmitしてみた
https://qiita.com/teru855/items/02bd885179bd8e39ba43

タイタニック生存者予測Tutorialの一覧
http://kagglechallenge.hatenablog.com/entry/2015/02/13/193155


## 注意点1：データソースのディレクトリ

ローカル環境でJupyter notebookを使う場合との違いを注意点として記載します。

1点目はデータソースのある場所です。
すでに書いてしまいましたが、 **「../input」のディレクトリ内に分析対象のデータソースのファイルが置かれます**ので、ここからデータを読むようにします。

```
df= pd.read_csv("../input/train.csv")
```

## 注意点2：結果の出力方法

2点目は結果の出力先についてです。
まずはcsvファイルとしてカレントディレクトリに出力します。

その後Notebook 編集中画面から、右上の`Publish`を押すとKernelのメニュー画面に戻ります。そこに `Output` タブが出てきて、出力したcsvファイルが見えるようになります。

![Kobito.kTRtyx.png](https://qiita-image-store.s3.amazonaws.com/0/73759/976bf647-e925-6a0c-1680-06f4f02057f8.png "Kobito.kTRtyx.png")


しかし、`Publish`を押した直後はすぐにタブが現れないようです。
**`Output`のタブが出ない場合は、少し待ってページをリロードしてみてください。**

この出力したcsvファイルをDownloadして、コンペのページに戻りSubmitすることで、あなたの名前がLeaderboardに載り、順位がわかります。


## まとめ
KaggleのKernelを使うことで、上記のように非常に簡単に機械学習を始めることができます。

この記事では書きませんでしたが、コンペの中では様々な人が試行した内容をKernelとして公開しており、そのKernelをフォークして自分で動かしたり、編集したりすることもできます。

環境構築やデータ準備などの面倒な部分をすっ飛ばして始めることができますので、是非試してみてください。