2017-03-15 264 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以實現完全確定性。