Bắt đầu ngayBắt đầu miễn phí

Dùng regularization trong XGBoost

Sau khi xem ví dụ về l1 regularization trong video, giờ bạn sẽ thay đổi mức phạt l2 regularization - còn gọi là "lambda" - và quan sát ảnh hưởng của nó đến hiệu năng tổng thể của mô hình trên tập dữ liệu giá nhà Ames.

Bài tập này là một phần của khóa học

Gradient Boosting Cực Mạnh với XGBoost

Xem khóa học

Hướng dẫn bài tập

  • Tạo DMatrix từ Xy như trước.
  • Tạo một từ điển tham số ban đầu với "objective""reg:squarederror""max_depth"3.
  • Dùng xgb.cv() bên trong một vòng lặp for và thay đổi có hệ thống giá trị "lambda" bằng cách truyền vào giá trị l2 hiện tại (reg).
  • Thêm giá trị "test-rmse-mean" từ vòng boosting cuối cùng cho mỗi mô hình xgboost được cross-validate.
  • Nhấn "Gửi câu trả lời" để xem kết quả. Bạn nhận thấy điều gì?

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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"]))
Chỉnh sửa và Chạy Mã