본문 바로가기

Machine Learning/머신러닝 완벽가이드 for Python

ch.4.6 XGBoost

XGBoost 개요

 

XGBoost
eXtra Gradient Boost

 

주요장점

  • 뛰어난 예측 성능
  • GBM 대비 빠른수행 시간
    • CPU 병렬 저리 ,GPU 지원
  • 다양한 성능 향상 기능
    • 규제 (Regularization) 기능 탑재
    • Tree Pruning 
  •  다양한편의 기능
    • 조기 중단(Early Stopping)
    • 자제 내장된 교차 검증
    • 결손값 자체 저리

 

 

XGBoost 파이썬 구현

 

 

XGBoost 파이썬 래퍼와 사이킷런 래퍼 API 비교

래퍼 - 사용하기 쉽게 포장해 놓은 것, API와 유사한 기

XGBoost 파이썬 래퍼와 사이킷런 래퍼 하이퍼 파라미터 비교

트리 부스팅 계열은 하이퍼파라미터 종류가 너무 많아서 튜닝하느라 너무 시간을 보낼 필요는없다.

 

 

XGBoost 조기 중단기능 (Early Stopping)

  • XGBoost 는 특정 반복 횟수 만큼 더 이상 비용함수가 감소하지 않으면 지정된 반복횟수를 다 완료하지 않고 수행을 종료할 수 있음.
  • 학습을 위한 시간을 단축 시킬 수 있음. 특히 최적화 튜닝 단계에서 적절하게 사용 가능.
  • 너무 반복 횟수를 단축할 경우 예즉 성능 죄적화가 안된 상태에서 학습이 종료 될 수 있으므로 유의 필요.
  • 조기 중단 설정을 위한 주요 파라미터.
    • early_stopping_rounds : 더 이상 비용 평가 지표가 감소하지 않는 죄대 반복횟수.
    • eval_metric : 반복 수행 시 사용하는 비용 평가 지표.
    • eval_set : 평가를 수행하는 별도의 검증 데이터 세트. 일반적으로 검증 데이터 세트에서 반복적으로 비용 감소 성능 평가.
    • 이 검증데이터는 기존의 CV에서 사용하던 검증이 아니라, 애초에 처음에 데이터를 분할 할 때, Vaild, Test, Train으로 나눈 데이터이다. 
    • 하지만 귀찮아서 Test를 검증데이터로 사용하는 경우가 많다... (일종의 관례)

 

학습을 반복한다...(목표는 1000번 이었는데)
학습 데이터에 대해서는 무조건 성능이 좋아지게 되어있다. -> 수학능력이 좋아짐...
검증 데이터가 중간중간 체크할때마다 점수가 점점 상승하다가,(에러가 낮아짐)
어느 순간부터 검증 데이터에 대한 점수가 떨어지게 됨. why? 학습 데이터에 대해서만 학습하니까.
여기서 학습을 중단하자! -> early stopping! (400~500 정체) -> 500에서 stop!
모델 짠!
test 데이터로 성능 측정