[R program]PART (recursive partitioning and regression trees、再帰分割回帰木)
PARTは決定木の代表的な方法。
閾値を決めて直線で分けていくので予測性能はSVM等の機械学習よりは良くないが、結果を解釈しやすいのが利点。
機械学習を全体的に勉強したい場合はHastieの本がお勧め。

- 作者: Trevor Hastie,Robert Tibshirani,Jerome Friedman
- 出版社/メーカー: Springer
- 発売日: 2009/03
- メディア: ハードカバー
- 購入: 1人 クリック: 222回
- この商品を含むブログ (16件) を見る
決定木は基本的に回帰をやっていると思うので、標準化などの線形変換を行っても結果は変わらない。
またrpartとmvpartでは木の大きさを決めるパラメータが異なっていて、cpとsizeで指定するみたい。
sizeで指定出来た方が結果を制御出来ている感じがする。
出る結果はこんな感じ。
Rでのサンプルコードは以下に。
library(mvpart) #------3クラスに関連する変数(var1)と関連しない変数(var2)の作成 class <- as.character(rep(1:3, 100)) set.seed(1) norm <- rnorm(600) Data <- data.frame(class, var1=round( (norm[1:300]+as.numeric(class))*100, digits=0), var2=round(norm[301:600]*100, digits=0)) DataR <- rpart(class~var1 + var2, data=Data, cp=0.01) plot(DataR, margin=0.1) text(DataR, use.n=T) #---他のパッケージでも同じ結果 DataMV <- mvpart(class~var1 + var2, data=Data, size=5) library(maptree) draw.tree (clip.rpart (DataR, best=5), nodeinfo=T, units="species", cases="n", digits=0) #---分類結果を確認 library(pinktoe) splits.rpart(DataMV) library(ggplot2) p <- ggplot(Data, aes(var1, var2, col=class)) + geom_point() p + geom_vline(xintercept=121, col=2, lty=2) + geom_vline(xintercept=253, col=3, lty=2) #------Dataを標準化して決定木 DataScale <- data.frame(apply(Data[, 2:3], 2, scale)) DataScale <- data.frame(class, DataScale) DataScaleR <- rpart(as.character(class)~var1 + var2, data=DataScale, cp=0.01) plot(DataScaleR, margin=0.05) text(DataScaleR, use.n=T) #maptreeを読み込んだ後だとエラーが出る