Aan de slagGa gratis aan de slag

Model voor vluchttijd: regularisatie!

In de vorige oefening heb je meer voorspellers aan het model voor vluchttijd toegevoegd. Het model presteerde goed op de testgegevens, maar door het grote aantal coëfficiënten was het lastig te interpreteren.

In deze oefening gebruik je Lasso-regressie (geregulariseerd met een L1-straf) om een beknopter model te maken. Veel van de coëfficiënten in het resulterende model worden op nul gezet. Dat betekent dat slechts een subset van de voorspellers daadwerkelijk bijdraagt aan het model. Ondanks het simpelere model levert het nog steeds een goede RMSE op de testgegevens op.

Je gebruikt een specifieke waarde voor de regularisatiestrengte. Later leer je hoe je met kruisvalidering de beste waarde vindt.

De data (dezelfde als in de vorige oefening) zijn beschikbaar als flights, willekeurig gesplitst in flights_train en flights_test.

Er zijn twee parameters voor dit model, λ (regParam) en α (elasticNetParam), waarbij α het type regularisatie bepaalt en λ de sterkte van de regularisatie aangeeft.

Deze oefening maakt deel uit van de cursus

Machine Learning met PySpark

Cursus bekijken

Oefeninstructies

  • Pas een lineair regressiemodel op de trainingsgegevens. Stel de regularisatiestrengte in op 1.
  • Bereken de RMSE op de testgegevens.
  • Bekijk de modelcoëfficiënten.
  • Hoeveel van de coëfficiënten zijn gelijk aan nul?

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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)
Code bewerken en uitvoeren