Kursinhalt
Lineare Regression mit Python
Lineare Regression mit Python
Auswahl der Merkmale
Bei vielen Aufgaben kann es sein, dass Sie viele Merkmale haben, von denen Sie nicht wissen, ob sie nützlich sind oder nicht. Glücklicherweise können Sie ein Modell mit allen trainieren, sehen, welche nicht wirkungsvoll sind, und dann das Modell nur mit den wirkungsvollen erneut trainieren.
Warum sollten Sie Merkmale aus dem Modell entfernen?
Wenn Sie dem Modell ein Merkmal hinzufügen, das keine Beziehung zum Ziel hat, wird es etwas Rauschen im Modell erzeugen, was die Vorhersage verschlechtert. Und wenn Sie viele nutzlose Merkmale haben, wird das Rauschen sich summieren und das Modell immer schlechter machen.
Wie wissen Sie, ob die Merkmale gut oder schlecht sind?
Wie Sie bereits wissen, berechnet die OLS-Klasse während des Trainings auch statistische Informationen. Unter vielen anderen Dingen führt sie einen t-Test durch, um festzustellen, ob jedes Merkmal einen signifikanten Einfluss auf das Ziel hat. Die Ergebnisse des Tests finden Sie in der summary()
-Tabelle, wie unten gezeigt:
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
Was uns interessiert, 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 müssen wir die Schwelle des p-Werts festlegen, die als Signifikanzniveau bezeichnet wird. Es wird normalerweise auf 0,05 gesetzt, und sobald der p-Wert größer als dieses Signifikanzniveau ist, betrachten wir das Merkmal als nicht einflussreich.
In der Praxis verbessern Merkmale mit einem etwas höheren p-Wert als 0,05 das Modell jedoch normalerweise auch. Daher ist es besser, das Modell mit und ohne dieses Merkmal zu testen, anstatt es sofort aus dem Modell zu entfernen, es sei denn, es hat einen wirklich hohen p-Wert (>0,4). In diesem Fall können Sie das Merkmal sicher entfernen.
Hinweis
Der p-Wert reicht von 0 bis 1, daher meinen wir mit einem niedrigen p-Wert weniger als 0,05 und mit einem hohen p-Wert normalerweise mehr als 0,3-0,5.
In unserem Beispiel erhielten wir p-Werte für die Körpergröße der Mutter und die Konstante 0,087 und 0,051. Wenn wir Merkmale mit einem p-Wert > 0,05 entfernen, erhalten wir das untenstehende Ergebnis (links).
Selbst visuell können wir erkennen, dass das Modell mit Konstante (rechts) besser ist, daher ist es besser, es nicht aus dem Modell zu entfernen.
Hinweis
Es ist üblich, relativ hohe p-Werte (0,05 bis 0,2) für einflussreiche Merkmale zu erhalten, wenn der Datensatz klein ist. Der p-Wert zeigt das Vertrauen, dass das Merkmal einflussreich ist, und es ist natürlich, dass je mehr Instanzen wir haben, desto einfacher ist es, einflussreiche Merkmale von schlechten zu unterscheiden.
Angenommen, Sie haben Daten, die zeigen, dass 9/10 der großen Menschen, die Sie kennen, täglich Äpfel gegessen haben. Können Sie sicher sein, dass dies zusammenhängt? Aber was, wenn es 9000/10000 wären? Das würde Sie zuversichtlicher machen.
Wie entfernt man schlechte Merkmale?
Sie müssen nur die Spalte, die sich auf das Merkmal bezieht, aus X_tilde
entfernen. Dies kann mit folgendem Code durchgeführt werden:
Zum Beispiel, um die Spalten 'const' und 'Mother' zu entfernen, würden Sie verwenden:
Und dann ein neues OLS-Objekt mit dem aktualisierten X_tilde
erstellen:
1. Welche der Merkmale sollten Sie BEHALTEN?
2. Wählen Sie die FALSCHE Aussage.
Danke für Ihr Feedback!