Boostningstävling: Light vs Extreme
CatBoost-modellen presterar relativt bra, men låt oss prova två andra varianter av boosting och se vilken som ger bäst resultat: den "lätta" eller den "extrema" ansatsen.
CatBoost rekommenderas starkt när det finns kategoriska särdrag. I det här fallet är alla särdrag numeriska, vilket innebär att någon av de andra metoderna kan ge bättre resultat.
Eftersom vi bygger regressorer använder vi en extra parameter, objective, som anger vilken inlärningsfunktion som ska användas. För att tillämpa ett kvadratfel sätter vi objective till 'reg:squarederror' för XGBoost och 'mean_squared_error' för LightGBM.
Dessutom anger vi parametern n_jobs för XGBoost för att förbättra beräkningstiden.
OBS: var noga med att inte använda klassificerare, annars kan din session ta slut!
Den här övningen är en del av kursen
Ensemblemetoder i Python
Övningsinstruktioner
- Bygg en
XGBRegressormed parametrarna:max_depth = 3,learning_rate = 0.1,n_estimators = 100ochn_jobs=2. - Bygg en
LGBMRegressormed parametrarna:max_depth = 3,learning_rate = 0.1ochn_estimators = 100.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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))