본문 바로가기
  • Hello_
Deep Learning

앙상블 학습 방법 - Random Forest, AdaBoost,

by LDwDL 2023. 2. 28.
728x90
반응형

본 포스팅에서는 앙상블 학습 방법 중 bagging과 boosting에 대해 설명하고 해당 방법 중 대표 격인 방법들을 설명하고자 합니다.

 

Bagging vs Boosting

ensemble learning은 서로 다른 모델들의 결과들을 고려 및 종합하여 보다 유연하고 데이터에 덜 민감하도록 구성해 줍니다. 결국에는 모델이 데이터에 less bias, less variance 하도록 하는 게 주목적이라고 보시면 됩니다.

 

두가지 유명한 앙상블 방법으로는 크게 bagging과 boosting이 있습니다.

 

Bagging : 병렬적인 방법으로 각 모델이 데이터의 랜덤 한 서브 데이터셋으로 학습됩니다.

Bagging

 

Boosting : Bagging과는 반대의 개념으로 직렬적이며, 각 모델이 이전 모델의 오류로부터 학습이 됩니다.

Boosting

 

Bagging의 Random Forest와 Boosting의 AdaBoost와 graident boosting에 대해 좀 상세히 얘기해보고자 합니다.

 

 

Random Forest

랜덤 포레스트는 bagging 기반의 앙상블 모델로 각 모델이 decision tree라고 보시면 됩니다. (의사 결정 나무로 많이 불린다).  

Random Forest

 

프로세스는 다음과 같습니다.

  1. 학습데이터셋으로부터 랜덤 한 서브셋을 구성한다. 개수는 decision tree, 즉 모델 수만큼 구성한다.
  2. 각 모델들을 구성한 서브셋을 하나씩 활용하여 학습시킨다.
  3. 학습된 모델들을 활용하여 테스트 셋의 예측 결과를 획득한다.
  4. 획득된 모델 결과들을 바탕으로 voting 하여 최종 예측 결과를 획득한다.

 

AdaBoost

AdaBoost는 boosting 앙상블 모델로 직렬적이며 이전에 잘못 예측된 모델의 결과를 바탕으로 학습을 순차적으로 진행합니다.

 

학습을 위해서는 우선 모델에서 데이터의 가중치를 구성해야 합니다.

 

만약 데이터의 포인트 (node)가 100개라면, 초기 가중치는 1/100 = 0.01으로 구성하고 학습이 진행되어야 합니다.

AdaBoost

 

학습 방법은 다음과 같습니다.

    1. 첫 번째 모델을 학습시킨다.
    2. 학습된 모델의 가중된 에러율을 계산한다. 여기서 가중된 에러율(e)이란 각 데이터 포인트의 가중치들이 잘못된 결과에 얼마나 영향을 끼쳤는지 알려주는 지표이다(편미분).
    3. 에러율이 얼마인지 알게 됐으니 모델 가중치를 변경하면 된다.
    4. 가중치를 업데이트하고 저장한다.
    5. 이후 다음 모델로 넘어간다. 가중치는 업데이트된 가중치를 사용한다.
    6. 위 프로세스를 반복
weight of this tree (모델 가중치) = learning rate * log( (1 — e) / e)
new weight of this point(업데이트된 모델 가중치) = old weight * np.exp (weight of this tree)
 
해당 수식은 어렵게 생각할것 없이 가중된 에러율이 큰 데이터 포인트는 잘못된 결과에 큰 영향을 끼쳤기 때문에 decision power를 줄이고, 반대의 경우는 decision power를 늘리자는 개념입니다.
 
decision power가 클수록 최종 voting에 많은 영향력을 가지기 때문에 잘못된 결과에 decision power를 줄이고 반대의 경우는 늘리는 것입니다.
 
최종

 

최종적으로 decision tree들의 weight를 기반으로 voting을 하여 최종 결과를 예측합니다.

 

Gradient Boosting

gradient boosting은 다른 boosting 모델로 adaboost와 마찬가지로 이전 모델의 에러를 바탕으로 직렬적으로 학습이 됩니다.

 

adaboost와 다른 점은 에러가 바로바로 업데이트가 되는 게 아니라 residual 하다는 것인데요. 

 

residual 하다는 것은 이전 모델의 에러에 대한 영향이 다음 모델에도 미친다는 얘기입니다.

Gradient Boosting

 

해당 프로세스입니다.

  1. 첫번째 모델을 학습시킨다.
  2. 해당 모델의 에러율을 구한다. 에러율을 업데이트하지 않고 residual error를 계산하고 저장한다.
  3. residual error = actual y – predicted y
  4. 이 후 다음 모델로 넘어갈때 이 전이 에러를 입력받아 학습된다.
  5. 위 프로세스를 반복

 

최종

 

 최종적으로 각 decision tree의 예측 값을 더하여 최종 결과를 예측합니다.

 

 

전체적으로 앙상블 학습은 분류뿐 아니라 회귀 및 다양한 태스크에서 접목이 가능하다. 위 앙상블 방법들 뿐 아니라 linear model, SVM 등 bagging 및 boosting 앙상블로 적용하여 성능을 높일 수 있습니다.

 

참고 : https://medium.com/towards-data-science/basic-ensemble-learning-random-forest-adaboost-gradient-boosting-step-by-step-explained-95d49d1e2725
728x90
반응형

댓글