R Decision Tree (決定木)

#目的変数がカテゴリカル変数の場合は、目的変数がどのカテゴリーに

#属するのかを予測するための方法としては、ロジスティクス回帰

#分析や判別分析などの方法を用いることが可能

#決定木は全体を説明変数を用いて段階的にグループ分けする

#classification tree(目的変数がカテゴリカルの場合)

#regression tree(目的変数が量的変数の場合)

 

#※より実践的な内容はこちら

 

#############決定木よる生存解析#############

library(vcd)

head(OvaryCancer)

 

install.packages("mvpart")

library(mvpart)

 

result <- rpart(survival ~ stage + operation + xray,

                weight = Freq, data = OvaryCancer)

library(graphics)

plot(result, uniform=TRUE, margin=0.2)

text(result, use.n=TRUE, all=TRUE)

 

#weightは集計データの場合に用いる部分、集計データの度数を

#表す変数を示している。個票データの際は指定不要。

 

#############量的変数を用いたグループ分け#############

library(mvpart)

result <- rpart(Species~.,data=iris)

result$control #結果におけるパラメータの表示

 

plot(result, uniform=T, margin=0.1)

text(result, use.n=T, all=T)

 

predict(result, type="class")

predict(result, type="prob")

iris$est <- predict(result, type="class")

 

#販売履歴データから、顧客区分(heavy,light等)をつけて、

#どの変数で分けられるのか見てみると面白いのではないか?

 

xtabs(~Species+est,data=iris)

 

#############順序カテゴリカルデータの場合#############

library(rpartOrdinal)

 

#############Practice################

library(vcd)

head(JointSports)

 

library(mvpart)

result <- rpart(opinion~year+grade+gender, weight=Freq,data=JointSports)

result

 

plot(result, uniform=T, margin=0.1)

text(result, use.n=T, all=T)

 

Titanic

Tita <- data.frame(Titanic)

result <- rpart(Survived~Class+Sex+Age, weight=Freq, data=Tita,

                control=rpart.control(minsplit=1,cp=0.001))

#control=rpart.control(minsplit=1,cp=0.001)の条件付けは

#極めて重要、これ次第でうまく分かれるかどうか決まる

#minsplitはノードに含まれる最小観察数、cpはcomplexity parameter。

#cpが設定値以下の場合は分割を行わない。

 

summary(result)

 

plot(result, uniform=T, margin=0.1)

text(result, use.n=T, all=T)

result