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

Joh*_*hny 5 python r xgboost

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

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

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

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

R参数

Python参数

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

R 版本:3.4.3

XGBoost R 版本:0.6.4.1

蟒蛇版本:3.6.5

XGBoost python 版本:0.71

在 Windows 上运行。

小智 1

您可以在 R 代码中设置内部种子,但不能在 Python 代码中设置。

更重要的问题是,Python 和 R 也可能使用不同的随机数生成器,因此尽管总是设置内部和外部种子,但您可能会得到不同的序列。线程可能在这方面有所帮助。

我还大胆猜测,一个模型中未选择的变量提供了与另一个模型中选择的变量类似的信息,其中以某种方式交换变量不会显着影响模型性能。虽然我不知道R模型和Python模型的表现是否相同?