본문 바로가기
Lab & Research/Artificial intelligence

머신러닝 알고리즘 - Boosting

by jaeaemin 2024. 6. 21.

Boosting 

  • 부트스트랩 샘플(무작위 표본 추출 시행)을 추출하는 과정에서 각 자료에 동일한 확률을 부여하는 것이 아니라 분류가 잘못된 데이터에 더 큰 가중을 주어 표본을 추출한다.
    • 약 분류기를 순차적으로 학습하는 앙상블 기법
    • 예측을 반복하면서 잘못 예측한 데이터에 가중치를 부여하여 오류를 개선

 

> Bagging  : 무작위 복원 추출로 부트스랩 샘플을 추출함

> Boosting : 부트스트랩 샘플을 추출하는 과정에서 각 자료의 동일한 확률을 부여하는 것이 아니라 분류가 잘못된 데이터에 더 큰 가중을 두어 표본을 추출함

 

 

Boosting의 종류

  • AdaBoost
  • Gradient Boost
  • XG Boost

 

 

[1] AdaBoost ( Adaptive Boosting )

  • 간단한 약 분류기들이 상호보완하도록 순차적으로 학습
  • 잘못 분류된 데이터를 통해 가중치를 부여하고 이를 학습에 이용함
  • 과소적합된 학습 데이터의 가중치를 높이면서 새로 학습된 모델이 학습하기 어려운 데이터에 더 잘 적합되도록 하는 방식 ( 데이터가 추출되는 가중치를 게속해서 수정하는 부스팅 ) 
  • 약 분류기 : 변수 하나와 if문 하나 정도의 깊이의 트리구조를 사용함 

 

if condition == A:
	case = 'Case A'
 else:
 	case = 'Case B'

 

 

AdaBoost 학습 방법 

  1. 전체 학습 데이터를 이용해 모델을 생성
  2. 잘못 예측된 데이터의 가중치를 상대적으로 높여 줌
  3. 가중치를 반영하여 다음 모델을 학습
  4. 2~3과정을 반복

 

AdaBoost 예시

 

  1. D1이라는 분류조건 (D1 분류기) 으로 데이터를 분류함
  2. D1에서 잘못 분류된 데이터에 대해 가중치를 부여함 ( 동그라미 표시 부분 ) 
  3. 가중치가 반영된 상태로 D2 분류기로 다시 분류를 수행함
  4. D2에서 잘못 분류된 가중치에 대해 가중치를 초기화함 ( 증가 or 감소 ) 
  5. 이를 반복 후, 각 모델의 신뢰도를 곱하여 Voting 

 

AdaBoost 예측 방법 : 각 모델의 신뢰도를 곱하여  Voting 

 

 

 

AdaBoost 예시 코드

 

ada_param_grid = {
    'n_estimators': [50, 100, 150],
    'learning_rate': [0.01, 0.1, 1]
}
ada_grid = GridSearchCV(AdaBoostClassifier(), ada_param_grid, refit=True, verbose=2)
ada_grid.fit(X_train, y_train)

best_ada = ada_grid.best_estimator_
y_pred_ada = best_ada.predict(X_eval)
ada_accuracy = accuracy_score(y_eval, y_pred_ada)
ada_f1 = f1_score(y_eval, y_pred_ada, average='weighted')
ada_cm = confusion_matrix(y_eval, y_pred_ada)

results['AdaBoost'] = {
    'accuracy': ada_accuracy,
    'f1_score': ada_f1,
    'classification_report': classification_report(y_eval, y_pred_ada, output_dict=True),
    'confusion_matrix': ada_cm
}

 


Hyper-Parameter

N-estimators  부스팅 모델에서 생성할 트리의 수를 지정 ( 약한 학습기의 갯수 ) 
Max_depth 트리의 최대 깊이 설정, 값이 클수록 과적합 위험이 증가함

 

 

 

 


 

 

 

Gradiant Boost

  • 학습 전 단계 모델에서의 잔여 오차에 대해 새로운 모델을 학습
  • 잔여 오차를 예측하여 발전하는 약 분류기
  • 현재까지 학습된 분류기의 약점을 Gradient를 통해 알려주고 이를 중점으로 보완하는 방법

 

