LoginSignup
4
4

More than 3 years have passed since last update.

Pythonを使わずにKaggle タイタニック号乗客の生存予測モデルを作ってみる

Last updated at Posted at 2020-06-03

この記事の概要と結果

最近知ったVARISTAというAutoML?を使ってKaggleタイタニックコンペにチャレンジしてみます。
スコアは0.80861でした。

Kaggleへ登録

Kaggleに登録していない人はKaggleに登録をしましょう。
登録は画面の右上から行ってください。
image.png

データの用意

今回のコンペティションはこちらの「Titanic: Machine Learning from Disaster」です。
コンペティションに移動したら「Data」タブを選択してください。
こちらをクリックしてもデータページに移動できます。
データ画面に移動したらDownload Allを選択します。
image.png

ダウンロードが完了したら、「titanic.zip」があると思いますので、このファイルを解凍してください。
解凍すると以下のファイルが確認できます。

image.png

それぞれのファイルの用途は以下の通りです。

ファイル名 用途
train.csv 教師データ
test.csv テストデータ
gender_submission.csv 投稿用サンプルデータ

データの変数説明

列名 日本語
PassengerID 乗客ID
Survived 生存結果 (1: 生存, 0: 死亡) 
Pclass 客室の階級 1=Upper, 2=Middle, 3=Lower
Name 名前
Sex 性別
Age 年齢
SibSp 兄弟、配偶者の数
Parch 両親、子供の数
Ticket チケット番号
Fare 乗船料金
Cabin 部屋番号
Embarked 乗船した港 Cherbourg、Queenstown、Southamptonの3種類

VARISTAへ登録

VARISTAのアカウントを作成します。
http://www.varista.aiに移動してトップページから登録します。
ちなみに、、このアカウントから登録するとサービス内で使えるクレジットになるのでもしよければこのリンクから飛んで頂けると嬉しいです。。
もし嫌な方は全然↑から飛んでもらっても構いません。。知らなかった・・。
https://console.varista.ai/welcome/jamaica-draft-coach-cup-blend

有料プランもあるみたいですが、とりあえずは無料で試しました。

image.png

プロジェクト作成とデータの確認

VARISTAにログイン後に、ワークスペースを任意の名前で作成します。
ワークスペースを作成したら、プロジェクトを作成します。
名前は適当にタイタニックとかでいいと思います。

ガイドに従って、データをアップロードします。
スクリーンショット 2020-05-26 23.02.41.png

アップロードするデータは教師データの「train.csv」です。
スクリーンショット 2020-05-26 23.03.29.png

アップロードが完了したら、予測したい列を選択します。
今回のコンペにおいては、乗客の生存を予測したいので「Survived」を選択します。
スクリーンショット 2020-05-26 23.04.14.png

設定が完了したSTARTを選択して次の画面に移動します。
スクリーンショット 2020-05-26 23.04.38.png

ターゲットを選択したら準備完了です。

データの確認

ここでいきなり学習を開始してもいいのですが、せっかくなのでデータの中身をみてみます。
データメニューを選択し、先ほどアップロードした「train.csv」を選択します。
スクリーンショット 2020-05-26 23.11.40.png

データの欠損を見てみると、年齢とキャビンのデータに欠損があることが確認できます。
ただ、VARISTAの場合は欠損データを自動で補完するようです。

image.png

データの分布を見てみましょう。
タブから「ビジュアライズ」を選択すると、特徴列のデータごとに分布を表示してくれるので便利です。
相関関係のタブを選択すると、予測したい列とそれぞれの列の相関関係を確認することができます。

スクリーンショット 2020-05-26 23.53.13.png

性別、年齢
0は死亡、1は生存と置き換えてみてください。
性別は大きく関係しており、女性の方が生存しているようです。
年齢は、概ね7才未満の生存率が高く、60才以降は死亡率が高いようです。中間は大きな差は無いようです。
子供は優先的に救助されたみたいです
image.png

PClass
等級が高い方が、生存率が高いようです。
image.png

学習

実際に学習してみましょう。
左のAIモデルを選択し、「AIモデルを作成」をクリックします。
次に、予測する列が「Survived」になっていることを確認し、学習開始ボタンをクリックします。
スクリーンショット 2020-05-26 23.05.21.png

最近流行りの特にこちら側で何の設定をすることもなく自動で学習が開始します。
特徴量エンジニアリングを行い複数アルゴリズムで学習しているようです。

学習結果

スコア70と出ています。
影響度をみると、やはり生存には、性別とPclassが関わっているようですね。
スクリーンショット 2020-06-03 21.39.23.png

Kaggleへの提出

↑の画面でこのモデルで予測するをクリックします。
ここをクリックして、出力形式を変更します。
image.png

出力しない列を設定します。
スクリーンショット 2020-05-28 8.51.57.png

次に、出力する列の形式をフラグに変更します。
スクリーンショット 2020-05-28 8.52.18.png

最後に、先ほどのダウンロードしたファイルにあるtest.csvをドラッグ&ドロップしましょう。
image.png

出来上がったファイルをダウンロードします。
image.png

ファイルを開くと、一番右列に生存したかどうかの予測が入っている事がわかります。
Kaggleに投稿するには不要な列があるので削除します。今回はMacのNumbersで除去しましたが、Windowsの場合はExcelなどがいいと思います。
スクリーンショット 2020-06-03 21.20.22.png

Kaggleのコンペティション画面から「Submit Predictions」を選択して、先ほどダウンロードしたファイルをドラッグ&ドロップします。
スクリーンショット 2020-05-28 8.30.37.png

最後にMake Submissionを押して、投稿します。
しばらくすると、採点されスコアが出力されます。

スクリーンショット 2020-06-03 21.17.46.png

今回のスコアは0.77511でした。

学習設定を変更してモデルの調整

学習設定から、学習レベル、検証データの割合、交差検証の分割数、ランダムシードの値を変更してみたら、スコアがよくなったので載せておきます。

モデルの学習開始画面右上の設定ボタンをクリックします。
スクリーンショット 2020-06-03 8.09.21.png

値をこんな感じにしてみました。
あまり試していないのでもっといい設定の値があるのかもしれませんが、追って試してみます。

image.png

image.png

これで再度学習して再度KaggleにSubmitしてみます。

スクリーンショット 2020-06-03 20.13.18.png

スコアは0.80861まで上がりました。
レベル3の学習に30分くらいかかるので、また色々と試して追加で書きたいと思います。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4