问题标签 [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.
r - R xgboost 封装参数关系
阅读文档后,我并不是 100% 清楚参数eeval_metric
之间的区别和关系。maximize
feval
例如,在进行线性回归时,我设置eval_metric
为自定义 kappa 函数,然后maximize
= TRUE。eval_metric
和有什么区别feval
?
谢谢!
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.004381658
[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.004381658
[1] 训练分数:0 验证分数:0
我们可以看到,即使梯度和粗麻布看起来没问题,每一轮的预测都不会改变!!我不明白为什么会这样。如果有人遇到同样的问题或有想法,请分享。
我使用的代码如下,但我认为它不是很有帮助:
c++ - windows平台下Visual Studio C++环境如何使用xgboost?
我已经在 VS 中构建了 xgboost,但是我不知道如何在我的 c++ 程序(windows visual studio)中使用 xgboost,但是官方教程缺乏关于此的文档。我不需要 python、R、Java 包装器解决方案。谢谢。
r - xgboost 包和随机森林回归
xgboost 包允许构建一个随机森林(事实上,它选择列的随机子集来选择一个变量用于整个树的拆分,而不是像在算法的经典版本中那样用于点头,但它可以忍受)。但似乎只使用了森林中的一棵树(也许是最后一棵树)进行回归。
为确保这一点,请仅考虑一个标准玩具示例。
是的,当然,xgboost 随机森林的默认版本不使用 Gini 评分函数,而仅使用 MSE;它可以很容易地改变。做这样的验证等等也是不正确的。它不会影响主要问题。与 randomForest 实现相比,无论尝试哪组参数,结果都非常糟糕。这也适用于其他数据集。
有人可以就这种奇怪的行为提供提示吗?当涉及到分类任务时,算法确实按预期工作。
#嗯,所有的树都长出来了,都用来做预测。您可以使用“predict”函数的参数“ntreelimit”来检查。
主要问题仍然存在:xgbbost 包生成的随机森林算法的具体形式是否有效?
交叉验证、参数调整和其他废话与此无关——每个人都可以对代码添加必要的更正,看看会发生什么。
您可以像这样指定“目标”选项:
这使您在为拆分选择变量时可以使用 MSE。即使在那之后,与 randomForest 的结果相比,结果也差得惊人。
也许,这个问题是学术性质的,并且涉及如何选择随机特征子集进行拆分的方式。经典实现为每个拆分单独选择特征子集(大小由 randomForest 包的“mtry”指定),xgboost 实现为树选择一个子集(用“colsample_bytree”指定)。
因此,至少对于某些类型的数据集,这种细微的差异似乎非常重要。确实很有趣。
r - xgboost,偏移曝光?
我正在对 R 中的索赔频率(泊松分布)进行建模。我正在使用gbm
andxgboost
包,但似乎xgboost
没有偏移参数来考虑风险?
在 agbm
中,人们会按如下方式考虑风险:
如何使用`xgboost 实现相同的效果?
PS:我不能使用曝光作为预测器,因为每次观察到索赔时都会创建一个新的 obs。
r - 如何更改 XGboost 中的损失矩阵(在 R 中)?
我想对一个误报成本高于误报成本的二进制变量进行分类。
在rpart
包中,我们使用损失矩阵,将parms = list(loss=matrix(c(0,1,5,0),nrow=2))
负例错误分类为正例的成本比将正例误分类为负例的成本高 5 倍。
我该怎么做XGboost
?
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
?
python - 为什么 xgboost 交叉验证表现如此出色,而训练/预测表现如此糟糕?
我正在使用 xgboost,并且正在尝试训练模型。这是我的一些代码:
交叉验证打印出来:
这对我来说是百分之二的测试错误,这非常好。但是对于返回的训练模型,我还运行了我自己的测试,在从训练集中提取的保持集上:
出来
这是 27%,这要糟糕得多。为什么会这样?当训练集上的交叉验证表现如此出色时,在所有训练数据上训练的模型如何在保持集上失败?我不得不想象我的逻辑有问题,但我什么也没看到。那个或 CV 的 xgboost 实现做了一些我不明白的事情。
r - 为什么我得到:标签的长度必须等于输入数据中的行数错误同时使用 mlr 和 xgboost
运行以下 R 代码后:
运行 str(data) 后,我得到:
任务摘要给出:
然后我得到错误:
对我避免此错误的任何帮助将不胜感激。谢谢。
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,而且它们通常非常小,如下所示:(此结果在不同的数据集上,与上面的示例无关)