Diary of Chanjun 데이터 분석가의 다이어리

앙상블(Ensemble) 모델

목적



앙상블 모델이란?

하나의 모델을 통한 결과가 아닌 다수의 모델을 활용하여 결과를 향상시키도록 하는 학습 모델

위의 그림과 같이 앙상블 모델의 종류인 Gradient Boosting과 Random Forest는 Decision Tree, 선형회귀보다는 높은 정확도를 가지나, 해석력에 있어서 불리하다는 단점을 가지고 있습니다.


앙상블 모델의 종류

  1. Voting : 여러개의 모델의 결과를 토대로 다수의 분류기가 예측한 값 혹은 평균 등을 최종 결과로 선정하는 앙상블 모형
  2. Bagging : Bootstrap Aggregation의 약자로, 동일한 알고리즘으로 여러개의 약한 모형를 Boot Strapping된 샘플 데이터를 학습시켜 예측하는 앙상블 모형 (참고)
  3. Boosting : 약한 모형을 학습시킨 결과에 잔차를 업데이트하며 학습시키는 앙상블 모형
  4. Stacking : 여러개의 모형의 결과를 다시 학습시켜 최종 결과를 만드는 앙상블 모형

1. Voting

여러개의 모델의 결과를 토대로 다수의 분류기가 예측한 값 혹은 평균 등을 최종 결과로 선정하는 앙상블 모형(참고)

Oops

출처 : https://libertegrace.tistory.com/entry/Classification-2-%EC%95%99%EC%83%81%EB%B8%94-%ED%95%99%EC%8A%B5Ensemble-Learning-Voting%EA%B3%BC-Bagging





2. Bagging

Bootstrap Aggregation의 약자로, 동일한 알고리즘으로 여러개의 약한 모형를 Bootstrapping으로 샘플링된 데이터를 학습시켜 예측하는 앙상블 모형

  1. 이렇게 복원 추출을 하면서 본래의 분포와 다른 결과에 대하여 약한 모형이 학습을 하기 때문에 과적합에 강하게 됩니다.
    • 분산과 편향

    • Oops
    • 출처 : http://bongholee.com/2020/09/%ED%8E%B8%ED%96%A5%EA%B3%BC-%EB%B6%84%EC%82%B0-%EA%B4%80%EC%A0%90%EC%97%90%EC%84%9C-%EB%B0%B0%EA%B9%85bagging%EA%B3%BC-%EB%B6%80%EC%8A%A4%ED%8C%85boosting%EC%9D%98-%EB%B9%84%EA%B5%90/


  2. 트리 모델이 깊어질수록 늘어나는 분산에 대하여 줄일 수 있습니다.
    • tree의 편향과 분산에 대하여

    • Oops
    • 출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ysd2876&logNo=221219689884


  3. 데이터 상에 있는 노이즈에 대해서 강인해질 수 있습니다.





3. Boosting

Boosting은 현재 Kaggle 같은 Competition에서 우수한 성능을 보이는 모델입니다.
Bagging이 병렬적으로 각각 샘플을 학습시키는 반면에,
Boosting은 순차적으로 오분류된 데이터에 가중치를 높여 약한 모형을 학습시켜 강한 모형을 만듭니다. Oops

Bagging과 Boosting의 차이

Oops

대표 모델





Gradient Boosting



대표 모델

  1. XGboost
    • LASSO(L1) 및 Ridge(L2) 정규화(Regulizationi)를 통하여 과적합에 강하다.
    • object function, metric 등 다양하게 custom이 가능하다. 그만큼 신경써야될 하이퍼 파라미터가 많다는 의미일 수도..
    • 병렬처리로 GBM에 비해서 빠르다. 소개하는 GBM 모델 중엔 가장 느린 것으로 알고 있습니다.
    • level-wise(bfs) 방식으로 트리를 구성한다.
  2. Lightgbm
    • XGBoost에 비해 적은 자원으로 빠른 연산이 가능
    • 연산이 빠르고 성능이 좋으나, 데이터가 부족할 시 과적합이 생길 수 있음.
    • XGBoost와 다르게 leaf-wise(dfs) 방식으로 구현
  3. Catboost
    • 앞의 cat이 Category를 의미하며 dummy 변수들이 많을 때 유용하다.
      • catgory데이터를 모델링하기 위해서는 one-hot encoding을 활용해야하는데, catboost는 이를 수치형으로 바꾸어 계산하도록 되어있어 편리하고 자원에 대한 부담이 줄어든다.
      • 또한 변수 중에 information gain이 동인하면 하나의 feature로 자동으로 묶어준다.
    • 최신 모델답게 최적화가 잘 되어있어 하이퍼파라미터 튜닝에 크게 신경쓰지 않아도 된다.
    • XGBoost와 같이 level-wise로 트리를 구성






4. Stacking

여러 모델을 사용하는 것에 대해서 Voting과 비슷해보이지만, 각 base model의 결과를 한번 더 학습시켜 최종 결과를 내는 Ensemble model
Oops

Stacking의 장단점



참고 자료 : https://bkshin.tistory.com/entry/

https://lsjsj92.tistory.com/

https://3months.tistory.com/368

https://dailyheumsi.tistory.com/116

StatQuest with Josh Starmer 의 StatQuest: Gradient Boost Part1 영상