2017-03-15 265 views
0

我在同一个数据集上使用python的XGBRegressor和R的xgb.train具有相同的参数,我得到了不同的预测。Python的XGBRegressor与R的XGBoost

我知道XGBRegressor使用'gbtree',我在R中做了适当的比较,但是,我仍然得到不同的结果。

任何人都可以带领我在正确的方向如何区分2和/或找到R的等价python的XGBRegressor?

对不起,如果这是一个愚蠢的问题,谢谢。

+2

你的预测有多不同?这不是一个确定性算法。 [这个答案](http://stackoverflow.com/a/42815075/903061)表示,每个线程中都存在随机性,这意味着您可以在同一个平台上设置相同的种子并运行相同的代码,并且*仍然*稍微得到不同的结果。 – Gregor

+1

@Gregor我的链接答案只适用于gblinear。据我所知,gbtree助推器没有任何无锁并行。 –

+0

谢谢澄清,Vadim! – Gregor

回答

1

由于XGBoost在罩下使用决策树,因此如果不修复随机种子,拟合程序变为确定性,它可以给出适合度略有不同的结果。

您可以通过Python中的set.seed和Python中的numpy.random.seed来完成此操作。

注意到Gregor的评论,您可能想将nthread参数设置为1以实现完全确定性。