Ensemble XGBoost

yeoni·2023년 6월 14일
0

머신러닝

목록 보기
18/40

XGBoost

  • XGBoost는 트리 기반의 앙상블 학습에서 가장 각광받는 알고리즘 중 하나
  • GBM 기반의 알고리즘인데, GBM의 느린 속도를 다양한 규제를 통해 해결
  • 병렬 학습이 가능하도록 설계됨
  • XGBoost는 반복 수행 시마다 내부적으로 학습데이터와 검증데이터를 교차검증을 수행
  • 교차검증을 통해 최적화되면 반복을 중단하는 조기 중단 기능을 가지고 있음
  • xgboost 설치:
pip install xgboost
conda install py-xgboost

주요 파라미터

  • nthread : CPU의 실행 스레드 개수를 조정. 디폴트는 CPU의 전체 스레드를 사용하는 것
  • eta : GBM 학습률
  • num_boost_rounds : n_estimators와 같은 파라미터
  • max_depth

XGBoost실행

  • XGBoost는 array형태로 넣어줘야 한다.
import time
import warnings
from xgboost import XGBRFClassifier
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import LabelEncoder # 주의!
warnings.filterwarnings('ignore')

le = LabelEncoder()
y_train = le.fit_transform(y_train) # array형태로

start_time = time.time()
xgb = XGBRFClassifier(n_estimators=400, learning_rate=0.1, max_depth=3)
xgb.fit(X_train.values, y_train)
print('Fit time: ', time.time() - start_time)

y_pred = xgb.predict(X_test.values)
y_pred = le.inverse_transform(y_pred) # 다시 le.inverser_transform으로 변환 후 실행해줘야 한다!!
print(accuracy_score(y_test, y_pred))
'''
Fit time:  282.9081630706787
0.8666440447913132
'''

조기 종료 조건과 검증데이터를 지정

  • early_stopping_rounds가 계속 오류가 나서 파라미터를 찾는 중이다.
import time
import warnings
from xgboost import XGBRFClassifier
from sklearn.metrics import accuracy_score
warnings.filterwarnings('ignore')

le = LabelEncoder()
y_train = le.fit_transform(y_train)

evals= [(X_test.values, y_test)]

start_time = time.time()
xgb = XGBRFClassifier(n_estimators=400, learning_rate=0.1, max_depth=3)
xgb.fit(X_train.values, y_train, eval_set=evals) # 조기 종료 조건과 검증데이터를 지정, early_stopping_rounds 찾기
y_pred = xgb.predict(X_test.values)
y_pred = le.inverse_transform(y_pred) # 다시 le.inverser_transform으로 변환 후 실행해줘야 한다!!

print('Fit time: ', time.time() - start_time)
print(accuracy_score(y_test, y_pred))

Reference
1) 제로베이스 데이터스쿨 강의자료

profile
데이터 사이언스 / just do it

0개의 댓글