Modelul duratei zborului: Regularizare!
În exercițiul anterior ai adăugat mai mulți predictori la modelul duratei zborului. Modelul a performat bine pe datele de testare, dar cu atât de mulți coeficienți era greu de interpretat.
În acest exercițiu vei folosi regresia Lasso (regularizată cu o penalizare L1) pentru a construi un model mai parsimonios. Mulți dintre coeficienții modelului rezultat vor fi setați la zero, ceea ce înseamnă că doar un subset de predictori contribuie efectiv la model. Cu toate că modelul este mai simplu, acesta produce în continuare un RMSE bun pe datele de testare.
Vei folosi o valoare specifică pentru intensitatea regularizării. Mai târziu vei învăța cum să găsești cea mai bună valoare prin validare încrucișată.
Datele (aceleași ca în exercițiul anterior) sunt disponibile sub forma flights, împărțite aleatoriu în flights_train și flights_test.
Modelul are doi parametri: λ (regParam) și α (elasticNetParam), unde α determină tipul de regularizare, iar λ indică intensitatea regularizării.
Acest exercițiu face parte din cursul
Machine Learning cu PySpark
Instrucțiuni pentru exercițiu
- Antrenează un model de regresie liniară pe datele de antrenament. Setează intensitatea regularizării la 1.
- Calculează RMSE pe datele de testare.
- Examinează coeficienții modelului.
- Câți dintre coeficienți sunt egali cu zero?
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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)