working_helen

[ Week 7-1 ] Classifier combination 본문

교내 수업/Machine Learning

[ Week 7-1 ] Classifier combination

HaeWon_Seo 2024. 4. 20. 16:35

Lecture : Machine Learning

Date : week 7, 2024/04/15

Topic : Classifier combination 

 

 

1. Classifier combination 

2. Voting

3. Bagging

4. Boosting

5. Stacking 

 

 


1. Classifier combination 

1) Ensemble learning (앙상블 학습)

- 좋은 성능을 얻기 위해 다수의 모델을 종합적으로 사용하는 것

- 약한 예측모형 weak learner : 랜덤하게 예측하는 것보다 약간 좋은 예측력을 지닌 모형

- 여러개의 약한 기본모형(week base model, base learner)을 결합하여 강한 모형(strong learner)을 생성

- strong leaner를 이용하여 최종적으로 예측함으로써 단일모형의 불안정성을 극복하고 예측력을 향상 

 

 

2) Ensemble learning 기법 

  • Voting (투표) : 다수결 투표를 통해 예측 결과를 결정하는 방법, 하드 보팅(Hard Voting)/소프트 보팅(Soft Voting)
  • Bagging (Bootstrap Aggregating, 배깅) : 부트스트랩 샘플링을 사용하여 여러 개의 부분 데이터셋을 만든 후 각 데이터셋 부분에 대해 병렬적으로 학습한 모델들의 예측 결과를 voting하는 방법, 대표적으로 랜덤포레스트 
  • Boosting (부스팅) : 이전 학습 결과를 바탕으로 데이터 가중치를 설정함으로써 약한 모델들을 순차적으로 학습시켜 강력한 모델을 만드는 방법, 대표적으로 AdaBoost, Gradient Boosting, XGBoost
  • Stacking (스태킹) : 서로 다른 모델들의 예측 결과를 새로운 학습 데이터로 사용하는 최종 메타 모델을 만드는 방법

 

3) Bias & Variance 

Bias (편향) : 모델의 예측값과 실제값과의 차이의 평균


- 예측값이 실제 정답값과 평균적으로 얼마나 떨어져 있는지를 나타내는 지표 

- Bias가 높으면 예측값과 실제값의 차이가 크다는 의미

  = 모델이 데이터를 제대로 학습되지 못하는 underfitting 문제가 발생 

 

Variance (분산) : 모델 예측값의 분산 

- 모델의 예측값이 얼마나 퍼져있는지, 변화할 수 있는지 나타내는 지표 

- Variance가 높으면 모델이 학습 데이터에 지나치게 맞춰져 있다는 의미 

  = 모델이 새로운 데이터를 일반화하지 못하는 overfitting 문제가 발생 

 

출처 : https://velog.io/@heyggun/ML-Bias%EC%99%80-Variance#2-variance

 

- bias가 높을수록 정확도가 떨어지고, variance가 높을수록 예측값의 분산이 커진다. 

- bias와 variance는 trade-off 관계이며, 두 값이 모두 낮아야 좋은 모델이 된다. 

- ML 모델의 학습 error를 평가하기 위해 bias와 variance 값을 사용한다. 

 

 

 

 

 

2. Voting

- 다수결 투표를 통해 예측 결과를 결정하는 방법

출처 : https://ilyasbinsalih.medium.com/what-is-hard-and-soft-voting-in-machine-learning-2652676b6a32

 

- 하드 보팅(Hard Voting) : 다수의 Classifier가 예측한 label을 선택 

- 소프트 보팅(Soft Voting) : 각 Classifier들의 label별 예측 확률의 평균값을 계산하여 확률이 가장 높은 label을 선택 

 

 

 

 

 

3. Bagging

출처 : https://www.analyticsvidhya.com/blog/2023/01/ensemble-learning-methods-bagging-boosting-and-stacking/1

 

- 훈련 데이터셋에서 여러개의 랜덤 복원 추출한 데이터셋를 생성

→ 각 데이터셋마다 base classifier를 학습

여러 Classifier의 voting을 이용해 최종 예측 결과를 결정하는 방식 

 

- Voting에서는 base classifier로 여러 종류의 분류 모델을 사용하나, Bagging에서는 한 종류의 분류 모형만 사용 

- Random Forest는 의사결정나무를 base classifier로 하는 배깅 기법의 앙상블 모델 

  서로 다른 bagged train dataset으로 학습한 의사결정나무들의 voting을 통해 최종 예측 결과를 결정 

 

 

 

 

 

4. Boosting

출처 : https://www.analyticsvidhya.com/blog/2023/01/ensemble-learning-methods-bagging-boosting-and-stacking/

 

- 이전 학습 결과를 바탕으로 데이터 가중치를 설정함으로써 base classifier를 순차적으로 학습시키는 방법

- 이전 base classifier가 오분류한 데이터에 가중치를 더 주어 샘플링한 학습 데이터로 학습시킨 다음 모델을 생성

→ 전체 base classifier들을 결합하여 오분류되었던 데이터도 잘 분류하는 strong model을 생성하는 

 

