본문 바로가기
카테고리 없음

앙상블(Ensemble) 모델

by hihijh826 2024. 6. 12.
728x90
반응형
SMALL

📍앙상블(Ensemble) 모델이란?

앙상블(Ensemble) 모델은 여러 개의 기계 학습 모델을 결합하여 단일 모델보다 더 나은 성능을 얻는 방법입니다. 앙상블 모델은 개별 모델들이 가진 약점을 보완하고, 그들의 강점을 결합하여 예측의 정확도와 신뢰성을 높이는 데 사용됩니다. 앙상블 기법에는 보팅voting, 배깅bagging, 부스팅boosting, 스태킹stacking이 있습니다.

 

 

📍 1. 배깅(Bagging)

 

-  여러 개의 분류기를 독립적으로 학습시키고, 이들의 예측을 결합하는 앙상블 방법

• 여러 개의 학습 데이터를 무작위로 샘플링하여 각각의 데이터로 모델을 학습시키고, 최종 예측 시 이 모델들의 결과를 평균 내거나 다수결 투표를 통해 결과를 도출하는 방법

Bagging은 기존의 원본 데이터로부터 랜덤하게 데이터를 샘플링하여 동일한 사이즈의 데이터셋을 여러 개 만들어 앙상블을 구성하는 방법임

각 데이터 샘플을 부트스트랩이라고 부름

원본 데이터로부터 랜덤하게 복원 추출하는 방식을 사용하기 때문에 각 부트스트랩들은 원본 데이터와는 다른 왜곡된 데이터 분포를 가짐

• 대표적인 예로는 랜덤 포레스트(Random Forest)가 있습니다. 랜덤 포레스트는 여러 개의 결정 트리(Decision Tree)를 사용하여 예측을 수행

 

☑️주요 단계

1. 데이터 샘플링:
   - 원본 데이터셋에서 여러 개의 부트스트랩 샘플(중복을 허용한 무작위 샘플)을 생성합니다.

2. 모델 학습:
   - 각 부트스트랩 샘플로 개별 모델(예: 결정 트리)을 학습시킵니다.

3. 결과 집계:
   - 분류 문제에서는 다수결 투표(Majority Voting)를 사용하여 최종 예측을 결정합니다.
   - 회귀 문제에서는 평균(Averaging)을 사용하여 최종 예측을 결정합니다.

장점 : 

 Bagging은 다양한 노이즈 분포를 가진 부트스트랩들을 기반으로 학습이

진행되기 때문에 노이즈의 변동으로 인한 영향력을 줄일 수 있음

검증 관점에서는 주어진 데이터에 대한 모든 데이터 샘플들을 한 번 이상씩 검증용으로

사용할 수 있게 하므로 모델이 좀 더 높은 일반화 성능을 낼 수 있도록 함

- 모델의 분산을 줄이고, 과적합을 방지하는 데 효과적입니다.
- 개별 모델들이 독립적으로 학습되므로 병렬 처리가 가능합니다.

 

어떤 인스턴스들은 단 한 번도 부트스트랩에 포함되지 않을 가능성이 있음

선택되지 않은 데이터셋을 out of bag (OOB)라고 부르며, 이를 validation으로 사용함

 

 

 

☑️결과 집계 방법

 1. 다수결 투표(Majority Voting)
-  각 분류기의 예측 중 가장 많이 등장한 클래스를 최종 예측으로 선택
- ex) 세 개의 분류기가 각각 클래스 A, B, A를 예측한 경우, 최종 예측은 다수인 A가 됩니다.
- **장점**: 간단하고 직관적입니다.
- **단점**: 분류기들이 동등한 중요도를 가지며, 가중치를 고려하지 않습니다.

2. 가중치 다수결 투표(Weighted Voting)
-  각 분류기에게 가중치를 부여하고, 가중치가 반영된 투표로 최종 예측을 결정합니다.
- ex) 세 개의 분류기가 각각 클래스 A(가중치 0.5), B(가중치 0.3), A(가중치 0.2)를 예측한 경우, 가중치 합이 더 큰 클래스 A가 최종 예측이 됩니다.
- **장점**: 분류기의 성능에 따른 중요도를 반영할 수 있습니다.
- **단점**: 가중치를 결정하는 과정이 필요합니다.

3. 스태킹 Stacking 

- 여러 모델의 예측 결과를 새로운 데이터로 사용하여 메타 모델을 학습시키는 방법

 

1. 개별 모델 학습:
   - 다양한 알고리즘을 사용하여 여러 개의 개별 모델(베이스 모델)을 학습시킵니다.

