ПочатиПочніть безкоштовно

Використання регуляризації в XGBoost

Побачивши приклад l1-регуляризації у відео, тепер ви варіюватимете штраф за l2-регуляризацію — також відомий як "lambda" — і подивитеся, як це впливає на загальну якість моделі на наборі даних про житло в Еймсі.

Ця вправа є частиною курсу

Екстремальний градієнтний бустинг з XGBoost

Переглянути курс

Інструкції до вправи

  • Створіть DMatrix з X та y, як раніше.
  • Створіть початковий словник параметрів, у якому "objective" дорівнює "reg:squarederror", а "max_depth"3.
  • Використовуйте xgb.cv() всередині циклу for та систематично змінюйте значення "lambda", передаючи поточне значення l2 (reg).
  • Додайте "test-rmse-mean" з останнього раунда бустингу для кожної крос-валідаційної моделі xgboost.
  • Натисніть 'Надіслати відповідь', щоб побачити результати. Що ви помічаєте?

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# Create the DMatrix: housing_dmatrix
housing_dmatrix = xgb.DMatrix(data=X, label=y)

reg_params = [1, 10, 100]

# Create the initial parameter dictionary for varying l2 strength: params
params = {"____":"____","____":____}

# Create an empty list for storing rmses as a function of l2 complexity
rmses_l2 = []

# Iterate over reg_params
for reg in reg_params:

    # Update l2 strength
    params["lambda"] = ____
    
    # Pass this updated param dictionary into cv
    cv_results_rmse = ____.____(dtrain=____, params=____, nfold=2, num_boost_round=5, metrics="rmse", as_pandas=True, seed=123)
    
    # Append best rmse (final round) to rmses_l2
    ____.____(____["____"].tail(1).values[0])

# Look at best rmse per l2 param
print("Best rmse as a function of l2:")
print(pd.DataFrame(list(zip(reg_params, rmses_l2)), columns=["l2", "rmse"]))
Редагувати та запускати код