Modelo de duración del vuelo: ¡Regularización!
En el ejercicio anterior añadiste más predictores al modelo de duración del vuelo. El modelo funcionó bien en los datos de prueba, pero con tantos coeficientes era difícil de interpretar.
En este ejercicio utilizarás la regresión Lasso (regularizada con una penalización L1) para crear un modelo más parsimonioso. Muchos de los coeficientes del modelo resultante se pondrán a cero. Esto significa que sólo un subconjunto de los predictores contribuye realmente al modelo. A pesar de que el modelo es más sencillo, sigue produciendo un buen RMSE en los datos de prueba.
Utilizarás un valor específico para la fuerza de regularización. Más adelante aprenderás a encontrar el mejor valor utilizando la validación cruzada.
Los datos (los mismos que en el ejercicio anterior) están disponibles como flights
, divididos aleatoriamente en flights_train
y flights_test
.
Hay dos parámetros para este modelo, λ (regParam
) y α (elasticNetParam
), donde α determina el tipo de regularización y λ da la fuerza de la regularización.
Este ejercicio forma parte del curso
Machine learning con PySpark
Instrucciones de ejercicio
- Ajusta un modelo de regresión lineal a los datos de entrenamiento. Establece la fuerza de regularización en 1.
- Calcula el RMSE en los datos de prueba.
- Mira los coeficientes del modelo.
- ¿Cuántos de los coeficientes son iguales a cero?
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
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)