본문 바로가기
머신러닝

[분석 방법론] Ensemble Learning(3) - Bagging

by 하응 2022. 11. 29.

본 포스팅은 고려대학교 산업경영공학부 강필성 교수님의 [Korea University] Business Analytics (Graduate, IME654) 강의   04-3: Ensemble Learning - Bagging 영상을 보고 정리한 내용입니다.

 


1. K-fold data split 
- 데이터 관점의 다양성 확보

- 전체 데이터를 k개의 block으로 구분하고, 1개의 block씩 제외하며 학습 데이터셋을 구성 

- 예를 들어, 첫 번째 모델에서는 1~(k-1) block을 학습 데이터셋으로 사용, 두 번째 모델에서는 1~(k-2), k block을 학습 데이터셋으로 사용... k 번째 모델에서는 2~k block을 학습 데이터셋으로 사용함

- \(f_i\)와 \(f_j\)는 (k-2)개의 block을 공통으로 갖고 있기 때문에, 모델의 독립성이 보장되지 않으며, 이로 인해 Ensemble의 이상적인 성능에는 도달하지 못함

- 현재는 거의 사용하지 않음

Final output of K-fold data split

 

2. Bootstrap Aggregating : Bagging

- 복원추출(Sampling with replacement)을 통해 N개의 데이터셋 생성 

- 원하는 개수만큼 Bootstrap을 만들어 낼 수 있음 

- 어떤 객체는 생성된 Bootstrap에 단 한 번도 포함되지 않을 수 있음 

- 우리가 가지고 있는 1개의 데이터의 분포를 좋은 방향으로 왜곡하는 역할
   * y= f(x) + \(\epsilon\)의 \(\epsilon\)이 가질 수 있는 범위나 분포를 바꿔서, original dataset의 \(\epsilon\)에 종속적인 모델이 생성되지 않도록 함

특정 객체가 단 한 번도 선택되지 않을 확률

 - 위의 수식을 통해, N이 일정 수준 이상 커지면, 대략 2/3는 Bootstrap에 1회 이상 샘플링되고, 나머지 1/3은 샘플링되지 않는다는 것을 알 수 있으며, 샘플링 되지 않은 데이터는 Out of Bag (OOB) 데이터로 모델 검증에 사용됨 

- OOB 데이터가 확률을 기반으로 생성되기 때문에, 충분히 많은 Bootstrap을 활용하게 되면, 검증에 대한 신뢰도가 높아질 수 있음 (train data 7, validation data 3으로 나눠서 검증하는 것보다)

Bootstrap 생성과 OOB 검증

- 상대적으로 모델 복잡도가 큰 알고리즘과 잘 어울리는 기법 

- 어떠한 형태의 지도학습이어도 Bagging 기법을 사용할 수 있음 

   + 인공신경망, SVM, DT, Log, Reg, LDA 등 ..

 

3. Result Aggregating (취합 방법) 

- Majority voting : 새로운 객체 \(x_{new}\)에 대하여, 모든 모델에 대한 predicted class label을 구하고, 가장 많은 label을 최종 예측 결과 값으로 사용 

Majority voting

- Weighted voting (weight = training accuracy of individual models) :  OOB 데이터의 Accuracy를 가중치로 부여하여 가장 확률이 큰 label을 최종 예측 결과 값으로 사용 

Weighted voting (training accuracy)

- Weighted voting (weight = predicted probability for each class):  새로운 객체 \(x_{new}\)에 대하여, 예측한 label에 대해 얼마나 자신감을 보이는지, 예측 확률을 가중치로 사용하여 확률이 가장 큰 lable을 최종 예측 결과 값으로 사용 

Weighted voting (predicted probability)

- 이 외에도 다양한 조합으로 aggregation을 수행할 수 있으며, 일반적인 상황에서 분류 모형이면 "majority voting", 회귀 모형이면 "단순 평균"을 사용함 

- Stacking : individual 모델의 예측값을 입력값으로 받아서, 최종 예측 결과를 출력하는 모델인 Meta-Learner을 새로 만드는 방법 
   + 대체로 좋은 성능을 보임

 


 

참고 자료 

- 고려대학교 산업경영공학부 강필성 교수님 강의 

 

 

 

반응형

댓글