Flugdauer-Modell: Regulierung!
In der vorherigen Übung hast du dem Flugdauermodell weitere Prädiktoren hinzugefügt. Das Modell schnitt bei den Testdaten gut ab, aber bei so vielen Koeffizienten war es schwer zu interpretieren.
In dieser Übung verwendest du die Lasso-Regression (regularisiert mit einer L1-Strafe), um ein einfacheres Modell zu erstellen. Viele der Koeffizienten im resultierenden Modell werden auf Null gesetzt. Das bedeutet, dass nur eine Teilmenge der Prädiktoren tatsächlich zu dem Modell beiträgt. Trotz des einfacheren Modells ergibt es immer noch einen guten RMSE bei den Testdaten.
Du verwendest einen bestimmten Wert für die Stärke der Regularisierung. Später erfährst du, wie du mit der Kreuzvalidierung den besten Wert findest.
Die Daten (die gleichen wie in der vorherigen Übung) sind als flights
verfügbar und werden nach dem Zufallsprinzip in flights_train
und flights_test
aufgeteilt.
Für dieses Modell gibt es zwei Parameter, λ (regParam
) und α (elasticNetParam
), wobei α die Art der Regularisierung bestimmt und λ die Stärke der Regularisierung angibt.
Diese Übung ist Teil des Kurses
Maschinelles Lernen mit PySpark
Anleitung zur Übung
- Passe ein lineares Regressionsmodell an die Trainingsdaten an. Setze die Stärke der Regularisierung auf 1.
- Berechne den RMSE für die Testdaten.
- Schau dir die Modellkoeffizienten an.
- Wie viele der Koeffizienten sind gleich Null?
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
from pyspark.ml.regression import LinearRegression
from pyspark.ml.evaluation import RegressionEvaluator
# Fit Lasso model (λ = 1, α = 1) to training data
regression = ____(____, ____, elasticNetParam=1).____(____)
# Calculate the RMSE on testing data
rmse = ____(____).____(____)
print("The test RMSE is", rmse)
# Look at the model coefficients
coeffs = regression.____
print(coeffs)
# Number of zero coefficients
zero_coeff = sum([____ == ____ for beta in regression.coefficients])
print("Number of coefficients equal to 0:", zero_coeff)