お手軽ツールでデータサイエンス実験 [2/3] 簡易予測＆Kaggle提出編

# はじめに

無料でも使える高機能なツールを使ってデータ分析と機械学習っぽい事をやってみました。
前回の記事[Tableau可視化編](http://qiita.com/msuz/items/b08fa2c784b3d8ad68c1) に続いて、簡易的な予測を出してKaggleに提出してみます。

# 簡易予測

IF文を使った計算フィールドを作成して、test.csvに対する生存の予測を出してみます。(*※1*)

## データソースの読み込み

Tableauのウィンドウをもう一つ立ち上げて、test.csvをドラッグ＆ドロップします。
train.csvとは別の418人分のデータが入っていますが、こちらは生存(Survived)フィールドが抜けている事が分かります。
![tableau_2datasources.png](https://qiita-image-store.s3.amazonaws.com/0/36022/3f2374e7-0bd5-7fbb-acc1-e73010cf49ac.png)
前回のワークブックに「train.twbx」、今回のワークブックに「test.twbx」という名前を付けて保存しておきましょう。(*※2*)

## 計算フィールドの追加

画面下のタブから「シート1」を選択してワークシートを開きます。
画面左のディメンション枠内にある「Sex」フィールドのドロップダウンメニューから「作成」「計算フィールド」を選択するとダイアログボックスが開きます。
フィールド名を「Survived」として、以下の式を設定してください。
`IF [Sex] == 'female' AND [Pclass] <= 2 THEN 1 ELSE 0 END`
![tableau_calc_field.png](https://qiita-image-store.s3.amazonaws.com/0/36022/9127cf22-375f-90e8-3f49-82b58c37e850.png)
前回の検証結果では女性で階級(Pclass)が3の場合は生存率50%だったので判断に迷う所ですが、
全体の傾向として死亡率が高いため今回の予測では死亡(Survived=0)側に倒します。

計算式が正しく動いているか、念のため確認しておきましょう。
手順は割愛しますが、こんなグラフが出せればOKです。
![tableau_calc_predict.png](https://qiita-image-store.s3.amazonaws.com/0/36022/e922fff3-bf4b-db00-2408-61d4c33b058c.png)

# 提出

それではこの予測結果をKaggleに提出(Submit)してみましょう。

## 出力フォーマットの確認

Kaggleの[Titanicページ](https://www.kaggle.com/c/titanic/)から「Make a submission」を選択して[提出ページ](https://www.kaggle.com/c/titanic/submissions/attach)を開きます。
画面右の説明書きと、リンク先のサンプルデータを見たところ、
PassengerIdとSurvivedの2列を持つヘッダ付きCSVファイルで提出する必要があるようです。

## ファイルへの出力

TableauからCSVへの出力はいくつかの方法が考えられます。私は以下の手順で行いました。
画面下部のアイコンから新しいワークシートを作成。
ディメンション枠内のPassengerIdをダブルクリック。
Surviedをメジャーに変更してからダブルクリック。
これでテキスト形式の一覧になるかと思います。(*※3*)
![tableau_text_list.png](https://qiita-image-store.s3.amazonaws.com/0/36022/62fc043b-5a43-2b21-3409-19640def33cf.png)
画面上部のメニューから「ワークシート」「エクスポート」「データ」を選び、
開いたダイアログボックスでファイル名に「predict」と入力して保存すればCSV形式のファイルが生成されます。
・・・が、しかし！テキストエディタで開いて見ると中身はカンマ区切りでなくタブ区切りになっている。。
仕方ないのでテキストエディタでタブをカンマに置換して上書き保存してやりましょう。 (*※4*)
![editor_replace.png](https://qiita-image-store.s3.amazonaws.com/0/36022/ecda3011-aa44-4a40-87f4-a61ff3e6b12f.png)

## アップロード

先ほど開いた[提出ページ](https://www.kaggle.com/c/titanic/submissions/attach)のフォームにCSVファイルをドラッグし、適当なコメントを知れてSubmitします。
![kaggle_form.png](https://qiita-image-store.s3.amazonaws.com/0/36022/7cd1515f-375e-a197-b7de-3dcbd297c905.png)
提出に成功するとスコアが評価され、リーダーボードに自分の名前が乗ります。
今回のスコアは0.75598で、順位は6115組中5131位でした。
![kaggle_leaderboard.png](https://qiita-image-store.s3.amazonaws.com/0/36022/2ca9ae88-b5d2-c54f-bb16-620c08edc5c4.png)

改善の余地は大いにありそうです。

# おわりに

[第1回目](http://qiita.com/msuz/items/b08fa2c784b3d8ad68c1)はTitanicのデータをTableauで可視化して大まかな傾向を読み取りました。
第２回目の今回はこの条件を使って簡易的な予測を出してKaggleに提出しました。
結果は正解率75%でした。
第３回目はAzureMLを使ってランダムフォレストモデルの予測を行い、
正解率がどこまで上げられるかを試してみたいと思います。

引き続きどうぞよろしくお願いします。

# 補足
- *※1 … Kaggle公式ドキュメントの[Excelチュートリアル](https://www.kaggle.com/c/titanic/details/getting-started-with-excel)が参考になります。*
- *※2 … このワークブックをパブリッシュする可能性を考えてtwbx形式にしておきます。詳しくはTableau公式ドキュメントの[パッケージド ワークブック](http://onlinehelp.tableau.com/current/pro/desktop/ja-jp/save_savework_packagedworkbooks.html)を参照して下さい。*
- *※3 … 上手く行かない場合はTableau公式ドキュメントの[データビューの構築](https://onlinehelp.tableau.com/current/pro/desktop/ja-jp/help.html#building_overview.html)を参照して下さい。*
- *※4 … 原因と対策、スマートなやり方などご存知の方はコメント下さい。*