训练值都是正的,xgboost regression却预测出负数?

  统计/机器学习 回归分析 监督式学习    浏览次数: 1287
0

我用xgboost做回归预测。

训练集中的目标值都是正的,做预测时xgboost regression却预测出负数?

这是什么情况?

为什么会发生这样的情况呢?


 

danny_q   2018-04-06 04:56



   4个回答 
6

如果在loss函数中没有加对负数输出的惩罚项(regularization),就有可能得到负数输出。

首先要看得到负数的的输入值是否在training data中出现过,如果没出现过,并且这种数据点很少,可以认为这些是outlier。也可以把负数变为0。https://github.com/dmlc/xgboost/issues/1581第二个回答给了个例子。

还有种可能是training data里很多输出接近于0,testing里出现一些接近于0的负数也很正常。



SofaSofa数据科学社区 DS面经 问答 实战

Zealing   2018-04-06 13:28

2

因为boosting是一轮轮训练的,第一轮是根据原始的y进行训练,这个时候的y都是正的

第二轮就是根据第二轮的残差进行训练,这个时候的“y”值就是有正也有负的

最终的结果是多轮的加权平均,所以是有可能有负数的。


SofaSofa数据科学社区 DS面经 问答 实战

姜金杰   2018-04-18 10:26

0

三楼说的是本质,如果表象上来说就是样本过少,特征过少

SofaSofa数据科学社区 DS面经 问答 实战

陈十一   2018-04-21 11:26

-2
我也是,很纳闷SofaSofa数据科学社区 DS面经 问答 实战

大黄大黄大黄   2018-04-06 09:48



  相关主题

xgboost可以做回归预测吗?   2回答

xgboost怎么调参?   8回答

stack多个xgboost效果并不理想   6回答

到底什么时候用lightgbm什么时候用xgb   1回答

xgboost是怎么做到regularization的?   2回答

xgboost展开到二阶导数有什么好处啊   1回答

为什么lightgbm比xgb快?   2回答

xgboost中的参数min_child_weight是什么意思?   1回答

xgboost的FIT问题   1回答

既然xgboost那么好,线性回归还有存在的价值吗?   8回答

把XGBRegressor保存到本地文件并调用   1回答

为啥Xgboost比GradientBoost好那么多?   5回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!