선형 베이스 러너
이제 XGBoost에서 트리를 베이스 모델로 사용해 보았으니, XGBoost에서 사용할 수 있는 다른 유형의 베이스 모델인 선형 학습자도 사용해 보겠습니다. 이 모델은 XGBoost에서 흔히 쓰이진 않지만, XGBoost의 강력한 학습 API를 활용해 정규화된 선형 회귀를 만들 수 있습니다. 다만 일반적이지 않기 때문에, 모델을 만들 때는 xgb.train()처럼 scikit-learn 호환이 아닌 XGBoost 자체 함수를 사용해야 합니다.
이를 위해서는 사용하려는 부스터 종류를 설명하는 매개변수 딕셔너리를 만들어야 합니다(마치 1장에서 xgb.cv()를 사용할 때 딕셔너리를 만들었던 것과 유사합니다). 부스터 유형(베이스 모델)을 정의하는 데 필요한 키-값 쌍은 "booster":"gblinear"입니다.
모델을 만들고 나면, 이전과 마찬가지로 모델의 .train()과 .predict() 메서드를 사용할 수 있습니다.
여기서는 데이터가 이미 학습용과 테스트용으로 분할되어 있으므로, XGBoost 학습 API에 필요한 DMatrix 객체 생성부터 바로 시작하시면 됩니다.
이 연습은 강의의 일부입니다
XGBoost로 익히는 Extreme Gradient Boosting
연습 안내
- 두 개의
DMatrix객체를 만드세요. 학습 세트(X_train과y_train)용DM_train과, 테스트 세트(X_test와y_test)용DM_test입니다. - 사용할
"booster"유형("gblinear")과 최소화할"objective"("reg:squarederror")를 정의하는 매개변수 딕셔너리를 만드세요. xgb.train()을 사용해 모델을 학습하세요.params,dtrain,num_boost_round에 대한 인자를 지정해야 합니다. 부스팅 라운드는5를 사용하세요.xg_reg.predict()에DM_test를 전달하여 테스트 세트의 레이블을 예측하고, 결과를preds에 할당하세요.- 'Submit Answer'를 눌러 RMSE를 확인하세요!
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Convert the training and testing sets into DMatrixes: DM_train, DM_test
DM_train = ____
DM_test = ____
# Create the parameter dictionary: params
params = {"____":"____", "____":"____"}
# Train the model: xg_reg
xg_reg = ____.____(____ = ____, ____=____, ____=____)
# Predict the labels of the test set: preds
preds = ____
# Compute and print the RMSE
rmse = np.sqrt(mean_squared_error(y_test,preds))
print("RMSE: %f" % (rmse))