앙상블 Ensemble method

2024. 3. 31. 20:38DATA/BIGDATA

반응형

 

 

 

앙상블 학습(Ensemble Learning) 기법의 대표적인 알고리즘 특성

 

 

 

- 랜덤 포레스트(Random Forest):

 

   - 여러 개의 의사결정 트리를 만들고 그들의 예측을 결합함으로써 과대적합 문제를 해결하는 앙상블 학습 모델이다.
   - 각 트리는 랜덤하게 선택된 부분 데이터와 특성으로 학습된다.
   - 분류와 회귀 문제에 모두 사용될 수 있으며, 효과적인 성능과 확장성을 보이다.

 

의사결정트리가 과대적합이 되기 쉽기 때문에 작은 변화에도 모델이 크게 변할 수 있기때문에 서로 다른 방향으로 과대적합 된 트리를 많이 만든 후 무작위성을 주입하여 나온 결과로 평균을 내어 과대적합을 줄이는 것이다.

 

랜덤 포레스트 모델을 구축할 때 원본 데이터에서 부트스트랩 샘플을 생성한다. 부트스트랩 샘플은 원본 데이터에서 중복을 허용하여 랜덤하게 선택된 샘플들의 집합이다. 이는 여러 개의 서로 다른 트리를 생성하기 위한 데이터의 다양성을 확보하는데 사용된다.


- 그래디언트 부스팅(Gradient Boosting):
   - 이전 트리의 오차를 보완하는 방식으로 연속적인 트리를 구성하는 앙상블 학습 모델이다.
   - 각 트리는 이전 트리의 오차를 줄이는 방향으로 학습된다.
   - 랜덤 포레스트보다 조금 더 복잡한 모델이며, 더 높은 성능을 보이다.
   - 하지만 랜덤 포레스트보다 하이퍼파라미터 튜닝에 민감하고 학습 시간이 오래 걸릴 수 있다.

그래디언트 부스팅(Gradient Boosting)은 여러 개의 약한 학습기(weak learner)를 결합하여 강력한 예측 모델을 형성하는 방법 중 하나이다. 그래디언트 부스팅은 이전 트리의 오차를 보완하는 새로운 트리를 구성하여 순차적으로 모델을 학습시키는 방식으로 작동한다. 이 과정에서 그래디언트(gradient)를 이용하여 각 단계에서의 오차를 최소화하는 방향으로 학습이 이루어진다.

그래디언트 부스팅은 일반적으로 의사결정 트리(Decision Tree)를 사용한다. 각 트리는 깊이가 얕은 약한 학습기로 구성되며, 한 번에 하나씩 순차적으로 추가된다.처음 모델을 만들고 나면, 그 모델이 예측하는 값과 실제 값 사이의 차이(오차)를 계산한다 (오차 보정Residual Correction) . 그 다음 모델은 이전 모델이 만든 오차를 보정하는 방향으로 학습된다. 이를 반복하여 예측이 개선되는 새로운 모델들을 만들고 오차 함수의 그래디언트를 계산하여 모델의 파라미터를 조정하는 방법을 사용한다(Gradient Descent) .현재 모델의 예측값과 실제 값의 차이(오차)를 최소화하는 방향으로 파라미터를 조정하여 다음 모델을 학습한다.

 

 

 

그래디언트 부스팅(Gradient Boosting)은 매개변수에 대한 민감성과 긴 훈련 시간이라는 단점을 가지고 있다.

특성의 스케일을 조정하지 않아도 되며, 이진 특성이나 연속적인 특성에서도 잘 동작한다는 점은 그래디언트 부스팅의 장점 중 하나이다. 그러나 희소한 고차원 데이터에는 잘 작동하지 않을 수 있다.

그래디언트 부스팅에서 중요한 매개변수 중 하나는 n_estimators와 learning_rate이다. 이 두 매개변수는 깊은 관련이 있으며, learning_rate를 낮추면 비슷한 복잡도의 모델을 만들기 위해 더 많은 트리를 추가해야 한다. n_estimators가 클수록 과대적합될 가능성이 높아지므로 적절한 값을 찾는 것이 중요한다. 

