Kaggleコンペ Titanic – Machine Learning from Disasterに挑戦(チュートリアルをやってみる)

スポンサーリンク
スポンサーリンク

さて、習うより慣れろ!というわけでさっそく、諸学者向けと思われるコンペティションをやってみようと思います。

スポンサーリンク

Overview – Descriptioinを読んでみる

対象のコンペのOverview – Descriptionを見てみます。

ここには、説明動画と説明文があります。これらを見て内容を理解したうえで、Join Competitionボタンから参加登録をするようです。

全編、英語ですが、Google翻訳を活用しつつ内容をざっくり把握します。

こちらには基本的なKaggleコンペへの参加手順が書かれており、

  1. 規約に同意し、コンペに参加する(Join Competitionボタンから)
  2. データを取得し、課題を理解する
  3. モデルを構築し予測結果を作成する
  4. 予測結果を提出する
  5. Leaderboardでランキングを確認する
  6. スコアを改善する

という流れで学習を進めていけばよいようなことが説明されています。

といわれても、次に何をしてよいか戸惑ってしまいますが、こちらにお勧めのチュートリアルも紹介されています。Alexis Cook’s Titanic Tutorial(アレクシス・クックさんのタイタニックチュートリアル)です。Kaggle notebooksへのリンクとなっており、細かく手順が紹介されているようです。さっそくこれを参照しながら実際に進めていきたいと思います。

Alexisさんのnotebookを見ながら進めましょう

Step 1. Join the Competition!

まずは、コンペティションに参加します。利用規約を確認したうえで、Join Competitionボタンを押してコンペに参加するのが最初の第一歩です。

ルールを読んで、合意したうえで参加しましょう。

参加すると、Join CompetitionボタンがSubmit Predictions (予測結果を提出)に変わりました。AIで予測させた結果をここから提出するようです。

Step 2. The Challenge

では、何をすればよいのか、課題を理解しましょう。学習データとして、乗客の情報と各乗客が助かったか亡くなったかのデータ与えられます。この学習データを用いてモデルを学習させ、テスト用のデータに記された乗客の生死を予測することがこの課題です。

Step 3. The data

さて、ではデータを見てみましょう。

コンペのDataタブにデータの説明とともに各種データが用意されています。このコンペでは、3つのデータファイルが用意されています。

train.csv

モデル学習用のデータです。

乗客の情報(年齢や性別、客室クラス、同乗する家族の人数などなど、各列の意味や内容はData Descriptioinとして説明されています)が含まれています。

#若干Kaggleのバージョンが違うのかチュートリアルの画面と実際のKaggleの画面で異なるところがありましたが大勢に影響なしです。

ここで、データの2列目の情報が生死の区分で、0が死、1が生とのことです。

test.csv

推論用のデータです。このデータの中には生死の区分はありません。各乗客の情報をもとに、生死を推論するのがこのコンペの目的となります。

gender_submission.csv

こちらのファイルは提出する推論結果のサンプルとなります。このファイルでは、女性は助かり男性は死ぬという判断をしたものです。このファイルから提出するファイルは乗客ID, 生死区分(0 or 1)の情報で構成する必要があることがわかります。

なお、出力ファイルの仕様については、コンペの概要ページ(Overview – Evaluation)にもSubmission File Formatとして記載されています。

Step 4. Your First Submission

まずは先ほどのサンプル結果であるgender_submission.csvファイルを提出してみましょうとのこと。コンペのDataタブからgender_submission.csvファイルを自PCにダウンロードし、それを提出してみましょう。

まずはDataタブからgender_submission.csvをダウンロードします。Data Explorerの右上のダウンロードマークからCSVファイルをダウンロードします。

ダウンロード後、コンペのSubmit PredictionsボタンからこのCSVファイルを提出します。

Webブラウザに対象のファイルをDrag & Dropし、適当なコメントを入力してSubmitしてみます。1日に10回まではSubmitできるようです。

しばらくすると提出が完了し、Scoreが表示されました。今回は0.76555というスコアでした。

Step 5. The Notebook

KaggleではNotebook機能を使うことで、自PCに何もインストールすることなく、コーディング、モデル学習などができるようです。貧相なノートPCでもAI学習ができるのは非常に助かります。

