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

  统计/机器学习 回归分析 监督式学习    浏览次数:7719        分享
3

我用xgboost做回归预测。

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

这是什么情况?

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


 

danny_q   2018-04-06 04:56



   4个回答 
8

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

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

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

SofaSofa数据科学社区DS面试题库 DS面经

Zealing   2018-04-06 13:28

4

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

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

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

SofaSofa数据科学社区DS面试题库 DS面经

姜金杰   2018-04-18 10:26

0

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

SofaSofa数据科学社区DS面试题库 DS面经

陈十一   2018-04-21 11:26

-3

我也是,很纳闷

SofaSofa数据科学社区DS面试题库 DS面经

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



  相关讨论

xgboost可以做回归预测吗?

GBDT和XGBoost使用的都是回归树,原理上是怎么支持解决分类问题的?

GBDT和XGBoost在叶子节点权重计算上有什么不同?

xgboost为什么会有seed?随机性体现在哪里?

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

xgboost是怎么做到regularization的?

xgboost怎么调参?

为什么lightgbm比xgb快?

xgboost中的决策树的复杂度是怎么定义的?

xgboost里的每棵树是不是等权重的?

  随便看看

训练神经网络中经常提到的epoch是什么意思

为什么梯度的反方向是函数下降最快的方向?

怎么利用permutation importance来解释xgboost模型的特征?

抛的硬币直到连续出现两次正面为止,平均要扔多少次

python(matplotlib)中如何把折线图和柱状图画在一起?