2. 메타 데이터 생성:
   - 각 베이스 모델의 예측 결과를 사용하여 새로운 데이터셋(메타 데이터셋)을 만듭니다.
   - 원본 데이터의 특성도 포함될 수 있습니다.

3. 메타 모델 학습:
   - 메타 데이터셋을 사용하여 메타 모델(보통 간단한 모델, 예: 로지스틱 회귀)을 학습시킵니다.

4. 최종 예측:
   - 메타 모델을 사용하여 최종 예측을 수행합니다.

장점:
- 서로 다른 알고리즘을 결합하여 강력한 예측 모델을 만들 수 있습니다.
- 개별 모델들의 약점을 보완할 수 있습니다.

단점:
- 메타 모델을 학습시키는 과정이 추가되므로 복잡성이 증가합니다.
- 모델 간의 상호작용을 잘 이해하고 조율해야 합니다.


- Bagging은 독립적으로 학습된 여러 모델의 예측을 다수결 투표나 평균으로 결합하여 성능을 향상시키는 방법입니다.
- Stacking은 여러 모델의 예측 결과를 새로운 데이터로 사용하여 메타 모델(최종 예측을 수행하는 모델)을 학습시키는 방법입니다.

 

☑️ Random Forest

- 여러 개의 결정 트리(Decision Tree)를 학습시키고, 그 예측을 결합하여 최종 예측을 수행. 

-> 배깅의 아이디어를 기반으로 하지만 결정 트리를 사용하고 추가적인 무작위성을 도입하여 만든 모델

의사결정 나무를 bagging 방식으로 만든 알고리즘

부트스트랩을 통해 만들어진 서브 데이터셋을 여러 개의 의사결정 나무가 각각 학습

변수를 랜덤하게 선택하기 때문에 이름에 random이 붙었음

• 랜덤 포레스트는 분류(Classification)와 회귀(Regression) 문제 모두에 사용 가능

 


☑️ 랜덤 포레스트의 학습 과정

1. 데이터 샘플링:
   - 원본 데이터셋에서 여러 개의 부트스트랩 샘플을 생성합니다. 각 샘플은 원본 데이터셋에서 중복을 허용하여 무작위로 선택된 데이터 포인트들로 구성됩니다.

 p개 변수 중에서 m개 변수를 랜덤으로 선택


2. 트리 학습:
   - 각 부트스트랩 샘플을 사용하여 결정 트리를 학습시킵니다. 이때 각 노드에서 분할할 때 무작위로 선택된 특징의 부분 집합만을 고려합니다.

 선택된 m개의 변수 중에서 가장 좋은 변수/분리점을 선택

노드를 두 개의 자식 노드로 분리 

3. 예측 결합:
   - 분류 문제: 각 트리가 예측한 클래스 중 가장 많이 선택된 클래스를 최종 예측으로 결정합니다(다수결 투표).
   - 회귀 문제: 각 트리가 예측한 값의 평균을 최종 예측으로 결정합니다.

 

 

 

☑️ Random Forest 모델 성능 향상시키는 방법 

 

 Random forests는 트리의 수가 충분히 많을 경우, random forests의 generalization error는 아래 식과 같이 수렴함

 𝐺𝑒𝑛𝑒𝑟𝑎𝑙𝑖𝑧𝑎𝑡𝑖𝑜𝑛 𝐸𝑟𝑟𝑜𝑟 ≤ഥ𝜌 (1−𝑠2)/𝑠2

ҧ 𝜌: 개별 decision tree 간의 평균 상관 관계

 𝑠2: 올바르게 예측한 트리와 잘못 예측한 트리가 예측한 확률 값의 차이의 평균

 개별 트리가 정확할수록 𝑠2은 커지고 generalization error는 낮아짐

 개별 트리 간의 상관 관계가 낮을수록 generalization error는 낮아짐

 즉, 개별 트리의 정확도와 독립성이 높을 수록 random forest의 성능은 높아짐

 Bagging과 변수의 랜덤 분할은 각 트리들의 독립성, 일반화, 무작위성을 최대화시켜

모델 간 상관관계 𝜌를 감소시킴

• 베이스 모델들이 Random Guess보다 성능이 좋아야 함 (최소한의 예측 능력 필요)

 

- 독립성
각 베이스 모델이 서로 독립적이라는 것은, 각 모델이 서로 다른 방식으로 데이터를 학습하고 예측한다는 것을 의미합니다. 즉, 각 모델이 동일한 패턴에 대해 동일한 오류를 범하지 않는다는 것입니다. 

