Zacznij terazZacznij za darmo

Model czasu lotu: regularyzacja!

W poprzednim ćwiczeniu dodano więcej predyktorów do modelu czasu lotu. Model dobrze radził sobie na danych testowych, jednak duża liczba współczynników utrudniała jego interpretację.

W tym ćwiczeniu użyjesz regresji Lasso (regularyzowanej karą L1), aby zbudować bardziej oszczędny model. Wiele współczynników w wynikowym modelu zostanie ustawionych na zero – oznacza to, że tylko część predyktorów faktycznie wpływa na model. Mimo uproszczonej struktury model nadal osiąga dobry wynik RMSE na danych testowych.

Użyjesz konkretnej wartości siły regularyzacji. Później nauczysz się, jak znaleźć optymalną wartość za pomocą walidacji krzyżowej.

Dane (takie same jak w poprzednim ćwiczeniu) są dostępne jako flights, losowo podzielone na flights_train i flights_test.

Model ma dwa parametry: λ (regParam) i α (elasticNetParam), gdzie α określa rodzaj regularyzacji, a λ – jej siłę.

To ćwiczenie jest częścią kursu

Uczenie maszynowe z PySpark

Zobacz kurs

Instrukcje do ćwiczenia

  • Dopasuj model regresji liniowej do danych treningowych. Ustaw siłę regularyzacji na 1.
  • Oblicz RMSE na danych testowych.
  • Przyjrzyj się współczynnikom modelu.
  • Ile współczynników jest równych zero?

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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)
Edytuj i uruchom kod