Exploratoryにはデフォルトでたくさんのビジュアリゼーションが用意されていますが、それでもどうしても表現しきれないものがあるものです。その中で代表的なものに、決定木(Decision Tree)があります。今日は、Exploratoryの新機能のRMarkdownを用いて、決定木を含むノートを作成してみたいと思います。
下準備
まず、Rで決定木を作る代表的なパッケージであるrpartと、rpartで作られた木構造を視覚化するrpart.plotをExploratoryにインストールします。パッケージのインストールは、Exploratory起動直後のプロジェクトリストのビューから行うことができます。
rpart, rpart.plotのどちらもCRANというRの公開リポジトリに登録されています。まず、インストールのオプションでCRANを選び、rpartと入力してrpartのインストールを行います。
次に、同様にしてrpart.plotをインストールします。インストール済みパッケージに2つのパッケージが表示されたら、インストールは完了です。
データを用意する
今回は、タイタニック号が沈没した事故の乗客のデータを用いて、どんな条件の人が生存率が高かったのかを、決定木を使って調べてみたいと思います。データは、先ほどインストールした、rpart.plotに付属でついてくるデータを使用します。データを予め用意しておきましたので、こちらからCSVをダウンロードしてください。
ダウンロードが完了したら、Exploratoryにデータをインポートします。左側のツリーの「データフレーム」の右横にある+ボタンを押して、「ファイルデータ」を選択します。
データの種類を選択するダイアログが現れます。「テキストファイル」を選択します。
先ほどダウンロードしたファイルを選択すると、データのインポート画面が現れます。データを確認して、「保存」ボタンを押します。
インポートが完了すると、以下のように「TitanicData」というデータフレームがプロジェクトに追加されます。
ノートを作成する
次にノートを作成します。左側のツリーの「ノート」の右横にある+ボタンを押して、新規にノートを作成します。
すると、Markdownエディタが開きます。ここにRMarkdownの文法を用いてコードを埋め込むことで、Rの実行結果をノートに表示することができます。rpartとrpart.plotを使って、先ほどのタイタニック号の乗客データを元に決定木を表示するRのコードを埋め込んでみます。
実際に埋め込むコードは以下のようになります。どんな条件の人が生存できたのか、というのを決定木で表現しています。
# rpart, rpart.plotを読み込む
library(rpart)
library(rpart.plot)
# 決定木のモデルを作成する
tree <- rpart(survived~., data=TitanicData, cp=.02)
# 決定木をrpart.plotで表示する
rpart.plot(tree, box.palette="RdBu", shadow.col="gray", nn=TRUE)
このノートを実行すると、以下のような決定木が表示されます。
これによると、全体に対する女性の割合は36%で、女性というだけで73%の生存率があった、ということがわかり、同名の映画は割とデータに忠実に作られている、ということがわかります。rpartのコマンドにあるcpというパラメタは、複雑度合いをあらわすcomplexity parameterのことで、この値を小さく (0.01とか) にしてみるとより複雑な決定木が表示されます。よかったら試してみてください。
まとめ
ここでは、タイタニック号のデータを用いて決定木を表現してみましたが、決定木は実際のビジネスシーンでも重宝するアルゴリズムです。たとえば、契約成立の可否の情報を含む顧客情報に対して決定木を作ると、どのようなタイプのお客様が契約にたどり着きやすい、といったことをツリーで視覚的に表現することができます。
また、今回は決定木について説明しましたが、RMarkdownを用いれば、決定木に限らず、Rのテキスト及び画像の出力であれば基本的にはどんなものでも表示が可能です。可能性はまさに無限大。ぜひ、クリエイティビティを駆使して、様々な出力を試してみてください。
データ分析をさらに学んでみたいという方へ
今年10月に、Exploratory社がシリコンバレーで行っている研修プログラムを日本向けにした、データサイエンス・ブートキャンプの第3回目が東京で行われます。上記のようなデータサイエンスの手法を、プログラミングなしで学んでみたい方、そういった手法を日々のビジネスに活かしてみたい方はぜひこの機会に、参加を検討してみてはいかがでしょうか。こちらに詳しい情報がありますのでぜひご覧ください。