最後に、さらに多くのオプションを使った木
この演習では、動画で取り上げた最後のいくつかの引数を使います。rpart.control() 関数でいくつかの指定を変更し、rpart() の weights 引数を使って重みを加えます。ベクター case_weights はあらかじめ作成済みで、ワークスペースに読み込まれています。このベクターには、学習データ内の非デフォルトに重み1、デフォルトに重み3が設定されています。デフォルトに高い重みを与えることで、モデルはデフォルトを正しく分類することをより重視するようになります。
この演習はコースの一部です
R で学ぶクレジットリスク・モデリング
演習の手順
- 乱数シードを345に設定します。
- 提供されたコードに、
rpart()のweights引数へcase_weightsを渡す処理を追加します。 rpart.controlの引数minsplitとminbucketを使って、ノードで許可される最小分割数を5、リーフノードで許可される観測数の最小値を2に変更します。- plotcp() 関数を使って、交差検証誤差率が最小になる位置を確認します。
which.min()を使って、tree_weights$cp内で"xerror"が最小の行を特定し、これをindexに代入します。- 提供されたコードを使って、交差検証誤差が最小となる
cpを選択します。 - 交差検証誤差率が最小となる複雑度パラメータで木を剪定し、剪定後の木を
ptree_weightsに保存します。 prp()関数で剪定後の木をプロットします。第2引数extraを含め、1 に設定してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# set a seed and run the code to obtain a tree using weights, minsplit and minbucket
set.seed(345)
tree_weights <- rpart(loan_status ~ ., method = "class",
data = training_set,
control = rpart.control(minsplit = ___, minbucket = ___, cp = 0.001))
# Plot the cross-validated error rate for a changing cp
# Create an index for of the row with the minimum xerror
index <- which.min(___$___[ , "xerror"])
# Create tree_min
tree_min <- tree_weights$cp[index, "CP"]
# Prune the tree using tree_min
# Plot the pruned tree using the rpart.plot()-package