XGBoosting Home | About | Contact | Examples

Configure XGBoost "reg:quantileerror" Objective

The "reg:quantileerror" objective in XGBoost is used for quantile regression tasks, where the goal is to predict a specific quantile of the target variable distribution rather than just the mean.

It minimizes the quantile loss between the predicted and actual values, making it useful when you’re interested in understanding the relationship between the features and a specific quantile of the target variable.

from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from xgboost import XGBRegressor
from sklearn.metrics import mean_pinball_loss

# Generate a synthetic dataset for regression
X, y = make_regression(n_samples=1000, n_features=10, noise=0.1, random_state=42)

# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Initialize an XGBRegressor with the "reg:quantileerror" objective and specify the target quantile
quantile = 0.9
model = XGBRegressor(objective="reg:quantileerror", quantile_alpha=quantile, n_estimators=100, learning_rate=0.1)

# Fit the model on the training data
model.fit(X_train, y_train)

# Make predictions on the test set
y_pred = model.predict(X_test)

# Calculate the quantile loss (pinball loss) of the predictions
quantile_loss = mean_pinball_loss(y_test, y_pred, alpha=quantile)
print(f"Quantile Loss (Pinball Loss) at {quantile} quantile: {quantile_loss:.4f}")

The "reg:quantileerror" objective minimizes the quantile loss, also known as the pinball loss, between the predicted and actual values.

The quantile is specified using the quantile_alpha parameter, which should be a value between 0 and 1. For example, setting quantile_alpha=0.9 will predict the 90th percentile of the target distribution.

The quantile_alpha may also be a list of quantiles, for example quantile_alpha=[0.1,0.9] for the 10th and 90th percentiles of the target distribution.

When using the "reg:quantileerror" objective, consider the following tips:

  1. Ensure that the target variable is continuous and not categorical or binary.
  2. Scale the input features to a similar range to improve convergence and model performance.
  3. Use appropriate evaluation metrics for quantile regression, such as the pinball loss, to assess the model’s performance at the specified quantile.
  4. Tune hyperparameters like learning_rate, max_depth, and n_estimators to optimize performance for the specific quantile of interest.

Keep in mind that quantile regression may require more data compared to mean regression to achieve stable estimates, especially for extreme quantiles (close to 0 or 1).

See Also