データ分析能力を競うサイト「Kaggle」のブラウザからアクセスできる機械学習環境「Kernel」を使ってデータサイエンティスト入門

f:id:karaage:20180409012426p:plain:w640

Kaggleとは

 データ分析をスポーツのように競うプラットフォーム、それが「Kaggle」らしいです。データサイエンティストのオリンピックみたいなものですね。概要は以下記事がわかりやすいと思います。

 重要なのは「Kaggle」が、単にデータを競うサイトというだけでなく、その分析ノウハウだったり、分析する環境まで提供するプラットフォームになっている点ですね。機械学習・データサイエンスに興味ある方は必見のサイトと思います。

「Kaggle」の「Kernel」を使ってチュートリアル「タイタニックチャレンジ」をやってみる

 「Kaggle」で特に凄い点が「Kernel」というブラウザベースで実行できる、機械学習の環境が用意されていて無料で使えるところです。以前紹介した「Google Colaboratory」と同様のサービスですね。多少UIは異なりますが、Jupyter Notebookがベースなので、それほど違和感なく使えると思います。

 今回は、この「Kernel」を使って「Kaggle」の代表的なチュートリアル「タイタニックチャレンジ」に参加して実際に結果を登録するところまでやってみたいと思います。

「Kernel」の起動

 最初に「Kaggle」の登録をすませてください。ここの説明は割愛します(英語ですが、調べれば日本語の解説サイトなどでてくると思います)。

 登録したら、まずは以下の「タイタニックチャレンジ」の「Kernel」のページに移動します。ブラウザは「Google Chrome」を使用するのが良いようです。

Titanic: Machine Learning from Disaster | Kaggle

 以下のような画面が表示されるので、右真ん中の「New Kernel」をクリックします。 f:id:karaage:20180409010723p:plain:w640

 以下画面が表示されたら、右側の「Notebook」を選択します。 f:id:karaage:20180409010725p:plain:w640

 以下のような画面が表示されます。 f:id:karaage:20180330000235p:plain:w640

 あとは、「Jupyter Notebook」や「Google Colaboratory」と同じように、Markdownでコメントを入れたり、Pythonのコードを実行できます。

 「Shift + Enter」でデフォルトで入力されているコードを実行してみましょう。

f:id:karaage:20180330000243p:plain:w640
 "../input"というディレクトリに、「タイタニックチャレンジ」の学習データ(train.csv)とテストデータ(test.csv)が用意されているのが分かります。

チュートリアルの実行

 後は、以下のサイトをまねて、チュートリアルを実施していきましょう。

 上記サイトは「Kernel」を使用することを前提に書かれていませんが、「Kernel」で使う場合は、基本的には以下のところを

train = pd.read_csv("../ディレクトリを指定/train.csv")
test = pd.read_csv("../ディレクトリを指定/test.csv")

 以下のように変更するだけで、他のコードはそのまま実行できます。

train = pd.read_csv("../input/train.csv")
test = pd.read_csv("../input/test.csv")

 以下に私が実際に「Kernel」でチャレンジした実施例を公開しておきますので、もしよろしければ参考にして下さい。

Titanic Tutorial | Kaggle

「Kaggle」への投稿と順位確認

 一通りチュートリアルを終えて、csvの書き出しまで終わったら、右上の「Commit & Run」をクリックします。すると投稿書式が正しいかチェックされます。 f:id:karaage:20180409012413p:plain:w640

 次に「Kernel」の「Output」タブをクリックすると、以下のようにデータがアップロードされているのが確認できます。ここで、右側の「Submit to Competition」をクリックします。これで競技への登録が完了です。 f:id:karaage:20180409012426p:plain:w640

 以下のように、自動でスコアが計算されます。 f:id:karaage:20180409012438p:plain:w640

 その後、自分の順位のところまで自動でページがスクロールします。 f:id:karaage:20180410011550p:plain:w640

 9754位でした、チュートリアル通りなので、低いのは当たり前ですね。実際は、ここから様々な前処理やアルゴリズムなどの工夫で、スコアを上げて競うことになります。

「Kernel」のGPU対応

 「Google Colaboratory」は無料でもGPUが使えるという度肝を抜くサービスっぷりが話題でした。そのため、「Kaggle」でも「Google Colaboratory」を使う人もいるようなのですが、実は「Kernel」のSettingの項目をよく見ると、BetaながらもEnable GPUの文字が…

f:id:karaage:20180412001602p:plain:w640

 GPU!!GPU!!

 機械学習の環境として「Kernel」は良いかもしれませんね。

まとめと宣伝

 「Kaggle」の機械学習環境「Kernel」を使って「タイタニックチャレンジ」に実際にチャレンジしてみました。「Kaggle」で使われているアルゴリズムは、意外にもディープラーニングよりは、ランダムフォレストだったり、アンサンブル学習がよく使われているらしいです。

 ひょっとしたら、データと計算資源勝負のディープラーニングより、他の手法でカリッカリにチューニングした方がスコアは伸ばしやすかったりするのじゃないかなーとか勝手に想像したりしています。ただ、過学習に関しては、公開されていないプライベートなテストデータも評価に使われたりと、防止する仕組みもあるのでとにかくフィッティングすれば良いという単純なものじゃないようですね。

 「Kaggle Master」になると、栄誉とともに色々な企業に引っ張りだこでモテモテというまことしやかな噂も聞くので、興味ある方は趣味として「Kaggle」に取り組んでみるのも実益も兼ねて良いかもしれません。

 なお、今そんなホットな機械学習を題材にした小説を書き、その手法を有料noteで公開するという試みをしております。楽しみながら手を動かしながら機械学習を学べる内容となっていますので、もし本記事で興味を持った方、機械学習勉強中の方はよろしければご覧ください。noteの方は有料ですが、小説は無料です。noteの価格は4/15までの限定価格ですので気になった方はお早めに。

 詳細は以下参照下さい。

「Kaggle」関係情報まとめ

 以下「Kaggle」で役に立ちそうな情報の個人的なまとめです。

Kaggleチュートリアル本

 カレー (id:currypurin) さんのチュートリアル本、有料ですが最短で「Kaggle」にチャレンジしたいなら、絶対オススメ本です。誇張なしでこの記事の10倍以上、丁寧で情報量のある本です。私も書いました!

決定木・ランダムフォレスト

【Pythonで決定木 & Random Forest】タイタニックの生存者データを分析してみた - これで無理なら諦めて!世界一やさしいデータ分析教室

10分でわかるRandom forest

Random Forestsとその応用

アンサンブル学習

アンサンブル学習について勉強したのでまとめました:Bagging / Boosting / Stacking - St_Hakky’s blog

Overview of tree algorithms from decision tree to xgboost

Kaggleの実践テクニック

Kaggleのテクニック

Kaggleの氷山コンペに参加してみた – データ分析エンジニアが気まぐれに更新するブログ

データ分析コンテストの 勝者解答から学ぶ // Speaker Deck

関連記事