开始使用免费开始使用

Boosting 对决:Light vs Extreme

虽然 CatBoost 模型的表现已经不错,但让我们再尝试另外两种梯度提升的「风味」,看看哪种更胜一筹:「轻量」还是「极端」。

当数据包含类别型特征时,CatBoost 非常推荐。在本例中,所有特征都是数值型,因此其他方法可能会取得更好的效果。

由于我们要构建回归器,将使用一个额外参数 objective 来指定学习目标函数。若要使用「平方误差」,在 XGBoost 中将 objective 设为 'reg:squarederror',在 LightGBM 中设为 'mean_squared_error'

此外,我们会为 XGBoost 指定参数 n_jobs,以缩短计算时间。

注意:请务必不要使用分类器,否则您的会话可能会过期!

本练习是课程的一部分

Python 中的集成方法

查看课程

练习说明

  • 构建一个 XGBRegressor,参数为:max_depth = 3learning_rate = 0.1n_estimators = 100,以及 n_jobs=2
  • 构建一个 LGBMRegressor,参数为:max_depth = 3learning_rate = 0.1n_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))
编辑并运行代码