Notebooksタブへ移動して、New Notebookボタンをクリックします。

デフォルトから何も変更せずにCreateすればよいようです。

これで、なにやらコードが書かれた画面が表示されました。

左上のnotebookfb7e4f29c6はファイル名のようで任意の名称に変更できますので、クリックして分かりやすいタイトルに変更します。

Step 6. Your first lines of code

Notebookの画面上には、‣マークの付いたエリアと、[]マークのあるエリアの2領域があり、これらをCode Cellと呼ぶようです。

なお各領域をクリックすると、クリックした領域の横に‣マークがつくようです。とりあえず、1つ目のCode Cellをクリックし‣マークをクリックしてコードを実行してみます。

すると以下のような出力画面が表示されました。

これは、このコンペのデータファイルのパスを表示してくれているとのことです。

Step 7. Load the data

それでは、先ほどの出力の下にある2つ目のCode Cellにチュートリアル通りにコードを入力し、Code Cell横の‣マークをクリックします。

するとOut[2]:として表形式のデータが表示されました。

これは、pythonのpandasモジュールに含まれるread_csv関数を使ってtrain.csvファイルを読み込み、そのhead(5行のみ出力)をしたもののようです。ちなみにpandasは一つ目のCode Cellにおいて自動で記述されているコードにて、import pandas as pd によりインポートされpdという別名がつけられています。

出力の下にある[+ Code]ボタンを押して3つ目のCode Cellを表示させ、今度はtest.csvを読み込ませてHeadしてみます。

これで、現在開発中の環境(notebook)内にtrain.csvとtest.csvを取り込むことができているようです。

Step 8. Explore a pattern

データを調査して、どの項目が影響を与えていそうか調査をします。まずは、先ほど提出したgender_submission.csvのように性別だけが生死を分けたのでしょうか?

男女それぞれの生存率をnotebook上で計算してみます。Code Cellを追加し計算します。

女性の生存率74.2%、男性の生存率18.9%とのことで、性別だけでの判断でも悪くないように思えますが、これ以外の項目も影響を与えていると考えられます。その他の項目を検討するのは人間では難しいので機械学習(ML)によりこれを実現することになります。

いよいよ機械学習をさせていくことになりそうです。

Step 9. Your first machine learning model

ここでは、ランダムフォレストモデルを構築してみることになります。

チュートリアル通りのコードをCode Cellを追加して書き込み実行してみます。少し時間がかかりましたがファイルが保存されたようです。

いったんここでnotebookを保存しておきます。画面右上のSave Versionボタンで保存します。

Save Versionボタンを押すと、確認画面が出ますので、そのままSaveボタンを押します。

Saveボタンを押すと、画面左下のあたりで下図のような進捗画面が表示されます。

処理が終わると、Save Versionボタンの横に数字が表示されるようになりました。

数字をクリックすると、先ほどまで使用していたnotebookのプレビュー画面がが表示されます。ここから、右上のGo to Viewerボタンを押すとViewerでnotebookが開かれます。

Viewerの右側にナビゲータがあるので、Outputを選択すると、今回の処理で作成されたOutputファイルが表示されます。

アウトプットファイル名の横にはSubmitボタンが表示されており、これを押すことで今回の推論結果を提出することができるようです。

提出した結果は、My Submissionsから見れるようです。提出後の画面にボタンがあるのでそこから移動してみます。

My Submissionsを見てみると、2つのSubmissionがあります。性別だけで判断したサンプルのgender_submissionと先ほどMLで出力したファイルです。ほ~んの少しだけスコアが上がりましたね。

以上で、このチュートリアルは終わりのようです。

まとめ

Kaggleを使って初めてのコーディング(コピペですが)をやってみました。Kaggleのコンペに参加するにはWebブラウザがあればよくて、特にPythonなどの実行環境を自分のPC上に構築する必要もないようですね(この程度であれば)。ハードルが低く、多くの学生たちも挑戦している理由がわかります。まだまだ触りでしかないので、これからより精度を上げるための方法を勉強していく長い道のりになるのだろうと思います。

より興味を持ったなら3時間のIntro to Machine Learningコースを受けるようにアドバイスされています。

ですので、次回は、Intro to Machine Learningコースを受けてみたいと思います。

コメント

タイトルとURLをコピーしました