XGBoost는 GBM기반이나 GBM의 단점들을 보완해서 많은 각광을 받고 있음

캐글 대회에서도 자주 사용되는 모델

XGBClassifier(분류) / XGBRegressor(회귀)


parameter

booster(Default : gbtree) : 부스팅 알고리즘(dart, gblinear)

objective(Default : binary:logistic) : 이진분류
(다중분류 : multi:softmax)

max_depth(Default : 6) : 최대 한도 깊이

learning_rate(Default : 0.1) : 학습 률

n_estimators(Default : 100) : 트리 개수

subsample(Default : 1) : 훈련 샘플 개수의 비율

colsample_bytree(Default : 1) : 특성 개수 비율

n_jobs(Default) : 사용 코어 수(-1 : 모든 코어 사용)

eval_metric :


예제

from xgboost import XGBClassifier

model = XGBClassifier(
    booster = 'gbtree',
    objective = 'binary:logistic',
    max_depth = 5,
    learning_rate = 0.05,
    n_estimators = 500,
    subsample = 1,
    colsample_bytree  = 1,
    n_jobs = -1,
    eval_metric = 'logloss',
    random_state = 0)

model.fit(x_train, y_train)
pred = model.predict(x_test)
accuracy_score(y_test, pred)


예제(+ early_stopping)

from xgboost import XGBClassifier

model = XGBClassifier(
    random_state=0,
    learning_rate=0.05,
    n_estimators=500,
    eval_metric='logloss',
    early_stopping_rounds=10
)

eval_set = [(x_test, y_test)]


model.fit(
    x_train, 
    y_train, 
    eval_set=eval_set,
)
pred = model.predict(x_test)
accuracy_score(y_test, pred)

early_stopping_rounds = 10 : 10번 동안 loss의 변화가 없으면 조기 종료

0개의 댓글