Gradiant Boost 학습 방법

  1. 모델을 학습 한 후 예측값을 계산한다.
  2. 잔여 오차를 계산한다.
  3. 잔여 오차를 예측하는 트리 모델을 생성한다.
  4. Learning Rate를 이용해 기존 예측값을 수정한다.
  5. 2~4를 반복한다

 

Gradiant Boost 예시

 

 

 

 

Gradiant Boost 예측 방법 : 각 단계에서 잔여 오차를 점점 줄여나가는 방식으로 예측 모델을 개선해나가는 방식


Hyper-Parameter

N-estimators  부스팅 모델에서 생성할 트리의 수를 지정 ( 약한 학습기의 갯수 ) 
Max_depth 트리의 최대 깊이 설정, 값이 클수록 과적합 위험이 증가함
sub-sample 트리를 학습할 때, 사용할 데이터 샘플의 비율을 선택 ( 무작위 선택 )
ColsampleByTree 트리를 학습할 떄, 사용할 특징(컬럼)의 비율을 설정

 

 

 

 


 

 

 

XGBoost ( eXtreme Gradient Boosting ) 

  • Gradient Boosting 기반의 모델이다.
  • 트리를 만들 때, 병렬 처리를 가능하게 해서 Gradient Boosting의 속도를 개선

 

XGBoost의 특징 

  • 병렬 / 분산 처리 가능
    • CPU 병렬 처리가 가능, 코어 들이 각자 할당 받은 변수들로 제각기 가지 치기를 수행할 수 있음
  • Split 지점을 고려할 때 일부를 보고 결정
    • 연속형 변수들의 split 지점을 고려할 때, 일부분만 보고 고려함 ( 의사결정트리는 전체 고려해야  ) 
  • Sparsity Awareness 
    • zero 데이터를 건너 뛰면서 학습, 범주형 변수를 dummy화 시킬 경우 학습 속도가 빨라짐 

변수의 dummy화

 

 

 

 

 

Boosting 심화 모델 

  • 1. LightGBM : GBM 기반 모델, 약 분류기 학습이 수직적으로 확장하는 leaf-wise 알고리즘 사
  • 2. CatBoost : 범주형 변수 처리에 특

 

 

XGBoost  - 그리디 알고리즘으로 자동 가지치기가 가능, 과대 적합 방지
LGBM  - XGBoost에 비해 학습 속도도 빠르고 메모리 사용량이 적음
 - 적은 데이터 ( 1만건 이하 ) 에서는 과대 적합 발생 가능
CatBoost  - 범주형 데이터가 많을 때 , 따로 전처리를 하지 않아도 좋은 성능을 발휘함

 

 

 

 

 

 


 

Stacking 

    • Meta Modeling
    • 다른 모델들의 단점을 극복하고 장점은 취할 수 있는 조합을 찾는 방법 

Stacking 방법

 

1. 학습 데이터를 이용해 Sub Model을 생성함 

  ( 자주 사용하는 Sub-Model : SVM, Knn, Random Forest )

 

2. Sub Model들의 예측값을 데이터로 Meta Model을 생성함

  → 주로 Regression 모델을 학슴

 

 

Stacking Regression

-  Sub Model들의 학습 데이터에 대한 예측값으로 선형 회귀를 학습한다.

-  예측에 사용할 경우, Sub Model들의 예측을 먼저 진행 후 그 값을 Meta Model로 예측한다.

 

 

Stacking Classification 

-  분류의 경우 Sub Model의 예측값은 2가지로 Class 또는 확률

-  확률 값을 이용해 Logistic Regression을 학습함

 

Stacking Multi-Classification 

-  Multi-Class의 경우 확률 값이 여러개로 표시됨 ( 예측값이 shape이 클래스 수가 된다.

-  K개의 Sub-Model이 있을 경우의 Shape

-  이 값을 다음과 같이 Reshape함 

 [ Reshape된 데이터로 Logistic Regression을 학습함 ] 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형