我用xgboost做回归预测。
训练集中的目标值都是正的,做预测时xgboost regression却预测出负数?
这是什么情况?
为什么会发生这样的情况呢?
4个回答
如果在loss函数中没有加对负数输出的惩罚项(regularization),就有可能得到负数输出。
首先要看得到负数的的输入值是否在training data中出现过,如果没出现过,并且这种数据点很少,可以认为这些是outlier。也可以把负数变为0。https://github.com/dmlc/xgboost/issues/1581第二个回答给了个例子。
还有种可能是training data里很多输出接近于0,testing里出现一些接近于0的负数也很正常。
SofaSofa数据科学社区DS面试题库 DS面经因为boosting是一轮轮训练的,第一轮是根据原始的y进行训练,这个时候的y都是正的
第二轮就是根据第二轮的残差进行训练,这个时候的“y”值就是有正也有负的
最终的结果是多轮的平均,所以是有可能有负数的。
SofaSofa数据科学社区DS面试题库 DS面经