追記:Kaggleスタートブック
この記事の内容は少し古いので、今からKaggleを初めたい方は、「Kaggle スタートブック」がオススメです。以下記事参照ください。
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」をクリックします。
以下画面が表示されたら、右側の「Notebook」を選択します。
以下のような画面が表示されます。
あとは、「Jupyter Notebook」や「Google Colaboratory」と同じように、Markdownでコメントを入れたり、Pythonのコードを実行できます。
「Shift + Enter」でデフォルトで入力されているコードを実行してみましょう。
"../input"
というディレクトリに、「タイタニックチャレンジ」の学習データ(train.csv)とテストデータ(test.csv)が用意されているのが分かります。
チュートリアルの実行
後は、以下のサイトをまねて、チュートリアルを実施していきましょう。
上記サイトは「Kernel」を使用することを前提に書かれていませんが、「Kernel」で使う場合は、基本的には以下のところを
train = pd.read_csv("../ディレクトリを指定/train.csv") test = pd.read_csv("../ディレクトリを指定/test.csv")
以下のように変更するだけで、他のコードはそのまま実行できます。
train = pd.read_csv("../input/titanic/train.csv") test = pd.read_csv("../input/titanic/test.csv")
以下に私が実際に「Kernel」でチャレンジした実施例を公開しておきますので、もしよろしければ参考にして下さい。
「Kaggle」への投稿と順位確認
一通りチュートリアルを終えて、csvの書き出しまで終わったら、右上の「Commit & Run」をクリックします。すると投稿書式が正しいかチェックされます。
次に「Kernel」の「Output」タブをクリックすると、以下のようにデータがアップロードされているのが確認できます。ここで、右側の「Submit to Competition」をクリックします。これで競技への登録が完了です。
以下のように、自動でスコアが計算されます。
その後、自分の順位のところまで自動でページがスクロールします。
9754位でした、チュートリアル通りなので、低いのは当たり前ですね。実際は、ここから様々な前処理やアルゴリズムなどの工夫で、スコアを上げて競うことになります。
「Kernel」のGPU対応
「Google Colaboratory」は無料でもGPUが使えるという度肝を抜くサービスっぷりが話題でした。そのため、「Kaggle」でも「Google Colaboratory」を使う人もいるようなのですが、実は「Kernel」のSettingの項目をよく見ると、BetaながらもEnable GPUの文字が…
GPU!!GPU!!
機械学習の環境として「Kernel」は良いかもしれませんね。
まとめと宣伝
「Kaggle」の機械学習環境「Kernel」を使って「タイタニックチャレンジ」に実際にチャレンジしてみました。「Kaggle」で使われているアルゴリズムは、意外にもディープラーニングよりは、ランダムフォレストだったり、アンサンブル学習がよく使われているらしいです。
ひょっとしたら、データと計算資源勝負のディープラーニングより、他の手法でカリッカリにチューニングした方がスコアは伸ばしやすかったりするのじゃないかなーとか勝手に想像したりしています。ただ、過学習に関しては、公開されていないプライベートなテストデータも評価に使われたりと、防止する仕組みもあるのでとにかくフィッティングすれば良いという単純なものじゃないようですね。
「Kaggle Master」になると、栄誉とともに色々な企業に引っ張りだこでモテモテというまことしやかな噂も聞くので、興味ある方は趣味として「Kaggle」に取り組んでみるのも実益も兼ねて良いかもしれません。
なお、今そんなホットな機械学習を題材にした小説を書き、その手法を有料noteで公開するという試みをしております。楽しみながら手を動かしながら機械学習を学べる内容となっていますので、もし本記事で興味を持った方、機械学習勉強中の方はよろしければご覧ください。noteの方は有料ですが、小説は無料です。
詳細は以下参照下さい。
「Kaggle」関係情報まとめ
以下「Kaggle」で役に立ちそうな情報の個人的なまとめです。
Kaggleチュートリアル本
カレー (id:currypurin) さんのチュートリアル本、有料ですが最短で「Kaggle」にチャレンジしたいなら、絶対オススメ本です。誇張なしでこの記事の10倍以上、丁寧で情報量のある本です。私も書いました!
決定木・ランダムフォレスト
【Pythonで決定木 & Random Forest】タイタニックの生存者データを分析してみた - Np-Urのデータ分析教室
アンサンブル学習
アンサンブル学習について勉強したのでまとめました:Bagging / Boosting / Stacking - St_Hakky’s blog
Overview of tree algorithms from decision tree to xgboost
Kaggleの実践テクニック
Kaggleの氷山コンペに参加してみた – 戦略コンサルで働くデータサイエンティストのブログ
データ分析コンテストの 勝者解答から学ぶ - Speaker Deck
関連記事
変更履歴
- 2021/09/13 コードのパスを修正
- 2020/06/29 「Kaggle スタートブック」レビュー記事へのリンクを追記