1. 앙상블

- 주어진 자료로 여러개의 예측모형을 만든 후, 예측모형을 조합하여 하나의 최종예측모형을 만듬
- 학습방법이 가장 불안전한 의사결정나무 에 주로 사용.
A. 배깅

주어진 자료에서 여러개의 bootstrap 자료를 생성하고, 각 bootstrap 자료에 예측모형을 만든 후 결합하여 최종 예측모형을 생성.
- 보팅 은 여러 개의 모형으로부터 산출된 결과를, 다수결에 의해서 최종결과를 산출하는 과정.
최적의 의사결정나무를 구축할 때 가장 어려운 부분은 pruning 이나, 배깅에서는 가지치기를 하지 않고 최대로 성장한 의사결정나무들을 활용한다. 훈련자료의 모집단의 분포를 모르므로, 실제 문제에서는 평균 예측모형을 구할 수 없다.
- 배깅은 이러한 문제를 해결하기 위해, 훈련자료를 모집단으로 생각하고 평균예측모형을 구하여 분산을 줄이고 예측력을 향상시킬 수 있다.
B. 부스팅

예측력이 약한 모형 (weak learner) 들을 결합하여 강한 예측모형을 만드는 방법
- 오분류 데이터에 가중치를 부여한다.
Adaboost 는 이진분류 문제에서 랜덤 분류기보다 조금 더 좋은 분류기 개에 각각 가중치를 설정하고, 개의 분류기를 결합하여 최종 분류기를 만드는 방법을 제안했다.
- 단, weight 의 합은 1
훈련오차를 빨리, 쉽게 줄일 수 있고, 배깅에 비해 많은 경우 예측오차가 향상되어 Adaboost 의 성능은 배깅보다 뛰어난 경우가 많다.
a. GBM
- Gradient Boost Machine
오차를 미분한 Gradient 를 주는 것으로 모델을 보완하는 방식으로, 부스팅에서 가중치 업데이트를 경사하강법 을 이용하여 최적화된 결과를 얻는 알고리즘
-
경사하강법 은 손실함수를 정의하고 이 함수의 미분값이 최소가 되도록 하는 방향을 찾아 접근하는 방식
-
대표적인 GBM 기반 알고리즘은 XGBoost, LightGBM
-
프로세스
- 초기값으로 상수함수 적용
- (Loss Fuction 최소화하는 Gradient 구함 - Gradient를 베이스모델 타겟값으로 사용해 Gradient 고려한 학습 진행 - 학습률 더해 최종모형 제작)
- 괄호 반복
| 장점 | 단점 |
|---|---|
| 일반적으로 랜덤포레스트보다 성능 높음 | 시간이 많이 소요되어 하이퍼패러미터 튜닝 필요 |
| 예측성능 높음 | 잔차를 최적화할수록 오차는 적으나, overfitting 가능성 있어 정규화 알고리즘 필요 |
| 병렬 처리가 지원되지 않아 대용량 데이터 학습에 많은 시간 필요 |
b. XGBoost
Gradient Boosting 알고리즘을 분산환경에서도 실행할 수 있도록 구현한 라이브러리
- Regression, Classification 을 모두 지원
- 성능, 자원 효율이 좋다.
GBM 보다 빠르며, overfitting 방지가 가능한 규제가 포함되어 있다. 유연성이 좋아 여러 패러미터를 조절하며 최적의 모델을 만들 수 있으며, 다른 알고리즘과 연계 활용성이 좋다.
c. LightGBM

XGBoost 는 굉장히 좋은 성능을 보이나, 학습시간이 여전히 길고 하이퍼패러미터도 매우 많다.
LightGBM 은 Tree 구조가 수직으로 확장하는 Leaf-Wise 방식을 채택해, 예측 오류 손실을 최소화한다.
- 기존의 다른 Tree 기반 알고리즘은 Tree 구조가 수평으로 확장하는 level-wise 방식이다.
XGBoost 보다 속도가 빠르고, 대용량 데이터를 다루며, 메모리 사용량이 상대적으로 적고, 병렬 컴퓨팅이 가능하며, GPU 도 지원한다.
- 10000 건 이하의 적은 dataset 에 적용하면 과적합 발생이 쉽다.
d. 랜덤포레스트

의사결정나무의 특징인 분산이 크다는 점을 고려하여, 배깅 / 부스팅보다 더 많은 무작위성을 주어 약한 학습기들을 생성한 후, 이를 선형 결합하여 최종 학습기를 만든다.
지도학습 알고리즘으로 다수의 의사결정나무를 사용한다.
- 회귀의 경우에는 평균화를 한다.
- 분류의 경우에는 투표를 통해 보다 정확한 결과를 예측한다.
수천개의 변수를 통해 변수제거 없이 실행되므로 정확도 측면에서 좋은 성과를 보인다.
- 이론적 설명 / 최종 결과에 대한 해석이 어렵다.
- 예측력이 매우 높다.
- 입력변수가 많은 경우, 배깅, 부스팅과 비슷하거나 좋은 예측력을 보인다.
- 변수 중요도
- 의사결정나무를 기반으로 하는 모델은 변수 중요도 값을 제공한다.
- 변수 중요도 값은 불순도를 얼마나 감소시키는지를 통해 측정되는 값이다.
- MeanDecreaseAccuracy, MeanDecreaseGini 등의 값으로 변수 중요도를 확인할 수 있다. 이러한 값은 평균값으로 더 안정적이며 신뢰성이 높다.
| 장점 | 단점 |
|---|---|
| 간편하고 빠른 학습 및 테스트 알고리즘 | 매개변수를 잘못 설정하면 과적합이 발생할 수 있음 |
| 다중 클래스 알고리즘의 특성을 가짐 | 메모리 사용량이 많음 |
| 노이즈에 민감하지 않음 | 텍스트 데이터에는 잘 작동하지 않음 |
| 분류 / 회귀 모두에 적용 가능 |