Modèle de durée de vol : Régularisation !
Dans l'exercice précédent, vous avez ajouté des prédicteurs supplémentaires au modèle de durée de vol. Le modèle a obtenu de bons résultats lors des tests, mais le nombre élevé de coefficients rendait son interprétation difficile.
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. La plupart des coefficients du modèle obtenu seront définis sur zéro. Cela signifie que seul un sous-ensemble des prédicteurs contribue réellement au modèle. Malgré la simplicité du modèle, il produit tout de même un bon RMSE sur les données de test.
Vous utiliserez une valeur spécifique pour la force de régularisation. Plus tard, vous apprendrez comment trouver la meilleure valeur à l'aide de la validation croisée.
Les données (identiques à celles de l'exercice précédent) sont disponibles à l'adresse flights
, réparties de manière aléatoire entre flights_train
et flights_test
.
Ce modèle comporte deux paramètres, λ (regParam
) et α (elasticNetParam
), où α détermine le type de régularisation et λ donne la force de la régularisation.
Cet exercice fait partie du cours
Apprentissage automatique avec PySpark
Instructions
- Ajustez un modèle de régression linéaire aux données d'apprentissage. Veuillez définir la force de régularisation sur 1.
- Calculez l'erreur quadratique moyenne (RMSE) sur les données de test.
- Veuillez examiner les coefficients du modèle.
- Combien de coefficients sont égaux à zéro ?
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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)