【Rによるデータサイエンス】樹木モデル(続き) 〜 多変量回帰木

Rによるデータサイエンス】樹木モデル(続き) 〜 回帰木」では回帰木のケーススタディを実施した。
今回は多変量回帰木のケーススタディを行う。
なお、多変量回帰とは、目的変数が複数である回帰分析のことを呼ぶ。

◎使用するデータ
パッケージmvpartに同梱されているデータspiderを使用する。

> nrow(spider);ncol(spider)
[1] 28
[1] 18

28行、18列のデータである。
18列のうち、左の12列は異なる蜘蛛の種類で、残りの6列は蜘蛛狩りの環境に関するデータ。

1.データをマトリックス形式に変換する
2.mvpart関数を使用して多変量回帰木を作成する

> spider[1,13:18]
  water sand moss reft twigs herbs
1     9    0    1    1     9     5
> spider.mv<-mvpart(as.matrix(spider[,1:12])~water+sand+moss+reft+twigs+herbs,data=spider)

実行すると回帰木が作成される。

次に、目的変数の主成分分析の結果も表示させるために、引数pcaにTRUEを指定する。

> spider.mv<-mvpart(as.matrix(spider[,1:12])~water+sand+moss+reft+twigs+herbs,data=spider,pca=T)


グラフを一度クリックすると、目的変数の主成分分析のグラフが表示される。

さて、同じことを関数rpartを使用して実施する。

1.rpart関数を使用して多変量回帰木を作成する

> spider.rp<-rpart(as.matrix(spider[,1:12])~water+sand+moss+reft+twigs+herbs,data=spider)

可視化する。

> plot(spider.rp,uniform=T,margin=0.05)
> text(spider.rp,use.n=T)


とりあえず樹木を描くことができたが、全ての葉が必要かを確認する(剪定の必要性を確認する)ために関数plotcpを実行する。

> plotcp(spider.rp)


> printcp(spider.rp)
rpart(formula = as.matrix(spider[, 1:12]) ~ water + sand + moss + 
    reft + twigs + herbs, data = spider)

Variables actually used in tree construction:
[1] herbs moss  reft  sand  water

Root node error: 1418/28 = 50.642

n= 28 

        CP nsplit rel error  xerror     xstd
1 0.518641      0   1.00000 1.06149 0.121164
2 0.144890      1   0.48136 0.56700 0.072972
3 0.075375      2   0.33647 0.43982 0.074040
4 0.046781      3   0.26109 0.41701 0.075281
5 0.035301      4   0.21431 0.41637 0.071690
6 0.034792      5   0.17901 0.43751 0.072407
7 0.018806      6   0.14422 0.42978 0.077079
8 0.010000      7   0.12541 0.45108 0.077910

ここまでの結果から、葉(Size of tree)は3つで十分だということが分かるので、No3剪定して可視化する。

> spider.rp1<-prune(spider.rp,cp=0.075375)
> plot(spider.rp1,uniform=T,branch=0.6)
> text(spider.rp1,use.n=T)


期待通りに剪定された。ただし、ラベルをつけてくれていないなど、mvpartの方が一見便利そう。可視化方法は別途学習が必要。。。