问题标签 [xgboost]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
163 浏览

r - R xgboost 封装参数关系

阅读文档后,我并不是 100% 清楚参数eeval_metric之间的区别和关系。maximizefeval

例如,在进行线性回归时,我设置eval_metric为自定义 kappa 函数,然后maximize= TRUE。eval_metric和有什么区别feval

谢谢!

0 投票
0 回答
1544 浏览

python - 实现 XGboost 自定义目标函数

我正在尝试使用 XGboost 实现自定义目标函数(在 R 中,但我也使用 python,所以关于 python 的任何反馈也很好)。

我创建了一个返回渐变和粗麻布的函数(它可以正常工作),但是当我尝试运行 xgb.train 时它不起作用。然后我决定以这个特定的顺序为每一轮打印预测、梯度和粗麻布。这是输出(只要我让它运行它就会不断重复):

[1] 0 0 0 0 0 0 0 0 0 0

[1] -0.034106908 -0.017049339 -0.034106908 -0.034106908 -0.034106908 -0.034106908 -0.034106908 -0.004256162 -0.034106908 -0.008520554

[1] 0.003836107 0.004272548 0.003836107 0.003836107 0.003836107 0.003836107 0.003836107 0.004408935 0.003836107 0.004381​​658

[0] 训练分数:0 验证分数:0

[1] 0 0 0 0 0 0 0 0 0 0

[1] -0.034106908 -0.017049339 -0.034106908 -0.034106908 -0.034106908 -0.034106908 -0.034106908 -0.004256162 -0.034106908 -0.008520554

[1] 0.003836107 0.004272548 0.003836107 0.003836107 0.003836107 0.003836107 0.003836107 0.004408935 0.003836107 0.004381​​658

[1] 训练分数:0 验证分数:0

我们可以看到,即使梯度和粗麻布看起来没问题,每一轮的预测都不会改变!!我不明白为什么会这样。如果有人遇到同样的问题或有想法,请分享。

我使用的代码如下,但我认为它不是很有帮助:

0 投票
1 回答
603 浏览

c++ - windows平台下Visual Studio C++环境如何使用xgboost?

我已经在 VS 中构建了 xgboost,但是我不知道如何在我的 c++ 程序(windows visual studio)中使用 xgboost,但是官方教程缺乏关于此的文档。我不需要 python、R、Java 包装器解决方案。谢谢。

0 投票
1 回答
5899 浏览

r - xgboost 包和随机森林回归

xgboost 包允许构建一个随机森林(事实上,它选择列的随机子集来选择一个变量用于整个树的拆分,而不是像在算法的经典版本中那样用于点头,但它可以忍受)。但似乎只使用了森林中的一棵树(也许是最后一棵树)进行回归。

为确保这一点,请仅考虑一个标准玩具示例。

是的,当然,xgboost 随机森林的默认版本不使用 Gini 评分函数,而仅使用 MSE;它可以很容易地改变。做这样的验证等等也是不正确的。它不会影响主要问题。与 randomForest 实现相比,无论尝试哪组参数,结果都非常糟糕。这也适用于其他数据集。

有人可以就这种奇怪的行为提供提示吗?当涉及到分类任务时,算法确实按预期工作。

#

嗯,所有的树都长出来了,都用来做预测。您可以使用“predict”函数的参数“ntreelimit”来检查。

主要问题仍然存在:xgbbost 包生成的随机森林算法的具体形式是否有效?

交叉验证、参数调整和其他废话与此无关——每个人都可以对代码添加必要的更正,看看会发生什么。

您可以像这样指定“目标”选项:

这使您在为拆分选择变量时可以使用 MSE。即使在那之后,与 randomForest 的结果相比,结果也差得惊人。

也许,这个问题是学术性质的,并且涉及如何选择随机特征子集进行拆分的方式。经典实现为每个拆分单独选择特征子集(大小由 randomForest 包的“mtry”指定),xgboost 实现为树选择一个子集(用“colsample_bytree”指定)。

因此,至少对于某些类型的数据集,这种细微的差异似乎非常重要。确实很有趣。

0 投票
2 回答
6118 浏览

r - xgboost,偏移曝光?

我正在对 R 中的索赔频率(泊松分布)进行建模。我正在使用gbmandxgboost包,但似乎xgboost没有偏移参数来考虑风险?

在 agbm中,人们会按如下方式考虑风险:

如何使用`xgboost 实现相同的效果?

PS:我不能使用曝光作为预测器,因为每次观察到索赔时都会创建一个新的 obs。

0 投票
2 回答
1488 浏览

r - 如何更改 XGboost 中的损失矩阵(在 R 中)?

我想对一个误报成本高于误报成本的二进制变量进行分类。

rpart包中,我们使用损失矩阵,将parms = list(loss=matrix(c(0,1,5,0),nrow=2))负例错误分类为正例的成本比将正例误分类为负例的成本高 5 倍。

我该怎么做XGboost

0 投票
3 回答
35258 浏览

r - xgboost in R: how does xgb.cv pass the optimal parameters into xgb.train

I've been exploring the xgboost package in R and went through several demos as well as tutorials but this still confuses me: after using xgb.cv to do cross validation, how does the optimal parameters get passed to xgb.train? Or should I calculate the ideal parameters (such as nround, max.depth) based on the output of xgb.cv?

0 投票
1 回答
879 浏览

python - 为什么 xgboost 交叉验证表现如此出色,而训练/预测表现如此糟糕?

我正在使用 xgboost,并且正在尝试训练模型。这是我的一些代码:

交叉验证打印出来:

这对我来说是百分之二的测试错误,这非常好。但是对于返回的训练模型,我还运行了我自己的测试,在从训练集中提取的保持集上:

出来

这是 27%,这要糟糕得多。为什么会这样?当训练集上的交叉验证表现如此出色时,在所有训练数据上训练的模型如何在保持集上失败?我不得不想象我的逻辑有问题,但我什么也没看到。那个或 CV 的 xgboost 实现做了一些我不明白的事情。

0 投票
1 回答
4270 浏览

r - 为什么我得到:标签的长度必须等于输入数据中的行数错误同时使用 mlr 和 xgboost

运行以下 R 代码后:

运行 str(data) 后,我得到:

任务摘要给出:

然后我得到错误:

对我避免此错误的任何帮助将不胜感激。谢谢。

0 投票
1 回答
8010 浏览

python - xgboost 二元逻辑回归

我在使用 xgboost 运行逻辑回归时遇到问题,可以在以下示例中进行总结。

假设我有一个非常简单的数据框,其中包含两个预测变量和一个目标变量:

我可以发布图片,因为我是新来的,但是我们可以清楚地看到当 X1 =1 和 X2=0 时,Y 为 0,当 X1=0 和 X2=1 时,Y 为 1。

我的想法是建立一个模型,输出观察属于每个类的概率,所以如果我运行 xgboost 试图预测两个新的观察 (1,0) 和 (0,1),如下所示:

输出是:

我想,这意味着对于第一次观察,它有 50% 的机会属于每个类别。

我想知道如果变量之间的关系很清楚,为什么算法不会输出正确的 (1,0) 或更接近的值。

仅供参考,我确实尝试了更多数据(为了简单起见,我只使用了 4 行)并且行为几乎相同;我注意到的是,不仅概率总和不等于 1,而且它们通常非常小,如下所示:(此结果在不同的数据集上,与上面的示例无关)