본문 바로가기
étude/AI

Ensembles of Decision Tree : RandomForest, Gradient Boosting

by mummoo 2023. 11. 18.

0. Ensemble

의사 결정 나무 (Decision Tree)는 과적합 문제가 발생할 수 있다는 문제가 있다. 

=> 실제로 처음 decision tree 배우고 주피터로 코드 돌려봤는데, 

이러한 그림이 나온 적이 있다...

 

  • voting : 서로 다른 알고리즘을 가진 결과를 다수결 / 평균으로 결정 
  • bagging : 같은 알고리즘을 사용해 데이터를 랜덤으로 추출
    • 다양한 서브 데이터셋 생성
    • 이 데이터셋들을 병렬적으로 학습 
  • boosting : 같은 알고리즘을 사용
    • 앞서 학습된 결과를 다음 학습기가 순차적으로 학습
    • 오차(잔차) 를 줄여나감 

 

1. Random Forest (bagging 기법)

"여러 데이터셋을 잘 예측하는 모델"

=> 다양한 서브 데이터셋 을 랜덤으로 생성 

: 이때 전체 특성 개수(n)의 제곱근만큼의 개수로 특성을 랜덤으로 추출

=> 여러 개의 decision tree가 각각의 데이터셋을 학습 => 그 결과를 취합

=> 단일 의사결정나무가 가질 수 있는 과적합 문제를 해결 가능 

 

분류 :

1. 지니계수 / 엔트로피가 가장 낮아지는 방향으로 학습 

2. 최종 분기된 leaf node의 확률값들의 평균으로 예측을 수행 

 

회귀 :

1. MSE가 최소인 분기점 찾기 

2. 각 tree의 결과를 평균한 값으로 예측 수행 

 

2. Gradient Boosting (boosting 기법)

"순차적으로 학습기 (tree)를 통과하며 이전 학습기의 잔차를 학습

=> 점점 이 잔차를 줄여나가는 방향으로 성능 확대"

 

pre pruning : 학습을 일찍 멈추도록 함

Grid Search : hyper parameter 들을 순차적으로 적용해보며 성능이 가장 좋았던 값으로 결정 

 

학습법

0. 초기화

1. tree1이 MSE 학습 

=> 각 leaf의 최종 예측값 (Combined Prediction) = 각 leaf의 값들의 평균

2. tree2가 MSE 학습

=> 각 leaf의 최종 예측값 (Combined Prediction) = 각 leaf의 값들의 평균

=> |tree2의 Combined Prediction| < |tree1의 Combined Prediction|

임을 확인할 수 있을 것이다! 

...

N. treeN까지의 모든 Prediction 값들을 더한 값이 최종 leaf값이 된다. 

 

그니까

=> Prediction0 + Prediction1 + Prediction2 + ... + PredictionN까지 한 값이 마지막 leaf의 최종 예측값이 되는 것이다. 

 

(설명하기 귀찮아서 블로그에서 그림 퍼왔다)

 

그라디언트 부스팅 (Gradient Boosting)

이번 글에서는 의사결정나무를 활용한 앙상블 모델 가운데 그라디언트 부스팅 알고리즘에 대해 알아보려고 한다. 흔히 부스팅이란 무언가를 한껏 강화시키는 의미로 사용되는데 머신러닝에서

brunch.co.kr