XGBoost Regression on a normal distribution variable produces a one sided distribution (only positive values) I'm running a scikit-learn XGBoostRegressor with an RMSE loss function, on a variable with a distribution that is close to symmetric around 0 (think normal distribution, with a positive mean that generates more positive than negative values, apprx. 2:1).
The model consistently predicts mostly positive values. Only 1-3% of the predictions are negative, and with negligible values.
For the life of me, I'm stumped on why this might happen - it feels like there's some parameter in XGBoost telling it not to predict negative values or something.

Without more details, it's hard to guess what's going on. However, one possibility is that the model fails to do very well at predicting (or there's a lot of unexplained - by the model - variability), so it minimizes RMSE by predicting something close to the mean of the outcome variable. E.g. if the predictors you have contain absolutely no information for predicting the outcome you want to predict, then the best (=minimizes RMSE) prediction is to predict the mean of the training data.
This could happen, because the predictors you use don't contain much information on the outcome, or because your hyperparameters are chosen so that the model is underfit/over-regularized.
How can you tell whether this is happening? If you look at the distribution of predicted values for data not used in the training, the distribution should be a good bit narrower than the true labels, but centered approximately around the mean of the training data.
