R에서 혼동 행렬을 만드는 방법(단계별)
로지스틱 회귀 는 응답 변수가 이진일 때 사용할 수 있는 회귀 유형입니다.
로지스틱 회귀 모델의 품질을 평가하는 일반적인 방법은 모델의 예측 값과 테스트 데이터 세트의 실제 값을 보여주는 2×2 테이블인 혼동 행렬을 만드는 것입니다.
다음 단계별 예제에서는 R에서 혼동 행렬을 만드는 방법을 보여줍니다.
1단계: 로지스틱 회귀 모델 적합
이 예에서는 ISLR 패키지의 기본 데이터 세트를 사용합니다. 우리는 학생 상태, 은행 잔고 및 연간 소득을 사용하여 특정 개인이 대출을 불이행할 가능성을 예측합니다.
다음 코드는 로지스틱 회귀 모델을 이 데이터 세트에 맞추는 방법을 보여줍니다.
#load necessary packages library (caret) library (InformationValue) library (ISLR) #load dataset data <-Default #split dataset into training and testing set set. seeds (1) sample <- sample(c(TRUE, FALSE), nrow(data), replace= TRUE , prob=c(0.7,0.3)) train <- data[sample, ] test <- data[!sample, ] #fit logistic regression model model <- glm(default~student+balance+income, family=" binomial ", data=train)
2단계: 혼동 행렬 만들기
다음으로 캐럿 패키지의 ConfusionMatrix() 함수를 사용하여 혼동 행렬을 만듭니다.
#use model to predict probability of default
predicted <- predict(model, test, type="response")
#convert defaults from "Yes" and "No" to 1's and 0's
test$default <- ifelse(test$default==" Yes ", 1, 0)
#find optimal cutoff probability to use to maximize accuracy
optimal <- optimalCutoff(test$default, predicted)[1]
#create confusion matrix
confusionMatrix(test$default, predicted)
0 1
0 2912 64
1 21 39
3단계: 혼동 행렬 평가
혼동 행렬을 사용하여 다음 측정항목을 계산할 수도 있습니다.
- 민감도: “실제 양성률” – 모델이 채무 불이행을 정확하게 예측한 개인의 비율입니다.
- 특이성: “진음성 비율” – 모델이 올바르게 예측한 개인의 비율이 기본값이 아닙니다 .
- 총 오분류율: 모델에 의해 발생한 총 오분류 비율입니다.
다음 코드는 이러한 측정항목을 계산하는 방법을 보여줍니다.
#calculate sensitivity
sensitivity(test$default, predicted)
[1] 0.3786408
#calculate specificity
specificity(test$default, predicted)
[1] 0.9928401
#calculate total misclassification error rate
misClassError(test$default, predicted, threshold =optimal)
[1] 0.027
이 모델의 총 분류 오류율은 2.7% 입니다.
일반적으로 이 비율이 낮을수록 모델이 결과를 더 잘 예측할 수 있습니다. 따라서 이 특정 모델은 개인의 채무 불이행 여부를 예측하는 데 매우 효과적인 것으로 입증되었습니다.