앙상블(ensemble)기법 설명
2017년 02월 06일 작성TL;DR
앙상블이란 여러개의 weak learners1 를 이용해 최적의 답을 찾아내는 기법이다.
배깅(Bootstrap AGGregatING, Bagging) 이란 테스트 데이터 샘플링(Bootstrap) 통해 여러개의 테스트 데이터를 만들고, 각 테스트 데이터를 이용해 여러개의 weak learner 를 만든다. 최종적으로 각 learner 의 예측결과를 평균내서 종합(aggregate)한다.
부스팅이란(Boosting) 이란 부트스트래핑된 테스트 데이터로 여러개의 weak learner 들을 순차적으로(iterative) 만드는데, i번째 learner 는 i-1 번째 learner 가 잘못 예측한 데이터에 가중치를 좀 더 주어서(boosting) 학습한다. 최종적으로 마지막에 생성된 learner 를 이용하여 예측한다.
시작하며
머신러닝을 안다룬지도 좀 되었고 해서 kaggle 문제 중 쉬운 것들을 풀면서 다시 감을 잡아볼까 했다.
kaggle 문제풀이에 대해서 정보를 수집하던 중,
예전에는 묻지마 모델로 Random Forest 를 썼었는데 요즘에는 XGBoost 를 쓴다고 하더라2
XGBoost와 Random Forest 를 찾아봤더니 앙상블 기법을 쓴다고 한다.
앙상블 기법을 찾아보니 배깅, 부스팅의 두가지 방법을 대표적인 예로 들고 있었다. 사실 xgboost 와 random forest 는 두가지와 좀 다르다
대체 배깅과 부스팅은 무엇인가?
개념 설명엔 유튜브가 최고인듯
이런 문제가 생길 때마다(처음 접하는 개념) 많은 블로그 글과 quora 와 기타 등등을 찾아보지만, 결국 맘에 드는 정보는 Youtube 에 있더라.
유튜브에서 좋은 영상을 찾았는데, 알고보니 Udacity 의 트레이딩 시스템을 위한 머신러닝 코스중 한 강좌
3였다.
영상을 캡쳐하면서 한글로 설명한 포스팅도 봤는데, 그냥 영상을 보면 바로 이해할 수 있다.
이 글에서도 그냥 영상만 소개하고 넘어가겠다.
배깅(Bagging)
부스팅(Boosting)
마치며
사실 learner 를 만드는건 라이브러리를 가져다 쓰면 되기 때문에 모델을 몰라도 된다.
하지만 기본 파라미터를 사용한 learner 의 성능이 잘 나올리가 없다. 어느정도 성능을 내려면 파라미터를 튜닝이 필수다.
이 때, 어떤 파라미터를 어떻게 수정할지 결정해야 하는데, 그러려면 모델의 동작방식과 파라미터의 의미 정도는 알아야 한다.
그럼 모델의 어느정도까지 알아야 하는가?
내 목표는 라이브러리에서 제공하는 파라미터의 튜닝이 가능한 수준
까지 이며 이 경우 모델을 구성하는 수식을 다 이해하는 것은 낭비라고 생각한다.물론 꼭 이해해야하는 수식도 있지만
요즘 라이브러리들은 파라미터와 모델과의 관계만 알아도, 미적분 문제도 못푸는 사람이 내가 튜닝을 할 수 있게 잘 만들어져있기 때문이다.
-
Learner 란 특정한 데이터를 이용해 인스턴스화 한 모델을 말한다. Weak learner 는 최종적인 결과물보다 상대적으로 정확하지 않은 결과를 보이는 learner 이다. ↩