I'm using XGBoost for a binary classification task—trying to predict whether team A will beat team B given the score of the game and the time left. I know for certain score-time combinations, the probability of a success (team A wins) is essentially 0 or 1 (e.g. up 20 points with a minute left, it should be ~0.999). This is true empirically (in previous games) regardless of the other features (team quality, pace of play, etc.)
The problem: When I look at fitted values given these score-time combos, the output tends to be around 0.03 or 0.97, rather than .0001 or .9999. I've tried loads of different combinations of parameters and can't get the model to output something close to 0 or 1.
A few more details:
- I have about 630k observations, about 55% of which are successes. I also have at least tens of thousands where I believe the probability should be > .99 or < .01.
- Parameters I've messed with + the ranges I've tried:
max_depth
(from 4 to 12),n_estimators
(up to a couple hundred),eta
(.001 to .3),min_child_weight
(up to a couple hundred),reg_lambda
(1-5),gamma
(0-5),colsample_byX
(0.7-1), andsubsample
(0.7-1) - I have not messed with
scale_pos_weight
since my understanding is that this parameter is for imbalanced datasets. My dataset isn't imbalanced overall, it's just imbalanced at certain places in the feature space - Loss function is
binary:logistic
Any thoughts? Thanks a ton!