본문 바로가기

Machine Learning/분류(Classification)

Classification - XGBClassifier

반응형
[XGBoost]

부트스트래핑(Bootstrapping) 방식의 앙상블 알고리즘

부트스트래핑 : 임의로 샘플 및 변수를 선택하여 학습



부스팅 알고리즘 (Boosting algorithm)

각 트리(이터레이션)가 맞히지 못한 샘플에 대해 가중치를 부여,
추후 학습할 때 가중치를 반영하여 새로운 트리를 생성

XGBoost는 균형 트리 분할 방식(level-wise)으로 모델을 학습하여 대칭적 트리를 만듦

https://www.slideshare.net/GabrielCyprianoSaca/xgboost-lightgbm

 

 

XGBoost의 장점

 

1. 강력한 병렬 처리로 학습과 처리가 빠름

(Gradient Boosting Model 대비 빠른 것)

 

2. Greedy-algorithm을 이용, 자동 가지치기(Pruning)가 가능

과적합(Overfitting) 방지

 

3. 자체 교차검증 알고리즘 탑재

 

4. 결측치 자체 처리

 

5. Early Stopping 

100번으로 설정 시 100번 동안 성능이 좋아지지 않는다면 그 전에 생성된 최고로 좋은 모델을 선택

 

6. CART (Classification And Regression Tree)기반으로 분류, 회귀 둘다 구현

 

 

 

https://steadiness-193.tistory.com/257

 

Machine Learning - valid와 test를 train으로 전처리

https://steadiness-193.tistory.com/256 Machine Learning - train_test_split https://steadiness-193.tistory.com/253 Machine Learning - 랜덤으로 train과 test로 나누기 데이터 불러오기 seaborn의 iris 데..

steadiness-193.tistory.com

 

위 포스팅에서 만든 데이터셋을 이용한다.

 

 

 

아무 옵션을 넣지 않아도 약 81%의 정확도를 보여준다.

 

 

 

 

 

변수 중요도 (Feature_importance)

 

xgboost는 feature_importance를 바로 시각화하는 함수를 제공한다.

 

 

 

 

 

XGB 파라미터


n_estimatiors : 트리의 갯수, 높을 수록 정확도가 높아지나 시간이 오래 걸린다. (int)

n_jobs : 병렬처리 여부, -1을 입력하면 컴퓨터에 존재하는 모든 코어를 사용한다.

random_state : 결과를 고정시킴, Seed Number와 같은 개념 (int)

max_depth : 생성할 DecisionTree의 깊이 (int)
가지치기를 적용할 수 있는 파라미터

learning_rate : 훈련양, 학습할 때 모델을 얼마나 업데이트 할 것인지 (float)

colsample_bytree : 열 샘플링에 사용하는 비율 (float)

subsample : 행 샘플링에 사용하는 비율 (float)

reg_alpha : L1 정규화 계수 (float)

reg_lambda : L2 정규화 계수 (float)

booster : 부스팅 방법, 주로 gbtree를 이용

 

 

 

매개변수(파라미터) 조정

 

임의로 L1, L2 정규화 계수만 조정을 해보았다.

 

정확도가 약 0.38%p 상승했다.

 

https://steadiness-193.tistory.com/262

 

Regression - L1 규제(Lasso), L2 규제(Ridge)

* 수학적 증명, 수식보단 기본 개념과 활용법에 초점을 맞춤 Regularization (정형화, 규제, 일반화) 모델이 과적합되게 학습하지 않고 일반성을 가질 수 있도록 규제 하는 것. 하늘색 선은 오버피팅 �

steadiness-193.tistory.com

규제에 대한 내용은 위 포스팅 참조

 

 

참조

lsjsj92.tistory.com/547

brunch.co.kr/@snobberys/137#comment

반응형