XGBoost回归-预测值超出训练边界

3
使用包含各种特征和回归目标(称为 qval)的数据集训练了一个 XGBoost 回归器。该值 qval 介于 0 和 1 之间,应具有以下分布:enter image description here 到目前为止,一切都很好。但是,当我使用 xgb.save_model() 保存模型并使用 xgb.load_model() 重新加载它以在另一个数据集上预测此 qval 时,预测的 qval 超出了 [0,1] 边界,如下所示:enter image description here 请问是否可以解释一下这种情况是否正常,如果正常,为什么会发生这种情况?从我的角度来看,可能只是“方程式”(此处使用非常糟糕的词)用于计算 qval 的某些数据进行了训练,权重实际上并没有考虑 [0,1] 边界。因此,在将这些权重应用于新数据时,结果超出了边界,但不是完全确定。

数据是否符合高斯分布。发布数据的关系图。当数据是问题时,强制分类器表现某种方式是一个严重错误。 - Golden Lion
1个回答

1
是的,xgboost可以在训练标签范围之外进行预测。
from sklearn.datasets import make_classification
from sklearn.ensemble import GradientBoostingRegressor

X, y = make_classification(random_state=42)

gbm = GradientBoostingRegressor(max_depth=1,
                                n_estimators=10,
                                learning_rate=1,
                                random_state=42)
gbm.fit(X,y)
preds = gbm.predict(X)
print(preds.min(), preds.max())
# Output
#-0.010418732339562916 1.134566081403055

这可能意味着你的测试集与训练集不同。对于随机森林和决策树,这种情况不会发生。这种现象与提升集成以及其工作原理有关。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接