Modell för flygtid: Regularisering!
I den föregående övningen lade du till fler prediktorer i modellen för flygtid. Modellen presterade väl på testdata, men med så många koefficienter var den svår att tolka.
I den här övningen använder du Lasso-regression (regulariserad med en L1-penalty) för att skapa en mer sparsam modell. Många av koefficienterna i den resulterande modellen sätts till noll, vilket innebär att bara en delmängd av prediktorerna faktiskt bidrar till modellen. Trots den enklare modellen ger den ändå ett bra RMSE på testdata.
Du använder ett specifikt värde för regulariseringsstyrkan. Senare får du lära dig hur du hittar det bästa värdet med korsvalidering.
Data (samma som i föregående övning) finns tillgängligt som flights, slumpmässigt uppdelat i flights_train och flights_test.
Modellen har två parametrar: λ (regParam) och α (elasticNetParam), där α bestämmer typen av regularisering och λ anger regulariseringens styrka.
Den här övningen är en del av kursen
Maskininlärning med PySpark
Övningsinstruktioner
- Anpassa en linjär regressionsmodell till träningsdata. Ange regulariseringsstyrkan till 1.
- Beräkna RMSE på testdata.
- Undersök modellens koefficienter.
- Hur många av koefficienterna är lika med noll?
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)