НачатьНачать бесплатно

Модель продолжительности полёта: регуляризация!

В предыдущем упражнении вы добавили в модель продолжительности полёта дополнительные предикторы. Модель хорошо показала себя на тестовых данных, однако большое количество коэффициентов затрудняло её интерпретацию.

В этом упражнении вы воспользуетесь лассо-регрессией (с 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)
Редактировать и запускать код