- 부스팅의 일반적인 과정


> y를 예측하는 learner(=model=hypothesis) H1을 만든다.  
> H1의 성능을 판단한다   
> H1의 성능을 보강할 수 있는 새로운 weak learner H2를 만들고 성능을 판단한다.
> 모든 weak learner의 weighted sum을 strong learner H로 정의한다.  
   H에 반영되는 각 Hx의 가중치는 Hx의 성능이 높을수록 높아진다.
> H의 성능이 만족스러울 때까지 Step 2~4를 반복한다.  


- 부스팅의 두가지 접근 방식 

  • 이전 모델에서 틀린 데이터에 대해 weight를 주는 방식 => Adaboosting 
  • loss function 등을 이용해 정답과 오답 간 차이를 반복적으로 학습하는 방식 (gradient를 이용해 모델을 개선)
    => Gradient Boost, XGBoost, LightGBM 등

 

 

1) Adaboosting

- 이전 모델이 정답을 맞췄는지 여부에 따라 각 instance마다 서로 다른 weight를 부여 

다음 모델에게 오분류된 데이터를 더 학습시키는 기법 

출처 : https://pub.towardsai.net/all-about-adaboost-ba232b5521e9

 

- 초기 가중치

 

- i번째 week learner의 error rate 

 

- i번째 week learner의 가중치

 

- i+1번째 학습 데이터에서 j번째 데이터의 가중치 

 

- 최종 strong learner 

: 각 week learner마다 (모델의 가중치)*(예측 결과) 합을 계산하여 가장 확률이 높은 label을 선택 

 

 

 

2) Gradient Boosting 

- 그라디언트 부스팅(Gradient Boosting) = 경사하강법(Gradient Descent) + 부스팅(Boosting)

- 정답값 y가 아닌 잔차를 label로 설정해서 학습하는 기법

-  기존 모델의 잔차를 예측하는 새로운 weak learner를 재귀적으로 생성
→ 이들을 종합하여 원래 데이터를 예측하는 최종 분류기 strong learner를 생성

출처 : https://help.llama.ai/release/platform/doc-center/demand_topics/dem_modeler_engine_algorithms_machinelearning_gbm.htm

 

- week learner A를 통해 y를 예측하고 남은 잔차(residual)를 다음 week learner B로 예측하고, A+B 모델을 통해 y를 예측하여 A보다 잔차가 줄어든 더 나은 모델을 생성 

- LightGBM, CatBoost, XGBoost 같은 파이썬 패키지들이 모두 Gradient Boosting Algorithm을 구현한 패키지

- Gradient Boosting 알고리즘은 속도가 느리고 과적합이 일어날 수 있는 단점 => XGBoost => LightGBM으로 발전

 

 

 

 

 

 

 

5. Stacking

출처 : https://www.analyticsvidhya.com/blog/2023/01/ensemble-learning-methods-bagging-boosting-and-stacking/

 

- 주어진 학습 데이터를 다양한 알고리즘으로 학습시킨 level-0 classifiers들을 생성 

→ 모델들의 예측 결과를 새로운 메타 학습 데이터로 사용해 최종 예측을 수행하는 level-1 classifier 학습 

- level-1 classifier의 메타 학습 데이터는 level-0 classifiers의 예측값을 기반으로 한 새로운 attribute를 가짐 

- base classifier로 여러 종류의 분류 알고리즘을 사용함으로써 알고리즘의 다양성으로 error를 줄이려는 접근 방식 

 

 

 

 

 

※ Bagging vs Boosting 

Bagging Boosting
multiple base model을 aggregate sequential base model에 서로 다른 weight 부여 
Parallel Sampling
랜덤 복원 샘플링한 여러개의 데이터셋을 동시에 생성
Iterative sampling
다음 week learner을 학습시킬 때마다 반복적으로 샘플링 
Simple Voting Weighted Voting, 각 week learner마다 가중치 존재 
학습 데이터에 randomness 부여
--> Minimise variance
--> overfitting 방지
모델 예측의 정확성을 높임
--> Minimise instance bias
--> underfitting 방지

 

bagging : overfitting reduce 역할
boosting : underfitting reduce 역할
- stacking : model error를 감소시키는 역할 

 

 

 

 

 

 

 

 

Jupyter notebook

 

 

 

 

 

 

 

 

 

Reference

https://velog.io/@heyggun/ML-Bias%EC%99%80-Variance#2-variance
https://ilyasbinsalih.medium.com/what-is-hard-and-soft-voting-in-machine-learning-2652676b6a32
https://www.analyticsvidhya.com/blog/2023/01/ensemble-learning-methods-bagging-boosting-and-stacking/
https://helpingstar.github.io/ml/ensemble/#adaboost-%EC%97%90%EC%9D%B4%EB%8B%A4-%EB%B6%80%EC%8A%A4%ED%8A%B8
http://bigdata.dongguk.ac.kr/lectures/datascience/_book/%EC%95%99%EC%83%81%EB%B8%94-%EB%B0%A9%EB%B2%95.html#%EB%B0%B0%EA%B9%85-bagging