プログラミングの芽

面白そうな技術を使って、楽しいことやりたい

Azure Machine Learningでタイタニック生存予測

またタイタニックです。とりあえずの勉強にはすごく使いやすいです。

MicrosoftのAzure Machine Learning(以下AzureML)はずっと触りたいと思っていたのですが、今日時間が取れてやっと触れました。
軽くチュートリアル的なのをやった感じ、かなり直観的に機械学習を行えそうだなと感じました。
ということで、タイタニックのデータセットを使って生存予測をAzureMLでやっていきたいと思います。

パソコンにあるデータセットをAzureMLで使えるようにする。

1.左のメニューからDATASETを選択
2.左下の+NEWを押す
3.FROM LOCAL FILEを押して、データセットをアップロードする
4.プロジェクト内でMy Datasetsの中に、アップロードしたファイルがあるので置く
f:id:atarms:20190202220931p:plain
右クリックでデータを見れる
f:id:atarms:20190202221413p:plain

ここからは以下の記事でやった手順で進めていく。
k最近傍法でTitanic生存者予測 - 森と秋刀魚と備忘録

学習に使えそうなデータだけ抽出する

Select Columns in Datasetを使う。
f:id:atarms:20190202221733p:plain
Select Columns in Datasetをアクティブにして、プロパティーのLaunch column selectorを選択する。
f:id:atarms:20190202222103p:plain
抽出したいのを右欄に移動させて、右下のチェックマークで反映。
画面下のRUNで動かす。
Select Columns in DatasetをVisualizeする。
f:id:atarms:20190202223356p:plain
できた。

欠損値を中央値で埋める

Missing Values Scrubberを使う。
f:id:atarms:20190202222950p:plain
プロパティのFor missing valuesはReplace with medianを選択
f:id:atarms:20190202223140p:plain
RUNで動かす。
f:id:atarms:20190202223318p:plain
できた。

文字列を数字に置き換える。

Convert to Datasetを使う。
f:id:atarms:20190202230702p:plain
1つ目のパラメータはこう
f:id:atarms:20190202230737p:plain
2つ目のConver to Datasetはfemaleを1に置き換えてる。

f:id:atarms:20190202230928p:plain
できた。

本当は1つのモジュールで済ませたいんですが、カンマや””で区切ってもうまくいかなかった。
恐らく方法はあるのでしょうが、今回は流します。

訓練用とテスト用で分ける

上の記事ではやらなかったけれど、最後に言及はしたのでやってみる。
Split Dataを使う。
f:id:atarms:20190202232245p:plain
プロパティのFraction of rows in the firs...が割合
訓練:テスト=8:2でやるので、0.8を入力

訓練する

k近傍法を使おうと思ったけど、k平均法しかなかった。
本当か?って感じ。もしかしたらあるかもしれない。無ければPythonやRコードが書けるのでそれでやればいい。
今回はコードを書かないと心に決めてるので、Two-Class Boosted Decision Tree Regressionを使う。決定木。
Train Modelのプロパティは、予測したいものを選択するのでSurvivedを選択する。
f:id:atarms:20190202235607p:plain
RANで動かす。
f:id:atarms:20190202235728p:plain
こんな感じで訓練してるらしい。今回100回
できた。

学習したモデルをテストデータで評価する

Score Modelでテストデータを予測。
Evaluate Modelで評価。
f:id:atarms:20190202235923p:plain
RANで動かす。

テストデータの予測結果。
f:id:atarms:20190203000023p:plain
Scored Labelsが予測、Scored Probabilitiesは1に属する確率。
見る限りは0.5が閾値っぽい。当たり前ですね。

評価結果
f:id:atarms:20190203000501p:plain
ROC曲線やらが見れる。
Accuracyが0.775だった。まぁそんなもんでしょって感じです。

Kaggleに提出した

せっかくだし用意されたテストデータも予測して提出してみた。
f:id:atarms:20190203001917p:plain
順位が上がった。

以上です。