2017-03-15 4 views
0

저는 파이썬의 XGBRegressor와 R의 xgb.train을 동일한 데이터 세트에서 동일한 매개 변수로 사용하고 있습니다. 다른 예측이 나옵니다.파이썬의 XGBRegressor와 R의 XGBoost

저는 XGBRegressor가 'gbtree'를 사용하고 있으며 R에서 적절한 비교를했음을 알고 있습니다. 그러나 나는 아직도 다른 결과를 얻고 있습니다.

누구나 나를 올바른 방향으로 이끌어 2의 차별화 방법이나 R의 동등성을 파이썬의 XGBRegressor에 어떻게 유도 할 수 있습니까?

죄송합니다. 어리석은 질문 인 경우 죄송합니다. 감사합니다.

+2

예상과 다른 점은 무엇입니까? 그것은 결정 론적 알고리즘이 아닙니다. [이 답변] (http://stackoverflow.com/a/42815075/903061)은 각 스레드 내에서 확률이 있다고 말합니다. 즉, 동일한 시드를 설정하고 동일한 플랫폼에서 동일한 코드를 실행할 수 있으며 * 여전히 * 조금씩 얻을 수 있음을 의미합니다 다른 결과. – Gregor

+1

@Gregor 내 연결된 답변은 gblinear에만 적용됩니다. 내가 아는 한 gbtree booster에는 잠금이없는 병렬화가 없다. –

+0

명확히 해 주셔서 감사합니다, 바딤! – Gregor

답변

1

XGBoost는 후드 아래에서 의사 결정 트리를 사용하기 때문에 피팅 절차가 결정적이되도록 임의의 시드를 수정하지 않으면 적합 사이에 약간 다른 결과를 줄 수 있습니다.

R에서는 set.seed, Python에서는 numpy.random.seed을 사용하면됩니다.

Gregor의 의견에 따르면 완전한 결정 성을 얻기 위해 nthread 매개 변수를 1로 설정할 수 있습니다.