xgboost가 GradientBoostingClassifier를 sklearn보다 훨씬 빠른 이유는 무엇입니까?


29

100 개의 숫자 기능을 가진 50k 개 이상의 그라디언트 부스팅 모델을 훈련하려고합니다. XGBClassifier동안 내 컴퓨터 43 초 이내에 핸들 (500) 나무, GradientBoostingClassifier핸들 10 나무 (!) 일분 2 초 :( 내가 귀찮게하지 않았다에서 그것은 시간이 걸릴 것으로 500 그루의 나무를 성장하려고합니다. 나는 같은 사용하고 있습니다 learning_ratemax_depth설정 아래를 참조하십시오.

XGBoost를 훨씬 더 빠르게 만드는 것은 무엇입니까? sklearn 녀석들이 모르는 그라디언트 부스팅을 위해 새로운 구현을 사용합니까? 아니면 "모서리를 자르고"더 얕은 나무를 자라고 있습니까?

추신 : 나는이 토론에 대해 알고 있습니다 : https://www.kaggle.com/c/higgs-boson/forums/t/10335/xgboost-post-competition-survey 그러나 거기에 대답을 얻을 수 없습니다 ...

XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1,
gamma=0, learning_rate=0.05, max_delta_step=0, max_depth=10,
min_child_weight=1, missing=None, n_estimators=500, nthread=-1,
objective='binary:logistic', reg_alpha=0, reg_lambda=1,
scale_pos_weight=1, seed=0, silent=True, subsample=1)

GradientBoostingClassifier(init=None, learning_rate=0.05, loss='deviance',
max_depth=10, max_features=None, max_leaf_nodes=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=10,
presort='auto', random_state=None, subsample=1.0, verbose=0,
warm_start=False)

2
"LightGBM이 XGBoost보다 훨씬 빠른 이유는 무엇입니까?" :)
ihadanny 2016 년

답변:


25

×

내 생각에 가장 큰 효과는 XGBoost가 분리 점에 근사를 사용한다는 사실에서 비롯된 것입니다. 10000 개의 가능한 분할이있는 연속 기능이있는 경우 XGBoost는 기본적으로 "최고의"300 개의 분할 만 고려합니다 (이는 단순화입니다). 이 동작은 sketch_eps매개 변수에 의해 제어되며 doc에서 더 자세히 읽을 수 있습니다 . 낮추고 차이를 확인할 수 있습니다. scikit-learn documentation 에 언급 되어 있지 않으므로 사용할 수 없습니다. 논문 에서 XGBoost 방법이 무엇인지 배울 수 있습니다 (arxiv) .

XGBoost는 또한 이러한 분리 점 평가에 대한 근사치를 사용합니다. 나는 scikit이 어떤 기준으로 배우고 있는지를 알지 못하지만 나머지 시간 차이를 설명 할 수 있습니다.


드레싱 댓글

스플릿 포인트의 평가에 대하여

그러나 "XGBoost는 이러한 분리 점의 평가에 대한 근사값도 사용합니다"라는 의미는 무엇입니까? 내가 이해하는 한, 평가를 위해 그들은 논문의 식 (7)에 나타난 것처럼 최적의 목적 함수의 정확한 감소를 사용하고 있습니다.

(와이,H나는1+h나는)와이H나는1h나는H나는1나는

(와이,H나는1+h나는)


@Winks에게 감사드립니다. 논문을 읽고 분할 후보자를 선택하기위한 근사 알고리즘의 의미를 확인하십시오. 그러나 "XGBoost는 이러한 분리 점의 평가에 대한 근사값도 사용합니다"라는 의미는 무엇입니까? 내가 이해하는 한, 평가를 위해 그들은 논문의 식 (7)에 나타난 것처럼 최적의 목적 함수의 정확한 감소를 사용하고 있습니다.
ihadanny

귀하의 의견을 처리하기 위해 답변을 편집했습니다. 분리 점 평가에 대한 자세한 내용 은 이 Q / A 를 확인하십시오 .
Winks

감사합니다, @Winks! 더 정교한 질문에 대답 할 수 있다면 좋을 것입니다 : datascience.stackexchange.com/q/10997/16050
ihadanny

이것은 좋은 대답입니다. 해트트릭!
eliasah
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.