최종 트리의 혼동 행렬과 정확도
지난 몇 개의 연습 문제에서 총 네 개의 가지치기된 결정나무를 만들었습니다. 보시다시피 최종 분할 개수는 트리마다 꽤 다릅니다:
ptree_undersample # 7 splits
ptree_prior # 9 splits
ptree_loss_matrix # 24 splits
ptree_weights # 6 splits
이제 어떤 트리가 정확도 측면에서 가장 잘 동작하는지 파악하는 것이 중요합니다. 정확도를 구하기 위해 먼저 테스트 세트를 사용해 예측을 만들고, 각 트리에 대해 혼동 행렬을 만듭니다. 이때 예측에는 type = "class" 인자를 추가하세요. 이렇게 하면 컷오프를 따로 설정할 필요가 없습니다.
다만, 중요한 것은 정확도뿐만 아니라 민감도와 특이도도 중요하다는 점입니다. 또한 이진값(0 또는 1) 대신 확률을 예측하면 컷오프를 조정할 수 있다는 장점이 있습니다. 반대로, 여기서의 어려움은 컷오프를 어떻게 선택하느냐입니다. 이에 대해서는 다음 장에서 다시 다룹니다.
참고로, 정확도는 다음과 같이 계산합니다: $$\textrm{Classification accuracy} = \frac{(TP + TN)}{(TP + FP + TN + FN)}$$
이 연습은 강의의 일부입니다
R로 배우는 신용 위험 모델링
연습 안내
predict()를 사용해 네 개 트리 모두에 대한 예측을 만드세요. 인자newdata에는test_set을 넣습니다.type = "class"를 반드시 포함하세요!- 각 결정나무에 대해 혼동 행렬을 만드세요. 함수
table()을 사용하고, 먼저 "true" 상태(test_set$loan_status사용)를 두고, 그다음 예측 값을 넣으세요. - 각 혼동 행렬을 사용해 정확도를 계산하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Make predictions for each of the pruned trees using the test set.
pred_undersample <- predict(ptree_undersample, newdata = test_set, type = "class")
pred_prior <-
pred_loss_matrix <-
pred_weights <-
# construct confusion matrices using the predictions.
confmat_undersample <- table(test_set$loan_status, pred_undersample)
confmat_prior <-
confmat_loss_matrix <-
confmat_weights <-
# Compute the accuracies
acc_undersample <- sum(diag(confmat_undersample)) / nrow(test_set)
acc_prior <-
acc_loss_matrix <-
acc_weights <-