Note
부스팅(Boosting) - XGBoost ( eXtra Gradient Boost ) 본문
부스팅(Boosting) - XGBoost ( eXtra Gradient Boost )
알 수 없는 사용자 2021. 5. 25. 17:021. 장점
(1) 뛰어난 예측 성능
(2) GBM 대비 수행 시간이 빠르다. ( CPU 병렬 처리, GPU 지원 )
(3) 규제 기능 탑재, Tree Prunning
(4) 조기 중단, 자체 내장된 교차 검증, 결측 값 자체 처리
2. 조기 중단 기능 (Early Stopping)
(1) 특정 반복 횟수만큼 더 이상 비용함수가 감소하지 않으면 지정된 반복 횟수를 완료하지 않고 수행 종료 가능.
(2) 학습을 위한 시간 단축. ( 최적화 튜닝 단계에서 사용 가능)
(3) 반복 횟수를 단축할 경우 최적화 문제 발생 가능성 - 최적화가 되지 않은 상태에서 학습이 종료될 수 있다.
3. 코딩 - 위스콘신 유방암 데이터 ( 다양한 방법을 똑같은 데이터로 예측 성능을 비교하기 위함)
공통된 라이브러리 로드
XGBoost는 두 가지 방식으로 적용 가능하다.
3.1 Python 사용
필요한 라이브러리를 임포트 한다.
내장된 위스콘신 유방암 데이터를 로드한다.
데이터를 8:2 비율로 학습 데이터와 테스트 데이터로 분리한다.
Python Wrapper XGBoost는 학습과 예측 데이터 세트를 DMatrix로 변환이 필요하다.
params에서 학습률, 조기 중단 기능 등을 설정해준다.
학습용 데이터는 ‘train’ , 테스트용 데이터는 ‘eval’로 표시하고, 하이퍼 파라미터와 조기 중단 기능 파라미터를 train( ) 함수의 파라미터로 전달한다.
테스트용 데이터를 predict()를 사용해서 예측 확률값을 15개를 반환한다.
예측 확률이 0.5 보다 크면 1, 그렇지 않으면 0으로 예측값 결정하여 리스트에 저장한다.
get_clf_eval( ) 메서드를 통해 예측 평가하고 결과 값들을 출력한다.
중요한 feature 들을 확인하기 위해 그래프를 F-Score를 기준으로 나열한다.
f13, f21, f1, f28, f15 순으로 나열된 것을 볼 수 있다.
3.2 사이킷런 내장 함수 사용
원래 검증에 test 데이터를 사용하면 안 되지만 검증 데이터가 따로 없으므로 사용한다.
클래스를 임포트 하고 객체를 생성하고 학습 횟수는 400, 학습률 0.1로 설정해줬다.
조기 중단 기능 옵션을 100으로 설정해주고 학습 시킨 후 예측하였다.
학습 결과 출력된 모습이다. 학습 속도에서 하이퍼 파라미터 튜닝을 해서 베이스라인을 잡은 다음에
점차 early_stopping_rounds나 n_estimator 수를 늘려나가는 것도 예측 성능을 높이는 데 도움이 된다.
두 가지 모델을 비교하기 위해 feature 중요도를 똑같이 확인한다.
아까와는 달리 f21, f1, f13, f27, f26 순으로 나열된 것을 볼 수 있다.
'Machine Learning > Classification' 카테고리의 다른 글
스태킹 앙상블 (0) | 2021.05.26 |
---|---|
부스팅(Boosting) - LightGBM (0) | 2021.05.25 |
부스팅(Boosting) - GBM ( Gradient Boosting ) (2) | 2021.05.25 |
배깅 (Bagging) - 랜덤 포레스트(Random Forest) (0) | 2021.05.25 |
보팅 (Voting) (0) | 2021.05.24 |