Convolution Smoothed Quantile Regression for XGBoost
Organizations: University of Toronto · Department of Statistical Sciences, University of Toronto
Abstract
The increasing availability of large and complex datasets across many scientific disciplines has led to widespread adoption of machine learning (ML) for prediction. However, most ML algorithms focus on point estimation and provide limited information about predictive uncertainty or the conditional distribution of the response, restricting their ability to characterize rare or extreme outcomes. We develop QXGB, a quantile-based gradient boosting framework, and introduce a convolution smoothed loss within it that estimates conditional quantiles for constructing dense cumulative distribution functions (CDFs), exceedance probabilities, and tail behaviour relevant to extreme outcomes. This approach preserves the computational efficiency of extreme gradient boosting while restoring the Hessian information XGBoost relies on for tree splitting, in turn providing interpretable measures of extreme value and exceedance probability predictions. We derive the gradients and Hessians needed to integrate convolution smoothed quantile loss with different kernel specifications into XGBoost, and with simulated data, benchmark this approach against alternative smoothed quantile regression losses, the native quantile objective in the XGBoost Python package, and independent versus multi-output tree estimation. The practical relevance is illustrated in an application predicting fine particulate matter (PM) in northern California, including periods where levels were elevated due to wildfire smoke. Our results show that convolution smoothed QXGB, particularly when paired with multi-output trees, delivers accurate predictions with near-zero quantile crossing, well-calibrated CDF and exceedance probability estimates, and useful tail characterization for extreme values. Interval estimation is also evaluated as a measure of data spread.
Figures & tables
| Method | Smoothing Parameter | Average CRPS | Average Crossing Rate |
|---|---|---|---|
| Default Python | 0.1 | 2.72 | 0.12 |
| Huber Pinball | 2.77 | 0.15 | |
| Arctan Pinball | 2.74 | 0.01 | |
| Convolution (Laplace) | 2.74 | 0.02 | |
| Convolution (Gaussian) | 2.75 | 0.03 | |
| Default Python | 0.5 | 2.72 | 0.12 |
| Model | Tuned Smoothing Parameter | BSS | ROC-AUC | ||
|---|---|---|---|---|---|
| Logistic (Binary Baseline) | 845 | 3962.50 | -0.87 | 0.80 | |
| Method 1: QXGB (Default) | 845 | 919.00 | 0.30 | 0.82 | |
| Method 2: QXGB (Huber) | t=0.1 | 845 | 806.50 | 0.30 | 0.81 |
| Method 3: QXGB (Arctan) | s=0.05 | 845 | 1060.6 | 0.30 | 0.82 |
| Method 4: QXGB (Gaussian Tuned) | h=0.2 | 845 | 890.30 | 0.31 | 0.81 |
| Method 5: QXGB (Laplace Tuned) | h=0.1 | 845 | 850.80 | 0.31 | 0.81 |
| Simulated Data | Python | Huber Pinball | Arctan Pinball | Convolution (Laplace) | Convolution (Gaussian) |
|---|---|---|---|---|---|
| With Spike | |||||
| PICP | 0.86 | 0.73 | 0.97 | 0.91 | 0.94 |
| PINAW | 0.18 | 0.14 | 0.25 | 0.19 | 0.20 |
| Interval Score | 49.48 | 55.71 | 53.86 | 50.26 | 51.20 |
| Tuned Smoothing Parameter | t=0.5 | s=0.1 | h=0.1 | h=0.25 | |
| Method | Smoothing Parameter | Average CRPS | Average Crossing Rate |
|---|---|---|---|
| Default Python | 0.1 | 1.18 | 0.22 |
| Huber Pinball | 2.65 | 0.75 | |
| Arctan Pinball | 1.20 | 0.02 | |
| Convolution (Laplace) | 2.03 | 0.45 | |
| Convolution (Gaussian) | 2.53 | 0.57 | |
| Default Python | 0.5 | 1.18 | 0.22 |
| Model | Tuned Smoothing Parameter | BSS | ROC-AUC | ||
|---|---|---|---|---|---|
| Logistic (Binary Baseline) | 736 | 1343.90 | 0.41 | 0.99 | |
| Method 1: QXGB (Default) | 736 | 672.40 | 0.66 | 0.98 | |
| Method 2: QXGB (Huber) | t=1.0 | 736 | 643.40 | 0.69 | 0.98 |
| Method 3: QXGB (Arctan) | s=0.1 | 736 | 977.40 | 0.67 | 0.98 |
| Method 4: QXGB (Gaussian Tuned) | h=0.5 | 736 | 747.20 | 0.70 | 0.99 |
| Method 5: QXGB (Laplace Tuned) | h=0.2 | 736 | 687.90 | 0.69 | 0.99 |
| Metric | Python | Huber Pinball | Arctan Pinball | Convolution (Laplace) | Convolution (Gaussian) |
|---|---|---|---|---|---|
| PICP | 0.87 | 0.74 | 1.00 | 0.97 | 0.98 |
| PINAW | 0.14 | 0.10 | 1.02 | 0.24 | 0.31 |
| Interval Score | 20.61 | 24.40 | 84.69 | 25.55 | 29.97 |
| Tuned Smoothing Parameter | t=3.0 | s=0.1 | h=0.25 | h=0.5 |
Appendix figures & tables6 assets
Supplementary material from the paper’s appendix.
Appendix
| Method | Smoothing Parameter | PICP | PINAW | Interval Score |
|---|---|---|---|---|
| Huber | ||||
| Arctan pinball loss |
| Model | Tuned Smoothing Parameter | BSS | ROC-AUC | ||
|---|---|---|---|---|---|
| Logistic (Binary Baseline) | 386 | 2114.90 | -0.84 | 0.81 | |
| Method 1: QXGB (Default) | 386 | 1067.70 | 0.25 | 0.75 | |
| Method 2: QXGB (Huber) | t=0.5 | 386 | 1064.80 | 0.24 | 0.73 |
| Method 3: QXGB (Arctan) | s=0.2 | 386 | 1114.90 | 0.24 | 0.79 |
| Method 4: QXGB (Gaussian Tuned) | h=0.05 | 386 | 1059.80 | 0.24 | 0.74 |
| Method 5: QXGB (Laplace Tuned) | h=0.5 | 386 | 1089.60 | 0.25 | 0.76 |
| Simulated Data | Python | Huber Pinball | Arctan Pinball | Convolution (Laplace) | Convolution (Gaussian) |
|---|---|---|---|---|---|
| With Spike | |||||
| PICP | 0.86 | 0.75 | 0.96 | 0.95 | 0.93 |
| PINAW | 0.19 | 0.15 | 0.24 | 0.22 | 0.20 |
| Interval Score | 50.42 | 57.48 | 53.36 | 52.80 | 51.02 |
| Tuned Smoothing Parameter | t=0.25 | s=0.1 | h=0.25 | h=0.25 | |
| Method | Smoothing Parameter | Average CRPS | Average Crossing Rate |
|---|---|---|---|
| Default Python | 0.1 | 2.71 | 0.13 |
| Huber Pinball | 2.79 | 0.69 | |
| Arctan Pinball | 2.74 | 0.19 | |
| Convolution (Laplace) | 2.74 | 0.36 | |
| Convolution (Gaussian) | 2.75 | 0.43 | |
| Default Python | 0.5 | 2.71 | 0.13 |
| Metric | Python | Huber Pinball | Arctan Pinball | Convolution (Laplace) | Convolution (Gaussian) |
|---|---|---|---|---|---|
| PICP | 0.91 | 0.74 | 0.99 | 0.97 | 0.98 |
| PINAW | 0.26 | 0.11 | 0.64 | 0.24 | 0.30 |
| Interval Score | 32.56 | 25.89 | 66.11 | 25.39 | 30.00 |
| Tuned Smoothing Parameter | t=10.0 | s=0.1 | h=0.25 | h=0.5 |
| Method | Smoothing Parameter | Average CRPS | Average Crossing Rate |
|---|---|---|---|
| Default Python | 0.1 | 1.33 | 0.36 |
| Huber Pinball | 2.60 | 0.97 | |
| Arctan Pinball | 1.20 | 0.29 | |
| Convolution (Laplace) | 1.82 | 0.75 | |
| Convolution (Gaussian) | 2.32 | 0.84 | |
| Default Python | 0.5 | 1.33 | 0.36 |
Quantile Regression
Quantile regression estimates conditional outcome quantiles to reveal heterogeneous effects, distributional uncertainty, and risks beyond the mean.
See all 35 papers