의사결정나무 가지치기

R로 배우는 신용 위험 모델링

Lore Dirick

Manager of Data Science Curriculum at Flatiron School

큰 의사결정나무의 문제점

  • 너무 복잡해져 해석이 어려움
  • 테스트셋 적용 시 과적합
  • 해결: 가지치기에 printcp(), plotcp() 사용
R로 배우는 신용 위험 모델링

Printcp와 tree_undersample

printcp(tree_undersample)
Classification tree:
rpart(formula = loan_status ~ ., data = undersampled_training_set, method = "class",
 control = rpart.control(cp = 0.001))
Variables actually used in tree construction:
age    annual_inc     emp_cat     grade    home_ownership   ir_cat     loan_amnt     
Root node error: 2190/6570 = 0.33333
n= 6570 
        CP    nsplit  rel error   xerror      xstd
1  0.0059361      0    1.00000   1.00000   0.017447
2  0.0044140      4    0.97443   0.99909   0.017443
3  0.0036530      7    0.96119   0.98174   0.017366
4  0.0031963      8    0.95753   0.98904   0.017399
               ...  
16 0.0010654     76    0.84247   1.02511   0.017554
17 0.0010000     79    0.83927   1.02511   0.017554
R로 배우는 신용 위험 모델링

Plotcp와 tree_undersample

2020-06-22 오후 5.57.10 스크린샷.png

R로 배우는 신용 위험 모델링

Plotcp와 tree_undersample

2020-06-22 오후 5.56.53 스크린샷.png

$$

$CP = 0.003653$

R로 배우는 신용 위험 모델링

가지치기한 나무 그리기

2020-06-23 오후 6.16.04 스크린샷.png

ptree_undersample=prune(tree_undersample,
                        cp = 0.003653)

plot(ptree_undersample,
     uniform=TRUE)

text(ptree_undersample)
R로 배우는 신용 위험 모델링

가지치기한 나무 그리기

2020-06-23 오후 6.15.42 스크린샷.png

ptree_undersample=prune(tree_undersample,
                        cp = 0.003653)

plot(ptree_undersample,
     uniform=TRUE)

text(ptree_undersample,
     use.n=TRUE)
R로 배우는 신용 위험 모델링

rpart.plot 패키지의 prp()

2020-06-22 오후 6.05.09 스크린샷.png

library(rpart.plot)
prp(ptree_undersample)
R로 배우는 신용 위험 모델링

part.plot 패키지의 prp()

2020-06-22 오후 6.04.33 스크린샷.png

library(rpart.plot)
prp(ptree_undersample, extra = 1)
R로 배우는 신용 위험 모델링

연습해 봅시다!

R로 배우는 신용 위험 모델링

Preparing Video For Download...