2017-03-15 11 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はフードの下でデシジョンツリーを使用するので、フィッティングプロシージャが確定的になるようにランダムシードを修正しないと、フィット間にわずかに異なる結果が得られます。

これは、Rの場合はset.seed、Pythonの場合はnumpy.random.seedで行うことができます。

Gregorのコメントには、完全な決定性を達成するためにnthreadパラメータを1に設定するとよいでしょう。

関連する問題