본문으로 바로가기

오늘 배운 내용은 ADsP 자격증 딸 때 공부했던 내용과 함께 보면 더 이해가 잘되어서 데이터에듀의 '데이터분석준전문가' 책의 글을 빌려 정리해보았다.

 

Ensemble

- 주어진 자료로부터 여러 개의 Tree 기반의 예측 모형들을 만든 후 예측모형들을 조합하여 하나의 최종 예측모형을 만드는 방법

- 방법: 다중 모델 조합(combining multiple models) / 분류기 조합(classifier combination)

- 성능을 분산시켜 오버피팅 감소의 효과가 있다.

 

아래에서 대표적인 앙상블 기법을 하나하나 소개해보겠다.

 

 


 

1. 배깅, Bagging (Bootstrap AGGregatING)

- 여러 개의 bootstrap 자료를 생성하고 각 bootstrap 자료에 예측모형을 만든 후 결합하여 최종 예측모형을 만드는 방법

- Bootstrap : 주어진 자료에서 동일한 크기의 표본을 랜덤 복원추출하여 뽑은 자료

   - 같은 데이터가 여러 번 추출될 수도 있고, 아예 추출되지 않을 수도 있다.

   - e.g., 3개의 행 -> {1,3,5}, {2,3,8}, {5,11,8}, ...

- 여러 모델이 각 Bootstrap에 병렬로 학습되며, 그 합계를 집계(aggregating)하는 방식이다.

 

 


2. 부스팅, Boosting

- 예측력이 약한 모형(weak learner)들을 결합하여 강한 예측모형을 만드는 방법

- 재표본 과정에서 각 자료에 동일한 확률을 부여하지 않고, 분류가 잘못된 데이터에 더 많은 가중을 주어 표본을 추출하는 분석 기법

- 분류가 잘못된 데이터에 가중을 주어야 하기 때문에 여러 모델이 순차적으로 학습될 수밖에 없다.

   - 훈련오차를 비교적 빨리, 쉽게 줄일 수 있다.

   - 병렬로 학습되지 못해 비교적 느리다.

- Outlier에 약하다.

 

- 각각의 예측을 혼합할 때,

   - Regression : 평균/가중평균/중위값

   - Classification: 투표

 

1. AdaBoost (Adaptive Boosting)

- 데이터를 바탕으로 여러 weak learner들을 반복적으로 생성 (iterate)

- 매번 앞선 learner가 잘못 예측한 데이터에 가중치를 부여하고 (boosting) 학습

- 최종적으로 만들어진 strong learner를 이용하여 실제 예측 진행

- 하지만, 높은 weight를 가진 data point가 존재하면 성능이 크게 떨어지는 단점

 

 

2. Gradient Boosting

- 경사 하강법(Gradient Descent)을 사용해서 Adaboost보다 성능을 개선한 Boosting 기법

- 에러를 최소화하는 방법으로 경사 하강법을 적용하여 weight 업데이트 진행

- 학습 성능은 좋으나, 모델의 학습 시간이 오래 걸린다는 단점

 

 

3. XG Boost (Extreme Gradient Boosting)

- 병렬처리 기법을 적용하여 Gradient Boost보다 학습 속도를 끌어올렸다.

- Tree를 구성할 때, 각 Tree의 노드에서 어떤 feature로 가지를 쳐야할지 결정하는 과정 중 예측값 계산에 병렬 처리를 사용

 

 

4. Light GBM

- Leaf-wise-node 방법을 사용

(Reference: https://mac-user-guide.tistory.com/79)

   - 기존의 tree 기반 알고리즘은 level-wise 방식 사용하여, 최대한 균형이 잡힌 tree를 유지하면서 분할한다. 이 방법은 tree의 깊이를 최소화하지만, 균형을 맞추기 위한 시간이 오래 걸린다.

 

- leaf-wise-node 분할 방식: tree의 균형을 고려하지 않고, 최대 손실값을 가지는 leaf node를 지속적으로 분할하는 방법
   - tree의 깊이는 깊어지고, 비대칭적인 tree가 생성된다.
   - 예측 오류 손실을 최소화할 수 있다.

   - 속도는 빨라지고, 더 큰 데이터를 받아들일 수 있다.

 


3. 랜덤 포레스트, Random Forest

- Bagging + Random

- Decision Tree가 분산이 크다는 점을 고려하여 배깅과 부스팅보다 더 많은 무작위성을 주어 약한 학습기를 생성한 후 이를 선형결합하여 최종 학습기를 만드는 방법

- 많은 tree들이 생성되어 Overfitting을 피한다.

- 설명변수의 일부분만을 고려해 최적의 분할 성능을 가질 수 있다.