일반적으로는 가용한 시간과 메모리 한도 내에서 n_estimators를 조정한 후, 적절한 learning_rate를 찾는 것이 좋다.

또한 트리의 복잡도를 조절하기 위해 max_depth (또는 max_leaf_nodes)를 조정해야 한다. 일반적으로는 트리의 깊이를 제한하여 과대적합을 방지하기 위해 max_depth를 작게 설정하는 것이 좋다. , 보통 max_depth를 5보다 작게 설정하여 트리의 깊이를 제한한다.

 

n_estimators: 100

learning_rate: 0.1

max_depth: 3

 

일 경우 100개의 의사결정 트리를 사용하여 학습되고 데이터가  크고 복잡하다면 더 많은 트리를 사용하는 것이 도움된다.

learning_rate 0.1 이라면 이 값이 작을 수록 각 트리가 이전 트리의 오차를 보정하는 정도가 낮아지므로 0.05로 줄인다면 더 많은 트리를 추가해야한다.

 

- 보팅(Voting):
   - 보팅은 여러 다른 기계 학습 알고리즘의 예측을 결합하는 방식이다.
   - 하드 보팅은 다수의 모델이 투표를 통해 예측을 결정하고, 소프트 보팅은 모델의 예측 확률을 평균하여 가장 높은 확률을 가진 클래스를 선택한다.
   - 주로 분류 문제에 사용된다.

- 배깅(Bagging):
   - 배깅은 동일한 알고리즘을 사용하여 여러 개의 부트스트랩 샘플(중복을 허용한 임의 샘플링)에서 각각 모델을 학습시키고, 이들의 평균 또는 투표를 통해 최종 예측을 만드는 방식이다.
   - 랜덤 포레스트(Random Forest)가 가장 유명한 배깅 알고리즘이다.
   - 과적합을 줄이고 예측력을 향상시키는 데 사용된다.

 

 배깅은 병렬로 여러 개의 모델을 독립적으로 학습시키고, 이들의 예측을 결합하여 최종 예측을 수행한다. 이러한 방식은 에러를 줄이고 성능을 향상시키는 데 효과적이고 부스팅보다는 속도가 빠르고 과적합에 덜 민감한다.

따라서 개별 결정 트리의 성능이 낮은 경우에는 부스팅을 사용하여 성능을 향상시킬 수 있고 과적합이 문제라면 배깅이 더 적합할 수 있다.

 

- 부스팅(Boosting):
   - 부스팅은 약한 학습기(weak learner)를 순차적으로 학습시켜 강력한 앙상블 모델을 형성하는 방식이다.
   - 이전 모델이 잘못 예측한 샘플에 가중치를 부여하여 다음 모델을 학습한다. (정답에는 낮은 가중치 부여)
   - 대표적인 부스팅 알고리즘으로는 AdaBoost, Gradient Boosting Machine(GBM), XGBoost, LightGBM 등이 있다.
   - 과적합에 민감할 수 있지만, 일반적으로 예측 성능이 매우 우수함

 

부스팅은 배깅과는 달리 순차적으로 약한 학습기를 학습시켜 나가는 방식으로 강력한 앙상블 모델을 형성한다. 각 모델은 이전 모델이 잘못 예측한 샘플에 더 많은 가중치를 부여하여 다음 모델을 학습한다. 이 과정을 통해 예측 성능이 매우 우수한 모델을 구축할 수 있다. 그러나 이러한 방식은 과적합에 민감할 수 있으며, 특히 많은 수의 약한 학습기를 순차적으로 학습하므로 학습 시간이 오래 걸릴 수 있다.

 

 


- 스태킹(Stacking):
   - 스태킹은 여러 다른 기계 학습 모델을 사용하여 예측을 생성하고, 이러한 예측을 입력으로 다시 한 번 더 모델을 훈련시켜 최종 예측을 만드는 방식이다.
   - 보통은 여러 개의 기본 모델을 사용하고, 이들의 예측을 메타 모델(meta learner)이라고 하는 새로운 모델에 입력으로 사용한다.
   - 고수준의 모델 아키텍처를 구축할 수 있으며, 단일 모델보다 더 나은 성능을 보이다.

반응형