R에서 auc(곡선 아래 면적)를 계산하는 방법


로지스틱 회귀는 응답 변수가 이진일 때 회귀 모델을 맞추는 데 사용하는 통계 방법입니다. 로지스틱 회귀 모델이 데이터 세트에 얼마나 잘 맞는지 평가하기 위해 다음 두 가지 측정항목을 살펴볼 수 있습니다.

  • 민감도: 결과가 실제로 긍정적일 때 모델이 관찰에 대한 긍정적인 결과를 예측할 확률입니다. 이를 ‘진양성률’이라고도 합니다.
  • 특이성: 결과가 실제로 부정적일 때 모델이 관찰에 대해 부정적인 결과를 예측할 확률입니다. 이를 ‘진음성률’이라고도 합니다.

이 두 가지 측정값을 시각화하는 한 가지 방법은 “수신기 작동 특성” 곡선을 나타내는 ROC 곡선을 만드는 것입니다.

y축을 따라 민감도를, x축을 따라 (1 – 특이도)를 표시하는 그래프입니다. 데이터 분류에서 로지스틱 회귀 모델의 효율성을 정량화하는 한 가지 방법은 “곡선 아래 영역”을 의미하는 AUC를 계산하는 것입니다.

AUC가 1에 가까울수록 모델이 더 좋습니다.

다음 단계별 예에서는 R에서 로지스틱 회귀 모델에 대한 AUC를 계산하는 방법을 보여줍니다.

1단계: 데이터 로드

먼저 ISLR 패키지에서 기본 데이터 세트를 로드합니다. 여기에는 다양한 사람들이 대출을 불이행했는지 여부에 대한 정보가 포함되어 있습니다.

 #load dataset
data <- ISLR::Default

#view first six rows of dataset
head(data)

  default student balance income
1 No No 729.5265 44361.625
2 No Yes 817.1804 12106.135
3 No No 1073.5492 31767.139
4 No No 529.2506 35704.494
5 No No 785.6559 38463.496
6 No Yes 919.5885 7491.559

2단계: 로지스틱 회귀 모델 적합

다음으로, 개인이 채무를 불이행할 확률을 예측하기 위해 로지스틱 회귀 모델을 적용하겠습니다.

 #make this example reproducible
set. seeds (1)

#Use 70% of dataset as training set and remaining 30% as testing set
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)

3단계: 모델 AUC 계산

다음으로 pROC 패키지의 auc() 함수를 사용하여 모델의 AUC를 계산합니다. 이 함수는 다음 구문을 사용합니다.

없음(응답, 예측)

예제에서 이 함수를 사용하는 방법은 다음과 같습니다.

 #calculate probability of default for each individual in test dataset
predicted <- predict(model, test, type=" response ")

#calculate AUC
library (pROC)
auc(test$default, predicted)

Setting levels: control = No, case = Yes
Setting direction: controls < boxes
Area under the curve: 0.9437

모델의 AUC는 0.9437 로 나타났습니다.

이 값은 1에 가까우므로 모델이 개인의 대출 불이행 여부를 매우 잘 예측하고 있음을 나타냅니다.

의견을 추가하다

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