- 독립성을 높이는 방법:
- 무작위성 도입: 랜덤 포레스트는 각 트리가 학습할 때 무작위로 선택된 데이터 샘플과 특징을 사용합니다. 이를 통해 트리 간의 상관관계를 낮추고 독립성을 높입니다.
- 다양한 알고리즘 사용: 앙상블 모델에 서로 다른 알고리즘을 사용하는 것도 독립성을 높이는 방법 중 하나입니다.

☑️ 주요 하이퍼파라미터

1. 결정 트리의 수 (n_estimators)
랜덤 포레스트를 구성하는 결정 트리의 개수를 의미합니다. 트리의 수가 많을수록 앙상블의 성능이 일반적으로 향상되지만, 계산 비용 또한 증가합니다. 적절한 트리 수는 데이터셋과 문제의 복잡도에 따라 다르며, 교차 검증을 통해 최적의 값을 찾을 수 있습니다.

2. 노드 분할 시 랜덤으로 선택되는 변수의 수 (max_features)
결정 트리의 각 노드에서 분할시 랜덤으로 선택되는 변수의 수를 의미

Classification: 변수의 수의 제곱근

 - 예: 전체 변수가 100개라면, `max_features`는 약 10개로 설정됩니다.

Regression: 변수의 수 /3

  - 예: 전체 변수가 90개라면, `max_features`는 약 30개로 설정됩니다.


☑️ 랜덤 포레스트의 장점

출력 변수와 입력 변수간 복잡한 관계를 모델링 할 수 있음

일반적으로 예측력이 좋음

Decision tree 자체가 이상치에 영향을 덜 받기 때문에 random forest도

이상치에 강함



☑️랜덤 포레스트의 단점

모형의 해석이 어려움

계산량이 많고 학습에 소요되는 시간이 김

 

📍 2.Boosting

 

• 여러 개의 약한 학습자(weak learner)를 순차적으로 학습시키며, 이전 모델이 잘못 예측한 데이터를 더 강조하여 다음 모델이 학습할 수 있도록함. 이를 통해 점진적으로 성능을 향상시킴

Boosting은 sequential한 learner들을 여러 개 앙상블하여 성능을 향상함

이때, 사용하는 learner들은 weak learner임

Weak learner라고 하는 것은 random guessing 하는 것 보다 아주 약간 나은 모델을 의미함

Boosting은 sequential하게 learner를 구축하는 데 (즉, 모델 구축에 순서 고려)

이때 이전 단계의 weak learner의 error를 반영해 줌

즉, 이전 단계의 단점을 보완해 가면서 단계를 거듭할수록 strong한 learner가 됨

• 대표적인 예로는 그레디언트 부스팅(Gradient Boosting), AdaBoost, XGBoost 등

 

 

☑️Adaptive Boosting (AdaBoost)

 

이전 단계의 weak learner의 에러를 반영해 다음 모델에 weight을 주는

방식으로 동작함

Step 1: 전체 데이터에서 랜덤하게 샘플링

  -> Input: ensemble size T

Step 2: 모든 샘플 데이터 가중치 초기화

Step 3: 첫 번째 weak learner 학습 후 모델의 예측 결과에 따라 weak learner의

모델 가중치(𝛼)를 출력함

Step 4: Step 3에서 구한 weak learner의 모델 가중치(𝛼)로 training 샘플의

가중치(w) 업데이트

Step 5: 업데이트 된 training 샘플의 가중치(w)로 다음 학습데이터를 복원 추출함

Step 6: 업데이트 된 데이터로 두 번째 weak learner 학습 (Step 3~6 T번 반복)

Step 7: T번의 반복 후, T개의 weak learners에 각각 모델 가중치(𝛼)를 줘서 최종 모델을 만듦

For a new testing point (𝑥, 𝑦):

𝐻 𝑥= 𝑠𝑖𝑔𝑛(σ𝑡=1𝑇 𝛼𝑡∙ ℎ𝑡 𝑥)

 

 

 

 

📍 3.Gradient Boosting Machine (GBM)

 

GBM은 gradient(미분) descent를 사용해 loss function이 줄어드는 방향으로 weak learners를

반복적으로 결합하여 성능을 향상시키는 알고리즘임

Weak learner인 모델 A가 y를 예측하고, residual (잔차)를 다시 모델 B가 예측

이 과정을 반복하면, residual은 계속해서

줄어들게 되고, training 데이터를 잘 설명할

수 있는 모형을 만들 수 있을 것이라는 개념

 

728x90
반응형
LIST