Модель тривалості польоту: регуляризація!
У попередній вправі ви додали більше ознак до моделі тривалості польоту. Модель добре спрацювала на тестових даних, але через велику кількість коефіцієнтів її було важко інтерпретувати.
У цій вправі ви використаєте регресію Лассо (з L1‑штрафом) для створення більш ощадливої моделі. Багато коефіцієнтів у підсумковій моделі буде обнулено. Це означає, що лише частина ознак справді впливає на модель. Попри простішу модель, вона все одно дає хороший RMSE на тестових даних.
Ви використаєте конкретне значення сили регуляризації. Пізніше ви дізнаєтеся, як знайти найкраще значення за допомогою крос‑валідації.
Дані (ті самі, що й у попередній вправі) доступні як flights, випадково поділені на flights_train і flights_test.
У цієї моделі два параметри: λ (regParam) і α (elasticNetParam), де α визначає тип регуляризації, а λ задає силу регуляризації.
Ця вправа є частиною курсу
Machine Learning з PySpark
Інструкції до вправи
- Навчіть лінійну регресійну модель на тренувальних даних. Встановіть силу регуляризації 1.
- Обчисліть RMSE на тестових даних.
- Перегляньте коефіцієнти моделі.
- Скільки коефіцієнтів дорівнює нулю?
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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)