Jak obliczyć auc (pole pod krzywą) w r
Regresja logistyczna to metoda statystyczna, której używamy do dopasowania modelu regresji, gdy zmienna odpowiedzi jest binarna. Aby ocenić, jak dobrze model regresji logistycznej pasuje do zbioru danych, możemy przyjrzeć się następującym dwóm metrykom:
- Czułość: prawdopodobieństwo, że model przewiduje pozytywny wynik obserwacji, gdy wynik jest rzeczywiście pozytywny. Nazywa się to również „prawdziwie dodatnią stopą procentową”.
- Specyficzność: prawdopodobieństwo, że model przewiduje negatywny wynik obserwacji, gdy wynik jest faktycznie negatywny. Nazywa się to również „prawdziwie ujemną stopą”.
Jednym ze sposobów wizualizacji tych dwóch pomiarów jest utworzenie krzywej ROC , która oznacza krzywą „charakterystyki działania odbiornika”.
Jest to wykres przedstawiający czułość wzdłuż osi y i (1 – swoistość) wzdłuż osi x. Jednym ze sposobów ilościowego określenia skuteczności modelu regresji logistycznej w klasyfikacji danych jest obliczenie AUC , co oznacza „obszar pod krzywą”.
Im AUC jest bliższe 1, tym lepszy model.
Poniższy przykład pokazuje krok po kroku, jak obliczyć AUC dla modelu regresji logistycznej w R.
Krok 1: Załaduj dane
Najpierw załadujemy domyślny zestaw danych z pakietu ISLR , który zawiera informacje o tym, czy różne osoby nie spłaciły pożyczki.
#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
Krok 2: Dopasuj model regresji logistycznej
Następnie dopasujemy model regresji logistycznej, aby przewidzieć prawdopodobieństwo niewypłacalności danej osoby:
#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)
Krok 3: Oblicz model AUC
Następnie użyjemy funkcji auc() z pakietu pROC do obliczenia AUC modelu. Ta funkcja używa następującej składni:
brak(odpowiedź, przewidywana)
Oto jak użyć tej funkcji w naszym przykładzie:
#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
Okazuje się, że AUC modelu wynosi 0,9437 .
Ponieważ wartość ta jest bliska 1, oznacza to, że model bardzo dobrze radzi sobie z przewidywaniem, czy dana osoba nie spłaci pożyczki.