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

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

#Kaggleへ登録

Kaggleに登録していない人はKaggleに登録をしましょう。
登録は画面の右上から行ってください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/da717264-d9b1-f2e5-f642-e3e494818df3.png)


#データの用意

今回のコンペティションは[こちら](https://www.kaggle.com/c/titanic)の「Titanic: Machine Learning from Disaster」です。
コンペティションに移動したら「Data」タブを選択してください。
[こちら](https://www.kaggle.com/c/titanic/data)をクリックしてもデータページに移動できます。
データ画面に移動したらDownload Allを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/ca724f19-a6f2-f8bb-7933-7c47678b13d2.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/6c5fd3e1-4104-ca92-489c-041f6abc2ba6.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の３種類 |



#VARISTAへ登録

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/c99c1eb9-aa1d-41d9-e882-1825c74685ec.png)


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

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

ガイドに従って、データをアップロードします。
![スクリーンショット 2020-05-26 23.02.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/fc5db106-a150-8968-7bd8-b9bd7a60cf91.png)

アップロードするデータは教師データの「train.csv」です。
![スクリーンショット 2020-05-26 23.03.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/706df675-1645-0920-c2e5-027b6df1834e.png)

アップロードが完了したら、予測したい列を選択します。
今回のコンペにおいては、乗客の生存を予測したいので「Survived」を選択します。
![スクリーンショット 2020-05-26 23.04.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/08847eb1-658d-6715-94be-78b7311df9bd.png)

設定が完了したSTARTを選択して次の画面に移動します。
![スクリーンショット 2020-05-26 23.04.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/a698a6cf-cd4d-1ec5-b259-a247d441d1d5.png)

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

#データの確認
ここでいきなり学習を開始してもいいのですが、せっかくなのでデータの中身をみてみます。
データメニューを選択し、先ほどアップロードした「train.csv」を選択します。
![スクリーンショット 2020-05-26 23.11.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/6f705c8f-7e6a-ef8e-fc2e-c1dc962d9a88.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/eac91711-f1b0-6c9f-6bb6-5776ba02bb48.png)

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

![スクリーンショット 2020-05-26 23.53.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/a00a7fd2-3d82-be71-386e-117d3390cfc6.png)

**性別、年齢**
0は死亡、1は生存と置き換えてみてください。
性別は大きく関係しており、女性の方が生存しているようです。
年齢は、概ね7才未満の生存率が高く、60才以降は死亡率が高いようです。中間は大きな差は無いようです。
子供は優先的に救助されたみたいです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/7d0b1af6-5c02-d520-c8f3-49e26656345e.png)


**PClass**
等級が高い方が、生存率が高いようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/1df7bba3-5e7a-922a-ea04-e7d7a01e38ae.png)



#学習

実際に学習してみましょう。
左のAIモデルを選択し、「AIモデルを作成」をクリックします。
次に、予測する列が「Survived」になっていることを確認し、**学習開始**ボタンをクリックします。
![スクリーンショット 2020-05-26 23.05.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/c696b2a9-0155-c38b-da8c-28fe8c899bc6.png)

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

#学習結果

スコア70と出ています。
影響度をみると、やはり生存には、性別とPclassが関わっているようですね。
![スクリーンショット 2020-06-03 21.39.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/51a2b734-d643-605e-d7f8-216b82f90e47.png)



# Kaggleへの提出

↑の画面で**このモデルで予測する**をクリックします。
ここをクリックして、出力形式を変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/750b12f4-78ed-0b8c-35f1-72347b95f3fa.png)

出力しない列を設定します。
![スクリーンショット 2020-05-28 8.51.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/7c004c41-10c5-8efe-8369-9fcd0a3d0c5b.png)

次に、出力する列の形式をフラグに変更します。
![スクリーンショット 2020-05-28 8.52.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/bf912636-b75e-9f45-135c-cd92a98236cf.png)

最後に、先ほどのダウンロードしたファイルにあるtest.csvをドラッグ&ドロップしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/dddc5603-2a51-2287-0c1c-9716a68eb63c.png)

出来上がったファイルをダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/42c65fb2-7a48-49c4-1e45-3e14ed7b3dc3.png)

ファイルを開くと、一番右列に生存したかどうかの予測が入っている事がわかります。
Kaggleに投稿するには不要な列があるので削除します。今回はMacのNumbersで除去しましたが、Windowsの場合はExcelなどがいいと思います。
![スクリーンショット 2020-06-03 21.20.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/85fcdfe9-fd90-0348-42d3-a0a690b88ff4.png)

Kaggleのコンペティション画面から「Submit Predictions」を選択して、先ほどダウンロードしたファイルをドラッグ&ドロップします。
![スクリーンショット 2020-05-28 8.30.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/bdfd3e9b-bcdc-55ca-c45e-140fa925f2da.png)

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

![スクリーンショット 2020-06-03 21.17.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/fa2a631a-fc30-be7e-2100-39a04f0ddb7e.png)

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

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

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

モデルの学習開始画面右上の設定ボタンをクリックします。
![スクリーンショット 2020-06-03 8.09.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/05e04812-bc4a-fd6b-6440-f788d3a6b11f.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/b0dc71a8-3823-e700-c4c7-1b8e1ded5ede.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/ef60795c-f1ff-46fa-d1d8-9e15dbd37160.png)

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

![スクリーンショット 2020-06-03 20.13.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/c02fb699-c8fc-7907-b8ab-49d9984db4b7.png)

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