Как рассчитать AUC (площадь под кривой) в R


Логистическая регрессия — это статистический метод, который мы используем для подбора модели регрессии, когда переменная отклика является бинарной. Чтобы оценить, насколько хорошо модель логистической регрессии соответствует набору данных, мы можем взглянуть на следующие две метрики:

  • Чувствительность: вероятность того, что модель предсказывает положительный результат для наблюдения, когда результат действительно положительный. Это также называется «истинно положительным показателем».
  • Специфичность: вероятность того, что модель предсказывает отрицательный результат для наблюдения, когда результат действительно отрицательный. Это также называется «истинной отрицательной ставкой».

Один из способов визуализировать эти две метрики — создать кривую ROC , которая означает кривую «рабочей характеристики приемника».

Это график, отображающий чувствительность по оси ординат и (1 — специфичность) по оси абсцисс. Одним из способов количественной оценки того, насколько хорошо модель логистической регрессии справляется с классификацией данных, является вычисление AUC , что означает «площадь под кривой».

Чем ближе AUC к 1, тем лучше модель.

В следующем пошаговом примере показано, как рассчитать AUC для модели логистической регрессии в R.

Шаг 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. seed (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 модели

Далее мы воспользуемся функцией 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 < cases
Area under the curve: 0.9437

AUC модели оказывается равной 0,9437 .

Поскольку это значение близко к 1, это указывает на то, что модель очень хорошо предсказывает, не выполнит ли физическое лицо дефолт по своему кредиту.

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.