Gradient Boosting Decision Tree Algorithm
앙상블 모델이란?
- 주로 모델을 융합하는 전략과 방법을 통칭해서 말함 → 대표적으로 배깅과 부스팅이 있음
- 부스팅의 기본적인 컨셉은 분류기를 연달아 직렬적으로 연결해서 기존 층서 잘못 분류한 샘플에 대해서 가중치를 높게 두고 훈련을 하는 형태 → 사람이 실제로 학습할 때 오답노트를 활용하는 것과 비슷한 컨셉 → 편향을 줄여나가는 과정
- 배깅은 병렬적으로 훈련을 진행하는 것으로 데이터를 여러 셋으로 나누어서 분류기간 상호독립적이고 각 분류기가 판단을 한 후 투표방식으로 최종 집단 의사결정 → 분할정복 형태이기 때문에 분산을 줄여나가는 과정으로 이해할 수 있음
GBDT(Gradient Boosting Decision Tree)
- 전체 알고리즘을 보면 대략 다음과 같다.
1.baseline model 설정
2.M번 반복하면서 Negative Gadient로 손실함수 계산 후 추가적으로 해당값을 최소로 하는 모델을 만들고
3.이 것을 기존 모델에 연이어 붙이도록 한다. 이 때 Learning Rate를 설정해서 Detail하게 데이터를 훑고 갈 수 있도록 한다.
- Negative Gradient 때문에 경사하강법을 떠올리기 쉬운데 경사하강법은 경사를 하강할 때 파라미터를 업데이트하고, GBDT는 새로운 모델을 사용한다.
- 장점
- 트리를 기반으로 하기 때문에 전처리 작업을 할 필요가 없다.
- 분포가 밀집되어 있는 데이터에서 일반화 능력과 표현 능력이 모두 뛰어나다. - 단점
- 희소 데이터에서 표현 능력이 다소 아쉽다.
- 텍스트에서 퍼포먼스가 떨어질 수 있다.
- 직렬적으로 훈련하기 때문에 훈련속도를 높이기 어렵다.
XGBoost
- GBDT는 CART를 기초 분류기로 사용하지만, XGBoost는 다양한 기초 분류기를 지원한다. 단 CART 사용시 XGBoost는 정규화 항을 더해서 모델의 복잡도를 조절하고 과적합을 방지하려고 한다.
- GBDT는 결측치를 처리하는 전략이 별도로 없으나. XGBoost는 스스로 결측치 처리 전략을 학습한다.
- GBDT는 매번 반복할 때마다 모든 데이터를 사용하지만 XGBoost는 데이터 샘플리을 지원한다.
- GBDT는 손실함수의 일차 미분 정보만을 사용하지만 XGBoost는 1차,2차 미분 정보를 모두 사용한다.
잡설…
- RandomForest과 함께 GBDT까지가 머신러닝으로서 조금만 시간을 준다면 그대로 현업들에게 설명하기 가장 쉬운 알고리즘이었다. 어느정도의 시간은 기다려주면 설명은 해드렸던 것 같다.
- LGBM 대비 생각보다 설치가 워낙 잘되다보니 선호하는 편이나 속도가 너무느려서 GBDT의 특성을 고스란히 보여주는 편이다.
- 그럼에도 캐글에서 딥러닝으로 접근하기 전에 한번쯤은 확인삼아 사용하던 모델이었으나, 뭐랄까 어느새부턴가 정형에서도 딥러닝이 확실히 성능이 우위를 보이면서 이제는 정말 보기 쉽지 않아졌다.
- 적다보니 데이터분석가 입장에서 생각보다 대회를 제외하고는 오래 걸린다는 이슈로 많이 사용하지는 않은 것 같다.