Die logistische Regression ist eine statistische Methode, die wir verwenden, um ein Regressionsmodell anzupassen, wenn die Antwortvariable binär ist.

Um zu beurteilen, wie gut ein logistisches Regressionsmodell zu einem Datensatz passt, können wir uns die folgenden zwei Metriken ansehen:

  • Sensitivität: Die Wahrscheinlichkeit, dass das Modell ein positives Ergebnis für eine Beobachtung vorhersagt, wenn das Ergebnis tatsächlich positiv ist. Dies wird auch als „True-Positive-Rate“ bezeichnet.
  • Spezifität: Die Wahrscheinlichkeit, dass das Modell ein negatives Ergebnis für eine Beobachtung vorhersagt, wenn das Ergebnis tatsächlich negativ ist. Dies wird auch als „echter negativer Zinssatz“ bezeichnet.

Eine Möglichkeit, diese beiden Metriken zu visualisieren, besteht darin, eine ROC-Kurve zu erstellen, die für „Receiver Operating Characteristic“-Kurve steht.

Dies ist ein Diagramm, das die Sensitivität entlang der y-Achse und (1 – Spezifität) entlang der x-Achse anzeigt.

Eine Möglichkeit zu quantifizieren, wie gut das logistische Regressionsmodell Daten klassifiziert, ist die Berechnung von AUC, was für „Area under Curve“ steht.

Je näher die AUC bei 1 liegt, desto besser ist das Modell.

Das folgende Schritt-für-Schritt-Beispiel zeigt, wie die AUC für ein logistisches Regressionsmodell in Python berechnet wird.

Schritt 1: Pakete importieren

Zuerst importieren wir die Pakete, die für die Durchführung der logistischen Regression in Python erforderlich sind:

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

Schritt 2: Passen Sie das logistische Regressionsmodell an

Als Nächstes importieren wir einen Datensatz und passen ein logistisches Regressionsmodell daran an:

#Datensatz aus CSV-Datei auf Github importieren
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/default.csv"
data = pd.read_csv(url)

#definieren Sie die Prädiktorvariablen und die Antwortvariable
X = data[['student', 'balance', 'income']]
y = data['default']

#den Datensatz in Trainings- (70 %) und Testsätze (30 %) aufteilen
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=0) 

#instanziiere das Modell
log_regression = LogisticRegression()

#passen Sie das Modell mithilfe der Trainingsdaten an
log_regression.fit(X_train,y_train)

Schritt 3: Berechnen Sie die AUC

Wir können die Funktion metrics.roc_auc_score() verwenden, um die AUC des Modells zu berechnen:

#Verwenden Sie das Modell, um die Wahrscheinlichkeit vorherzusagen, dass der gegebene y-Wert 1 ist
y_pred_proba = log_regression.predict_proba(X_test)[::,1]

# AUC des Modells berechnen
auc = metrics.roc_auc_score(y_test, y_pred_proba)

#AUC-Score ausgeben
print(auc)

0.5602104030579559

Die AUC (Fläche unter der Kurve) für dieses spezielle Modell beträgt 0,5602.

Denken Sie daran, dass ein Modell mit einem AUC-Wert von 0,5 nicht besser ist als ein Modell, das zufällige Schätzungen durchführt.

Daher würde in den meisten Fällen ein Modell mit einem AUC-Wert von 0,5602 als schlecht bei der Klassifizierung von Beobachtungen in die richtigen Klassen angesehen werden.

Zusätzliche Ressourcen

Die folgenden Tutorials bieten zusätzliche Informationen zu ROC-Kurven und AUC-Scores:

So interpretieren Sie eine ROC-Kurve (mit Beispielen)
Was gilt als guter AUC-Wert?

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: