【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の方が一見便利そう。可視化方法は別途学習が必要。。。