Модель продолжительности полёта: регуляризация!
В предыдущем упражнении вы добавили в модель продолжительности полёта дополнительные предикторы. Модель хорошо показала себя на тестовых данных, однако большое количество коэффициентов затрудняло её интерпретацию.
В этом упражнении вы воспользуетесь лассо-регрессией (с L1-регуляризацией), чтобы построить более компактную модель. Многие коэффициенты в итоговой модели будут обнулены. Это означает, что лишь часть предикторов реально влияет на результат. Несмотря на упрощение, модель по-прежнему даёт хорошее значение RMSE на тестовых данных.
Вы будете использовать конкретное значение силы регуляризации. Позже вы узнаете, как подбирать оптимальное значение с помощью кросс-валидации.
Данные (те же, что и в предыдущем упражнении) доступны как flights и случайным образом разделены на flights_train и flights_test.
Модель имеет два параметра: λ (regParam) и α (elasticNetParam), где α определяет тип регуляризации, а λ задаёт её силу.
Это упражнение является частью курса
Машинное обучение с 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)