Ensemble: Boosting
ㅁ Ensemble
ㅇ 정의:
여러 개의 모델을 결합하여 하나의 예측 결과를 도출하는 기법으로, 개별 모델의 약점을 보완하고 예측 성능을 향상시키는 데 목적이 있음.
ㅇ 특징:
– 다양한 모델을 조합하여 성능 향상
– 과적합 방지 가능
– 계산 비용 증가
ㅇ 적합한 경우:
– 단일 모델의 성능이 만족스럽지 않을 때
– 데이터의 복잡성이 높고 다양한 관점에서 분석이 필요할 때
ㅇ 시험 함정:
– 앙상블 모델이 항상 좋은 성능을 보이는 것은 아님
– 모델 간 상관성이 높은 경우 성능 향상이 제한적일 수 있음
ㅇ 시험 대비 “패턴 보기” 예시:
O: 앙상블 기법은 여러 모델을 결합하여 성능을 높인다.
X: 앙상블 기법은 항상 계산 비용이 낮다.
================================
1. Boosting
ㅇ 정의:
약한 학습기(Weak Learner)를 순차적으로 학습시키고 결합하여 강한 학습기(Strong Learner)를 만드는 앙상블 기법.
ㅇ 특징:
– 이전 단계에서 잘못 분류된 샘플에 가중치를 부여하여 다음 단계에서 더 잘 학습하도록 유도
– 일반적으로 과적합에 강함
– 계산 비용이 높고 병렬화가 어려움
ㅇ 적합한 경우:
– 데이터가 불균형하거나 복잡한 패턴을 포함할 때
– 높은 예측 정확도가 요구되는 경우
ㅇ 시험 함정:
– Boosting은 항상 과적합을 방지한다는 오해
– 모든 데이터셋에서 Gradient Boosting이 가장 적합하다는 가정
ㅇ 시험 대비 “패턴 보기” 예시:
O: Boosting은 약한 학습기를 순차적으로 결합하여 강한 학습기를 만든다.
X: Boosting은 계산 비용이 낮고 병렬 처리가 쉽다.
ㅁ 추가 학습 내용
Boosting 기법은 약한 학습기를 결합하여 강한 학습기를 만드는 앙상블 학습 방법입니다. 이 중 대표적인 알고리즘인 AdaBoost와 Gradient Boosting은 각각 서로 다른 방식으로 모델을 개선해 나갑니다.
1. **AdaBoost (Adaptive Boosting)**:
– AdaBoost는 약한 학습기를 순차적으로 학습시키며, 학습 과정에서 각 데이터 포인트의 가중치를 조정합니다.
– 초기에는 모든 데이터 포인트에 동일한 가중치를 부여한 상태에서 학습을 시작합니다. 이후 각 학습 단계에서 모델이 잘못 분류한 데이터 포인트의 가중치를 증가시키고, 올바르게 분류한 데이터 포인트의 가중치를 감소시킵니다. 이렇게 함으로써 이후 학습 단계에서 어려운 데이터 포인트에 더 집중하게 됩니다.
– 각 학습기의 성능은 오류율에 따라 평가되며, 성능이 우수한 학습기는 더 큰 영향을 주도록 가중치가 부여됩니다.
– 최종적으로 여러 약한 학습기의 예측 결과를 가중합하여 최종 예측을 만듭니다. 이 과정에서 각 학습기의 가중치는 해당 학습기의 정확도에 비례합니다.
2. **Gradient Boosting**:
– Gradient Boosting은 잔차를 줄이는 방식으로 모델을 개선합니다. 잔차는 현재 모델이 예측하지 못한 값, 즉 실제 값과 예측 값의 차이를 의미합니다.
– 초기 모델은 가장 간단한 형태로 시작하며, 이후 각 단계에서 새 학습기가 이전 모델의 잔차를 예측하도록 학습합니다.
– 손실 함수는 잔차를 최소화하기 위해 사용되며, 각 단계에서 손실 함수의 기울기(Gradient)를 계산하여 이를 기반으로 다음 학습기를 학습시킵니다.
– 최종 모델은 초기 모델과 여러 단계에 걸쳐 학습된 잔차 예측 학습기의 결합으로 이루어집니다.
3. **XGBoost (Extreme Gradient Boosting)**:
– XGBoost는 Gradient Boosting을 기반으로 여러 최적화와 개선을 추가한 알고리즘입니다.
– Regularization(정규화)을 통해 과적합을 방지하며, L1 및 L2 정규화를 지원합니다.
– 병렬 처리를 통해 학습 속도를 크게 향상시켰으며, 메모리 효율성을 높이기 위한 최적화가 포함되어 있습니다.
– Early Stopping 기능을 통해 불필요한 학습을 방지하고, 학습 데이터를 더 효과적으로 활용합니다.
– 또한, Tree Pruning(가지치기)을 통해 불필요한 복잡성을 줄입니다.
4. **LightGBM**:
– LightGBM은 XGBoost와 유사하지만, 학습 속도와 메모리 사용량을 더욱 개선한 알고리즘입니다.
– Histogram 기반 학습 방식을 사용하여 계산량을 줄이고 학습 속도를 높입니다.
– Leaf-wise Tree Growth를 채택하여 더 깊고 복잡한 트리를 생성할 수 있으며, 이는 데이터의 복잡한 패턴을 더 잘 학습할 수 있도록 돕습니다.
– 대규모 데이터셋에서도 효율적으로 학습할 수 있도록 설계되었으며, XGBoost보다 더 빠르게 학습이 진행됩니다.
– 또한, 데이터의 불균형이 심한 경우에도 효과적으로 작동합니다.
5. **XGBoost와 LightGBM 비교**:
– **속도**: LightGBM이 XGBoost보다 빠른 학습 속도를 보이며, 특히 대규모 데이터셋에서 효율적입니다.
– **메모리 사용량**: LightGBM은 메모리 사용량이 적어 대규모 데이터셋에 적합합니다.
– **정확도**: 두 알고리즘 모두 높은 성능을 보이지만, 데이터셋의 특성에 따라 결과가 달라질 수 있습니다.
– **Tree Growth 방식**: XGBoost는 Level-wise Tree Growth를 사용하여 균형 잡힌 트리를 생성하는 반면, LightGBM은 Leaf-wise Tree Growth를 사용하여 더 깊은 트리를 생성합니다.
– **사용 사례**: LightGBM은 데이터가 크고 복잡한 경우에 적합하며, XGBoost는 상대적으로 작은 데이터셋에서 더 나은 성능을 보일 수 있습니다.
이와 같은 Boosting 기법과 알고리즘을 이해하면 데이터 특성에 따라 적합한 방법을 선택하여 적용할 수 있습니다.