Kursinhalt
Lineare Regression mit Python
Lineare Regression mit Python
Auswahl der Merkmale
Bei vielen Aufgaben stehen Ihnen zahlreiche Merkmale zur Verfügung, von denen Sie nicht wissen, ob sie nützlich sind. Glücklicherweise können Sie ein Modell mit allen Merkmalen trainieren, anschließend analysieren, welche keinen Einfluss haben, und das Modell dann nur mit den relevanten Merkmalen erneut trainieren.
Warum Merkmale aus dem Modell entfernen?
Wenn Sie dem Modell ein Merkmal hinzufügen, das keinen Bezug zum Zielwert hat, erzeugt dies Rauschen im Modell und verschlechtert die Vorhersage. Bei vielen irrelevanten Merkmalen summiert sich das Rauschen, wodurch die Modellleistung weiter abnimmt.
Wie erkennt man, ob Merkmale gut oder schlecht sind?
Wie bereits bekannt, berechnet die OLS-Klasse während des Trainings auch statistische Kennzahlen. Unter anderem wird ein t-Test durchgeführt, um zu bestimmen, ob jedes Merkmal einen signifikanten Einfluss auf das Ziel hat. Die Testergebnisse finden Sie in der summary()
-Tabelle wie unten dargestellt:
import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file X,y = df[['Father', 'Mother']], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Create X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train an OLS object print(regression_model.summary()) #Get the summary
Von Interesse ist der p-Wert für jedes Merkmal.
Kurz gesagt: Je niedriger der p-Wert, desto höher das Vertrauen, dass das Merkmal einen Einfluss hat.
In der Statistik muss der Schwellenwert des p-Werts festgelegt werden, der als Signifikanzniveau bezeichnet wird. Dieser liegt üblicherweise bei 0,05. Sobald der p-Wert diesen Schwellenwert überschreitet, wird das Merkmal als nicht einflussreich betrachtet.
In der Praxis verbessern Merkmale mit einem etwas höheren p-Wert als 0,05 jedoch häufig ebenfalls das Modell. Daher ist es besser, das Modell sowohl mit als auch ohne dieses Merkmal zu testen, anstatt es sofort zu entfernen, es sei denn, der p-Wert ist sehr hoch (>0,4). In diesem Fall kann das Merkmal bedenkenlos entfernt werden.
Der p-Wert liegt zwischen 0 und 1. Wenn von einem niedrigen p-Wert die Rede ist, ist damit ein Wert unter 0,05 gemeint; ein hoher p-Wert liegt in der Regel über 0,3–0,5.
In unserem Beispiel erhielten wir p-Werte für die Körpergröße der Mutter und die Konstante von 0,087 bzw. 0,051. Wenn wir Merkmale mit einem p-Wert > 0,05 entfernen, erhalten wir das untenstehende Ergebnis (links).
Selbst visuell lässt sich erkennen, dass das Modell mit Konstante (rechts) besser ist, daher sollte diese nicht aus dem Modell entfernt werden.
Es ist üblich, bei kleinen Datensätzen relativ hohe p-Werte (0,05 bis 0,2) für einflussreiche Merkmale zu erhalten. Der p-Wert zeigt die Sicherheit an, dass das Merkmal tatsächlich einen Einfluss hat. Je mehr Datenpunkte vorhanden sind, desto leichter lassen sich einflussreiche Merkmale von unwichtigen unterscheiden. Angenommen, Sie haben Daten, die zeigen, dass 9 von 10 großen Personen, die Sie kennen, täglich Äpfel gegessen haben. Können Sie sicher sein, dass dies zusammenhängt? Aber was wäre, wenn es 9000 von 10000 wären? Das würde das Vertrauen in den Zusammenhang erhöhen.
Wie entfernt man ungeeignete Merkmale?
Es genügt, die Spalte, die dem Merkmal entspricht, aus X_tilde
zu entfernen. Dies kann mit folgendem Code durchgeführt werden:
X_tilde = X_tilde.drop(___, axis=1)
Zum Beispiel, um die Spalten 'const' und 'Mother' zu entfernen, verwenden Sie:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Erstellen Sie anschließend ein neues OLS-Objekt mit dem aktualisierten X_tilde
:
regression_model=sm.OLS(y, X_tilde)
1. Welche der Merkmale sollten BEIBEHALTEN werden?
2. Wählen Sie die FALSCHE Aussage aus.
Danke für Ihr Feedback!