시작하기무료로 시작하기

XGBoost에서 정규화 사용하기

영상에서 l1 정규화 예시를 살펴봤으니, 이제 l2 정규화 패널티(일명 "lambda") 값을 바꿔 보면서 Ames 주택 데이터셋에서 전체 모델 성능에 어떤 영향을 주는지 확인해 보세요.

이 연습은 강의의 일부입니다

XGBoost로 익히는 Extreme Gradient Boosting

강의 보기

연습 안내

  • 이전과 같이 Xy에서 DMatrix를 생성하세요.
  • "objective""reg:squarederror", "max_depth"3으로 지정한 초기 하이퍼파라미터 딕셔너리를 만드세요.
  • for 루프 안에서 xgb.cv()를 사용하고, 현재 l2 값(reg)을 전달하여 "lambda" 값을 체계적으로 변경하세요.
  • 각 교차 검증된 xgboost 모델에 대해 마지막 부스팅 라운드의 "test-rmse-mean"을 추가하세요.
  • 'Submit Answer'를 눌러 결과를 확인해 보세요. 무엇이 보이나요?

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# 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"]))
코드 편집 및 실행