본문 바로가기
공부/R & Python

11-2. 의사결정나무 (Decision Tree) 2

by 드인 2020. 3. 4.

11-2. 의사결정나무 (Decision Tree) 2

2) 의사결정나무 - rpart 패키지

- 의사결정나무 실행패키지 : rpart, party 패키지 (tree패키지 외 사용)

install.packages("rpart")
install.packages("party")
library(rpart)
library(party)

 

- 의사결정나무 함수 : rpart (종속변수~x1+x2+x3+x4, data= )

cl1<-rpart(Species~., data=train)
plot(cl1)
text(cl1, cex=1.5)

rpart 함수는 가지치기를 해서 나온 결과

-> 데이터에 따라 부가적인 가지치기가 필요할 수도 있음

*tree패키지에서 pruning한 결과와 동일

 

- rpart패키지는 과적합의 우려과 있으므로 pruning을 해줘야 함(iris의 경우 필요없음)

- printcp에서 xerror(cross validation error)의 값이 최소가 되는 마디를 선택 

printcp(cl1)
plotcp(cl1)

- rpart결과에서 복잡도계수에 기반한 최적 가지치기

- rpart를 사용한 최종 tree모형 (iris data)

pcl1<-prune(cl1, cp=cl1$cptable[which.min(cl1$cptable[,"xerror"]),"CP"])
plot(pcl1)
text(pcl1)

tree함수를 이용한 최종모형과 동일한 tree결과

 

- 의사결정나무결과 정확도 : test data에 대한 정확도

pred2<- predict(cl1,test, type='class')
confusionMatrix(pred2,test$Species)

 

3) 의사결정나무 - party 패키지

- 의사결정나무 실행 패키지 : party 패키지 (tree패키지 외 사용)

help(ctree)

- 의사결정나무 함수 : ctree (종속변수~x1+x2+x3+x4, data= )

partymod<-ctree(Species~.,data=train)
plot(partymod)

두개가 섞여있는 경우 불순도가 크다고 할 수 있음

 

- party 패키지를 이용한 결과

partymod

- 의사결정나무결과 정확도 : test data에 대한 정확도 (party 패키지 사용)

partypred<-predict(partymod,test)
confusionMatrix(partypred,test$Species)