Boosting 对决:Light vs Extreme
虽然 CatBoost 模型的表现已经不错,但让我们再尝试另外两种梯度提升的「风味」,看看哪种更胜一筹:「轻量」还是「极端」。
当数据包含类别型特征时,CatBoost 非常推荐。在本例中,所有特征都是数值型,因此其他方法可能会取得更好的效果。
由于我们要构建回归器,将使用一个额外参数 objective 来指定学习目标函数。若要使用「平方误差」,在 XGBoost 中将 objective 设为 'reg:squarederror',在 LightGBM 中设为 'mean_squared_error'。
此外,我们会为 XGBoost 指定参数 n_jobs,以缩短计算时间。
注意:请务必不要使用分类器,否则您的会话可能会过期!
本练习是课程的一部分
Python 中的集成方法
练习说明
- 构建一个
XGBRegressor,参数为:max_depth = 3、learning_rate = 0.1、n_estimators = 100,以及n_jobs=2。 - 构建一个
LGBMRegressor,参数为:max_depth = 3、learning_rate = 0.1、n_estimators = 100。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Build and fit an XGBoost regressor
reg_xgb = ____.____(____, ____, ____, ____, objective='reg:squarederror', random_state=500)
reg_xgb.fit(X_train, y_train)
# Build and fit a LightGBM regressor
reg_lgb = ____.____(____, ____, ____, objective='mean_squared_error', seed=500)
reg_lgb.fit(X_train, y_train)
# Calculate the predictions and evaluate both regressors
pred_xgb = reg_xgb.predict(X_test)
rmse_xgb = np.sqrt(mean_squared_error(y_test, pred_xgb))
pred_lgb = reg_lgb.predict(X_test)
rmse_lgb = np.sqrt(mean_squared_error(y_test, pred_lgb))
print('Extreme: {:.3f}, Light: {:.3f}'.format(rmse_xgb, rmse_lgb))