Jak obliczyć auc (obszar pod krzywą) w pythonie


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 Pythonie.

Krok 1: Importuj pakiety

Najpierw zaimportujemy niezbędne pakiety, aby wykonać regresję logistyczną w Pythonie:

 import pandas as pd
import numpy as np
from sklearn. model_selection import train_test_split
from sklearn. linear_model import LogisticRegression
from sklearn import metrics

Krok 2: Dopasuj model regresji logistycznej

Następnie zaimportujemy zbiór danych i dopasujemy do niego model regresji logistycznej:

 #import dataset from CSV file on Github
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/default.csv"
data = pd. read_csv (url)

#define the predictor variables and the response variable
X = data[[' student ',' balance ',' income ']]
y = data[' default ']

#split the dataset into training (70%) and testing (30%) sets
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size= 0.3 ,random_state= 0 ) 

#instantiate the model
log_regression = LogisticRegression()

#fit the model using the training data
log_regression. fit (X_train,y_train)

Krok 3: Oblicz AUC

Możemy użyć funkcji metrics.roc_auc_score() do obliczenia AUC modelu:

 #use model to predict probability that given y value is 1
y_pred_proba = log_regression. predict_proba (X_test)[::, 1 ]

#calculate AUC of model
auc = metrics. roc_auc_score (y_test, y_pred_proba)

#print AUC score
print (auc)

0.5602104030579559

AUC (obszar pod krzywą) dla tego konkretnego modelu wynosi 0,5602 .

Przypomnijmy, że model z wynikiem AUC wynoszącym 0,5 nie jest lepszy od modelu, który dokonuje losowych domysłów.

Zatem w większości przypadków model z wynikiem AUC wynoszącym 0,5602 zostanie uznany za słabo radzący sobie z klasyfikacją obserwacji do właściwych klas.

Dodatkowe zasoby

Poniższe samouczki dostarczają dodatkowych informacji na temat krzywych ROC i wyników AUC:

Jak interpretować krzywą ROC (z przykładami)
Co uważa się za dobry wynik AUC?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *