遊覧飛行ーワインとゲームー

都内某所で働くゲームクリエイターのブログ。ゲームやビジネスに関する話題、シリアスゲームの紹介、作成したゲームの公開、ワインに関する記事など徒然なるままに書き記していきます。

R の caret パッケージメモ~train:caret 決定木~

R で "caret" パッケージを使用する際の備忘録です。
今回は "train関数" を使用して決定木の構築を行います。

 

使用するデータ

使用するデータは一般化線形モデルの際にも使用した "Titanic" です。
沈没したタイタニック号の生存者数を「性別」「年齢」「等級」ごとに分類したデータです。

 

データの下準備

データの下準備は、一般化線形モデルを構築した際と同じです。

テーブルを変換する "expand.table関数" を使用しています。

> install.packages("caret")
> library(caret)
> install.packages("epitools") #テーブル変換関数のパッケージ
> library(epitools)

> Titanic1 <- expand.table(Titanic) #テーブル変換
> head(Titanic1)
Class Sex Age Survived
1 1st Male Child Yes
2 1st Male Child Yes
3 1st Male Child Yes
4 1st Male Child Yes
5 1st Male Child Yes
6 1st Male Adult No

 

train関数で rpart を実行

決定木を構築するアルゴリズムには CHAID, C4.5 / C5.0 / See5, CART など様々ありますが、ここでは CART を採用します。
CART で決定木を構築するメソッドは "rpart" です。

> titanic.rp <- train(
data = Titanic1,
Survived ~ Sex + Age + Class,
method = "rpart",)
<以下省略>

 

"rpart" では木の複雑度である "cp" をもとに木をコントロールすることができます。
"train関数" を使った場合は Accuracy に基づいて最も適切な cp を探索し、その最適値で最終的なモデルを出力します。

> titanic.rp
CART

2201 samples
3 predictor
2 classes: 'No', 'Yes'

No pre-processing
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 2201, 2201, 2201, 2201, 2201, 2201, ...
Resampling results across tuning parameters:

cp Accuracy Kappa
0.01125176 0.7822764 0.4195169
0.02250352 0.7769538 0.4161458
0.30661041 0.7189166 0.1863290

Accuracy was used to select the optimal model using the largest value.
The final value used for the model was cp = 0.01125176.
data = Titanic1,
Survived ~ Sex + Age + Class,
method = "rpart",)

 

 "summary関数" を用いれば、モデルに関して様々な情報を確認することができます。

> summary(titanic.rp)
<以下省略>

 

決定木のプロット

最終的な木のモデルは x$finalModel に格納されています。
ここでは "fancyRpartPlot関数" を用いて木のプロットを行います。

> library(rattle)
> fancyRpartPlot(titanic.rp$finalModel)

 

f:id:ngyope:20160830124513j:plain

広告を非表示にする