(本記事は2023年6月時点に執筆されたものです)
1.はじめに
前回Dataikuを使ってデータ整形をしてみたので今回はDataikuを用いてKaggleのコンペで有名なTitanicの生存者予測を行い最終的にKaggleへsubmitしてみたいと思います。
前回の記事
KaggleでおなじみのTitanicのデータをDataikuで整形をしてみた
https://www.keywalker.co.jp/blog/dataiku-tinanic-01-2.html
今回は下記のページのDataタブから得られるtest.csvを未知のデータとして用います。訓練データは前回整形したものを使用します。
https://www.kaggle.com/competitions/titanic/overview
今回は以下のことを実行しました
モデルの訓練
モデルの選定
テストデータの整形
テストデータのスコアリング
提出データの整形
Kaggleへsubmit
2.モデルの訓練
前回整形したデータを訓練データとして用います。
Dataikuでは機械学習による訓練→モデル選定→予測の一連の作業はLABと言われる場所で行います。
前回の記事ではTitanicのデータをDataiku上で欠損値処理やone-hot表現などの処理を行いました。
Dataiku上での前回の処理フローは以下のような画像の形で表示されます。
ほうきの形をしたアイコンが前回おこなったデータ整形を表しています。
フォルダの形をしたアイコンが整形した結果のデータセットになります。
上記の赤枠で囲んだフォルダアイコンをクリックすると下記のようなページが画面右に出現します。
そのなかにLABというタブがあるのでクリックします。
クリックすると機械学習を簡単にやってくれるアイコンが出てきます。
今回は機械学習を用いたTitanicの生存者予測の簡単な結果がみたいのでAutoMLPredictionを選択します。
AutoMLPredictionを選択し、予測するための目的変数を選択します。
今回は生存者予測なのでSurvivedを選択します。
Survivedを選択したら、Quick Prototypesを選択しCREATEをクリックします。
次に用意したデータを用いてモデルを訓練させるために下記の画像のTRAINをクリックします。
今回はDataikuのデフォルトである2つのアルゴリズムと13個の特徴量を選んだもので訓練を行います
3.モデルの選定
実際に訓練したモデルを見てみます。
今回使用されている二つのモデルはRandom forestとLogistic Regressionです。
下記の画像では二つのモデルに対しての訓練結果が表示されています。
評価指標であるAUCがもっとも高いのはRandom forestでした。
今回はRandom forestを予測モデルとして使おうと思います。
Random forestをクリックすると次のようなページに変わります。
テストデータにこのモデルを適用させるために、DEPLOYを選択します。
DEPLOYをクリックすると下記の画像が現れます。CREATEをクリックし、モデルをFLOW上に作成します。
これでモデル選定までの作業が終わったので今回はこのモデルを使ってテストデータを用いてTitanicの生存者予測をしてみようと思います。
4.テストデータの整形
いままでの一連の作業はFLOWでは次のようにあらわされています。
ダンベルのアイコンがモデルの訓練を表しており、Predict Survivedが訓練によってできた予測モデルを表しています。
この一連の作業工程を未知のデータであるテストデータへも適用させたいと思います。
まずテストデータのデータセットを事前にアップロードしておきます。
ほうきのアイコンをクリックすると画面右端に次のようなタブが現れますのでCopyを選択します。
Copyを選択すると次のようなタブが出てくるのでReplacemet for trainをtestに変更し、Nameをtest_cleaningとしてCREATE RECIPEをクリックします。
CREATE RECIPEを実行することでtrainデータで行ったデータ整形がそのまま適用されます。
testのデータセットを確認してみますとFareで欠損値がみつかりました。
今回も欠損値は平均値で埋めます。(前回と同様ですが欠損値を平均値で埋めることは推奨されません。今回は簡単のため平均値を使用しています。)
緑色のバーに対して灰色のバーが欠損値の割合を表している
テストデータも訓練データ同様に整形することができました。
整形したテストデータを使って学習したモデルに適用させて生存者予測をしてみようと思います。
5.テストデータのスコアリング
Predict Survivedのアイコンをクリックすると画面右に下記の画像のようなページが出てきます。Scoreをクリックしテストデータを用いて生存者予測を実行します。
Scoreをクリックすると下記の画像が出てきます。
CREATE RECIPEをクリックすると次のようなページに移ります。
画面左下にあるRUNをクリックすると、画面下側に処理がクリアすればJob succeededと表記されます。
Explore dataset test_cleaning_scoredをクリックすると予測結果が確認できます。
予測された結果がテストデータにカラムとして追加されます。
proba_0が0になる確率でproba_1が1になる確率を表しています。
predictionが生存者予測の結果を表しています。
6.提出データの整形
Kaggleへsubmitするために必要なカラムはPassengerIdとSurvivedだけなので、この二つ以外のカラムを削除してsubmit用に整形します。
predictionはSurvivedに名前を変更した
7.Kaggleへsubmit
提出用のデータをKaggleへsubumitしたいと思います。
ここまでノーコードで予測することができました。
下記の画像がKaggleへsubmitするデータを作成するまでのフローになります。
まず、submitのフォルダアイコンをクリックすると画面右に次のようなページが現れます。
その中にあるExportを選択します。
Exportをクリックするとファイル形式を選択するページが現れます。
ここではcsvを選択しDOWNLOADをクリックしファイルをダウンロードします。
ファイルをダウンロードしたら、Kaggleへ予測結果をsubmitします。
submitしたら結果は以下のようになりました。
正解率75%程度という結果になりました。
8.まとめ
今回、Titanicの生存者予測をDataikuをつかってKaggleへsubmitすることができました。
前回のデータ整形に加えて予測までノーコードで一気に予測モデルが作成でき、従来のコードを用いて予測モデルを作るよりもはるかに効率が上がったことが実感できました。
Kaggleへsubmitできたものの、もう少し高い得点を目指したいので特徴量生成や違うモデルを試すなどブラッシュアップして正解率80%を目指したいと思います。