決定木の枝刈り

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 17.57.10.png

R で学ぶクレジットリスク・モデリング

plotcp と tree_undersample

スクリーンショット 2020-06-22 17.56.53.png

$$

$CP = 0.003653$

R で学ぶクレジットリスク・モデリング

枝刈り後の木をプロット

スクリーンショット 2020-06-23 18.16.04.png

ptree_undersample=prune(tree_undersample,
                        cp = 0.003653)

plot(ptree_undersample,
     uniform=TRUE)

text(ptree_undersample)
R で学ぶクレジットリスク・モデリング

枝刈り後の木をプロット

スクリーンショット 2020-06-23 18.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 18.05.09.png

library(rpart.plot)
prp(ptree_undersample)
R で学ぶクレジットリスク・モデリング

part.plot パッケージの prp()

スクリーンショット 2020-06-22 18.04.33.png

library(rpart.plot)
prp(ptree_undersample, extra = 1)
R で学ぶクレジットリスク・モデリング

演習に進みましょう!

R で学ぶクレジットリスク・モデリング

Preparing Video For Download...