问题标签 [xgbclassifier]

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 投票
0 回答
163 浏览

statistics - 在 R 中使用 base_score 参数来解决 XGBoost 多类问题

我试图了解 xgboost 如何解决多类问题。我使用 IRIS 数据集根据其特征和 R 中的计算结果来预测输入属于哪个物种。

代码如下

我尝试手动计算结果并将增益和覆盖值与 R 输出进行比较。我注意到了几件事:

  1. 无论我们在 R 中的“base_score”参数中提供什么,初始概率始终为1/(类数)。“base_score”实际上是在最后添加到最终 log_odds值的,并且它与 R 输出匹配时我们运行预测函数来获取赔率的对数。在二元分类的情况下,“base_score”参数用作模型的初始概率。
  1. 对于多类问题, 损失函数为(2.0f * p * (1.0f - p) * wt) ,对于二元问题,损失函数为 ( p * (1.0f - p) * wt) 。

github repo https://github.com/dmlc/xgboost/issues/638中有对损失函数的解释,但没有关于为什么最后添加 base_score 的信息。

是因为 R 中的算法是这样设计的,还是 XGBoost 多类算法是这样工作的?

0 投票
1 回答
630 浏览

python - 为多类分类问题解释 XGBoost 树的叶值

我一直在使用 XGBoost Python 库来解决我的多类分类问题,multi:softmax目标是。通常,我不确定如何解释使用 时输出的几个决策树的叶值xgb.plot_tree(),或者当我将模型转储到 txt 文件中时bst.dump_model()

我的问题有 6 个类别,标记为 0-5,并且我已将模型设置为执行两次增强迭代(至少现在我尝试进一步了解 XGBoost 的工作原理)。从在线搜索(特别是https://github.com/dmlc/xgboost/issues/1746)中,我注意到 booster[x] 处的树代表了第int(x/(num_classes)) + 1'th 提升迭代中的树,显示了决策树x%(num_classes)班级。例如,booster[7]在我的 txt 文件中,显示了第 2 次 boosting 迭代期间的决策树,以及第 1 类。此外,我发现在每棵树中使用 softmax 函数,所有叶值的 softmax 值加到 1。

除此之外,我通常对所有这些树的叶子值如何决定 XGBoost 选择哪个类感到困惑。我的问题是

  1. 通过提升迭代的树如何影响输出?例如,booster[0]and booster[6](代表我的第 0 类的第一次和第二次提升迭代)如何影响第 0 类的最终输出或最终概率?

  2. 从所有树的叶子值到 XGBoost 选择哪个类的决定背后的数学是什么?

如果通过演示回答有帮助,我在下面提供了转储的 txt 文件,以及带有multi:softprobmulti:softmax作为目标的示例输入和输出。

转储.raw.txt:

示例输入,带有预期的标签:[0, 1, 0, 0, 1, 0, 1, 20, 16.8799, 0.587, 0.5],标签:0
multi:softmax输出:[0]
multi:softprob输出(如果有帮助):[[0.24506968 0.13953298 0.13952732 0.13952732 0.19666144 0.13968122]]

我知道这是一个加载的问题,我希望我解释清楚。任何帮助将非常感激。提前致谢!

0 投票
1 回答
366 浏览

python - 有没有办法计算 XGBoost 树中每个节点的值?

我试图找到一种方法来计算 XGBoostClassifier 中树的每个决策节点的值。我知道它可以在 sklearn Tree 方法中完成,例如 RandomForest、DecisionTree 等。例如 -

在此处输入图像描述

我发现 xgboost get_dump方法只显示叶节点的值。目标是在结果中找到树中每个特征的贡献。如 结果 = 偏差 + 贡献(特征 1) + ... + 贡献(特征_n)

一个类似的例子在这里 - https://blog.datadive.net/interpreting-random-forests/

0 投票
1 回答
515 浏览

python - 检查特征子集的 SHAP 特征重要性

我正在尝试检查我使用 SHAP 构建的模型的特征重要性。

使用以下方法可以正常工作,但我希望有一个仅包含特征子集的图表。这可能吗?

我尝试在数据集上使用 iloc 定义特征和特征名称的子集,例如features=X_train.iloc[;23:],但它不起作用。

0 投票
1 回答
301 浏览

python - Xgboost - Decision Tree - Only one leaf

I'm try to plot a decision trees of Xgboost models from different datasets.

Which worked fine for most of them, but for one dataset the plot_tree just shows only one leaf.

It's weird for me, once the max_depth of that model is 5.

Could anyone give me a tip?

Thanks for considering my question. :) !

0 投票
1 回答
811 浏览

scikit-learn - 将 xgboost.Booster 的实例转换为实现 scikit-learn API 的模型

我正在尝试使用mlflow来保存模型,然后稍后加载以进行预测。

我正在使用xgboost.XGBRegressor模型及其 sklearn 函数.predict().predict_proba()进行预测,但事实证明它mlflow不支持实现 sklearn API 的模型,因此稍后从 mlflow 加载模型时,mlflow 返回一个实例xgboost.Booster,但它不实现.predict()or.predict_proba()功能。

有没有办法将 a 转换xgboost.Boosterxgboost.sklearn.XGBRegressor实现 sklearn API 函数的对象?

0 投票
1 回答
905 浏览

scikit-learn - XGBoost 绘图重要性 F 值 >100

我已经为我的模型中的所有特征绘制了 XGBoost 特征重要性,如下图所示。但是您可以看到图中的 F Score 值未标准化(不在 0 到 100 范围内)。如果您知道为什么会这样,请告诉我。我是否需要在 plot_importance 函数中传递任何参数以进行标准化?

在此处输入图像描述

0 投票
1 回答
3184 浏览

python - XGBoost 调节 alpha 范围是多少?

正如文档所说: https ://xgboost.readthedocs.io/en/latest/parameter.html#general-parameters

alpha [默认=0,别名:reg_alpha]:

权重的 L1 正则化项。增加此值将使模型更加保守。

我想知道 alpha 可以是 100,1000 吗?如果是这样,如何找到最好的阿尔法?

0 投票
1 回答
423 浏览

python-3.x - 如何在 xgboost 中从最佳迭代中保存模型?

我正在使用 XGBClassifier 进行图像分类。因为我是机器学习和 xgboost 的新手。但最近我知道,我在某些迭代后使用 pickle 库保存的模型是最后一次迭代,而不是最好的迭代。谁能告诉我如何从最佳迭代中保存模型?显然我正在使用提前停止。如果我在提问时犯了任何错误,我深表歉意。请我尽快需要解决方案,因为我的论文需要它。那些建议我最好的迭代的老问题请我的问题不同我想以泡菜格式保存最好的迭代,以便我将来可以使用它,而不仅仅是稍后在同一代码中使用它来预测。谢谢你。

0 投票
1 回答
60 浏览

python - 泰坦尼克号数据集过度拟合:能有那么多吗?

我有点困惑,因为我正在训练一个模型,该模型在训练数据上产生大约 88% 的 CV 分数,而在我提交后,相同的模型在测试数据上表现不佳(分数为 0.75)。准确率下降 12 点不可能都是由于过度拟合,不是吗?有任何想法吗?你在你的模型/提交中遇到过这样的差距吗?

有关模型和结果,请参见随附的图像。

################################################# ########

准确率:88.13% (2.47%)