python - XGBoost R 与 python - 不同的性能和功能重要性

标签 python r xgboost

我在工作中使用的 xgboost 有这个问题。我的任务是将当前在 R 中运行的一段代码移植到 python。

代码的作用:
我的目标是使用 XGBoost 来确定增益最大的特征。我确保 XGBoost 的输入在 R 和 python 中是相同的。 XGBoost 运行大约 100 次(在不同的数据上),每次我通过增益提取 30 个最佳特征。

我的问题 这是:
R 和 python 中的输入是相同的。然而,python 和 R 输出了截然不同的特征(无论是每轮的特征总数,还是选择了哪些特征)。它们只共享大约 50% 的功能。我的参数是一样的,我没有使用任何样本,所以没有随机性。

另外,我注意到的另一件事 - 与具有相同参数的 R 相比,XGBoost 在 python 中速度较慢。这是一个已知问题吗?

R parameters

Python parameters

我一直试图环顾四周,但没有发现任何人有类似的问题。我不能分享数据或代码,因为它是 secret 的。有人知道为什么功能差异如此之大吗?

R 版本:3.4.3

XGBoost R 版本:0.6.4.1

python 版本:3.6.5

XGBoost python 版本:0.71

在 Windows 上运行。

最佳答案

您在 R 代码中设置内部种子,而不是在 Python 代码中设置。
更多的问题可能是 Python 和 R 也可能使用不同的随机数生成器,因此尽管始终设置内部和外部种子,但您可以获得不同的序列。 This线程可能会在这方面有所帮助。
我还会猜测未在一个模型中选择的变量提供与在另一个模型中选择的变量相似的信息,其中以一种或另一种方式交换变量不应显着影响模型性能。虽然我不知道 R 模型和 Python 模型是否表现相同?

关于python - XGBoost R 与 python - 不同的性能和功能重要性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50723605/

相关文章:

machine-learning - 如何将plot_importance函数与MultiOutputRegressor一起使用?

javascript - 自动测试 Web 应用程序的框架

Python - 解析 graphql,添加一些东西,然后返回查询字符串

python - 有什么理由从 SVN 切换到 virtualenv 隔离的单人线性 Django 项目吗?

r - 如何读取 dBase 文件的一部分

python - 下面的xgboost模型 TreeMap 中 'leaf'的值是什么意思?

xgboost - hyperopt 结果超出了我的 hp.choice 限制,为什么? (XGBoost)

python - 导入错误: DLL load failed while importing defs: The specified procedure could not be found

r - 仅在 R Markdown 中使用 ggplot2 时出现 "Faceting variables must have at least one value"错误;这是什么意思?

r - 创建数字序列,不包括某些数字