CommencezCommencez gratuitement

Modèle de durée de vol : régularisation !

Dans l'exercice précédent, vous avez ajouté davantage de prédicteurs au modèle de durée de vol. Le modèle s'en est bien tiré sur les données de test, mais avec autant de coefficients, il était difficile à interpréter.

Dans cet exercice, vous utiliserez la régression Lasso (régularisée avec une pénalité L1) pour créer un modèle plus parcimonieux. Plusieurs coefficients du modèle obtenu seront ramenés à zéro. Cela signifie que seul un sous-ensemble des prédicteurs contribue réellement au modèle. Malgré sa simplicité, ce modèle obtient encore une bonne RMSE sur les données de test.

Vous utiliserez une valeur précise pour l'intensité de la régularisation. Plus tard, vous verrez comment trouver la meilleure valeur avec la validation croisée.

Les données (les mêmes que dans l'exercice précédent) sont disponibles sous flights, séparées aléatoirement en flights_train et flights_test.

Ce modèle comporte deux paramètres, λ (regParam) et α (elasticNetParam), où α détermine le type de régularisation et λ indique la force de la régularisation.

Cette activité fait partie du cours

Machine Learning avec PySpark

Voir le cours

Instructions de l’exercice

  • Ajustez un modèle de régression linéaire sur les données d'entraînement. Réglez l'intensité de la régularisation à 1.
  • Calculez la RMSE sur les données de test.
  • Examinez les coefficients du modèle.
  • Combien de coefficients sont égaux à zéro ?

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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)
Modifier et exécuter le code