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% 입니다.

일반적으로 이 비율이 낮을수록 모델이 결과를 더 잘 예측할 수 있습니다. 따라서 이 특정 모델은 개인의 채무 불이행 여부를 예측하는 데 매우 효과적인 것으로 입증되었습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다