1 분 소요

1. 의사결정나무 분석절차

A. 데이터의 준비

     # Data의 구성은 종속변수가 있어야 한다.
     > result <- read.csv("mydata.csv", header=TRUE)
     > head(result)

B. 데이터의 구분

의사결정나무 모델의 성능 평가를 위해서 train과 test 데이터로 구분한다.

     # 7:3 비율을 랜덤으로 나눈다.
     set.seed(1234) 
     # Traing Data 70%, Test Data 30%로 구부한다. 
     # replace = TRUE 중복을 허용하는지, 허용하지 않는지 일반적으로는 허용한다.TRUE 허용
    > resultsplit <- sample(2, nrow(result), replace=TRUE, prob=c(0.7, 0.3))

    > trainD <- result[resultsplit==1,] # train Data
    > testD <- result[resultsplit==2,] # test Data

C. 의사결정 나무의 형성

Training Data를 가지고 예측모델 형성을 한다.

      # rpart 를 사용시 ctree, tree - ctree(response~. , data=trainD) , tree(response~. , data=trainD)
    > trainModel <- rpart(respoose(종속변수)~. , data=trainD) # response 종속변수

D. Fitting 값을 확인 (Coverage, 설명에 대한 분석)

Training Data 를 가지고 검증 해본다.

      # Coverge 즉 설명에 대한 부분을 확인 해본다.
    > table(predict(trainModel, newdata=trainD, type="class"), trainD$response) 
    ##       high  low  nr
    ## high    31    1   0
    ## low      3   37   0
    ## nr       0    0  40    

위 예시 결과 에서 Fitting Ratio = (112-4) / 112 = 0.964 가 된다. (모델의 우수성 검증)

E. Accuracy of Model (Test 데이터로 예측률을 확인함)

Test Data를 가지고 검증해 본다

    > table(predict(trainModel, newdata=testD , type="class"), testD$response)
    ##       high  low  nr
    ## high    14    0   0
    ## low      2   12   0
    ## nr       0    0  10    

위 예시 결과 에서 Accuracy Ratio = (38-2) / 38 = 0.947 가 된다.

F. 의사결정나무를 확인

      # rpart 함수를 사용 했을때는 rpart.plot 으로 그리고
      # ctree 함수를 사용 했을때는 plot(trainModel) or plot(trainModel, type='simple') 로 확인 가능하다.
    > rpart.plot(trainModel)

2. 의사결정 나무 생성 관련 R 패키지

함수 내용 사용법 package
rpart() CART(Classification And Regression Trees) 방법을 사용 rpart(formula, data) install.packages(“rpart”)
ctree() Unbiased recursive partitioning based on permutation test 방법을 사용 ctree(formula, data) install.packages(“party”)

2가지 방법의 차이는 가지치기를 하는데 통계 방법이 다르다는 것.

  • ctree()는 rpart() 함수의 2가지 문제점(통계적 유의성에 대한 판단없이 노드분할에 대한 과적합, 다양한 값으로 분할 가능한 변수가 다른 변수에 비해 선호 되는 문제)를 해결 해줌

댓글남기기