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

时间:2018-06-06 15:01:07

标签: python r xgboost

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

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

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

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

R parameters

Python parameters

我一直在试图环顾四周,但没有发现任何人有类似的问题。我无法共享数据或代码,因为它是保密的。有人知道为什么这些功能差异很大吗?

R版本:3.4.3

XGBoost R版本:0.6.4.1

python版本:3.6.5

XGBoost python版本:0.71

在Windows上运行。

1 个答案:

答案 0 :(得分:0)

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

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

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