-
XG Boost 탄생과 모델의 장단점머신러닝 배우기 2023. 12. 5. 23:41
데이터 분석 / 머신러닝 / 딥러닝을 공부해보신 분들은 캐글을 들어보셨을 겁니다. 거기서 딥러닝을 포함한 여러 모델들 중 XG Boost 모델의 성능이 가장 잘 나와서 많이 뜨고 널리 사용되고 있습니다. 오늘은 이런 XG Boost 모델에 대해서 알아보겠습니다.
▶︎ XG Boost (Extreme Gradient Boosting) 란?
→ 의사결정나무에 부스팅 기법을 적용한 트리 기반의 앙상블 학습 알고리즘
▶︎ XG Boost 진화 과정
1) 기반은 의사결정 나무이다. 의사결정 나무가 이해하기 쉽고 해석에 용이하지만, 입력 데이터의 작은 변동에도 트리의 구성이 크게 달라질 수 있고 과적합이 쉽게 발생한다는 한계가 있다. (Decision tree)
2) 그래서 이를 해결하기 위해 Boosting(앙상블 기법 중 하나) 기법이 추가가 되었다. Boosting 기법은 약한 학습기를 결합하여 강한 학습기로 만들어내는 앙상블 모델이라고 이해하면 좋을 것 같다. 약한 학습기들을 순차적으로 학습시켜, 이전 학습기가 만든 오차를 보완하는 방식으로 모델이 개선된다. 각각의 모델들에서 나온 예측값을 혼합하여 하나의 값으로 만들면 안정적이고 과적합을 피할 수 있으며 성능이 좋아진다. 혼합하는 과정은 회귀 문제는 평균/가중평균을 이용하고, 분류 문제는 다수결을 이용한다. (AdaBoost)
3) 하지만 Boosting 하는 도중 중 높은 가중치를 가진 data point가 존재하게 되면 가까운 다른 data point 들이 잘못 분류될 가능성이 높아지면서 모델의 성능이 크게 하락한다. 따라서 어떻게 하면 에러를 최소화하는 방향으로 가중치를 정할 수 있을까? 하다가 전체 모델의 에러가 줄어드는 방향으로 세타(가중치)를 찾는 Gradient descent를 적용하여 에러를 최소화하는 방향으로 가중치를 업데이트할 수 있게 되었다.(Gradient Boosting)
4) 하지만 모델의 학습 시간이 오래 걸려서 병렬처리 기법을 적용하게 되었다. (XG Boost)
▶︎ XG Boost 특징
→ 자동 가지치기로 트리의 깊이를 조절하여 과적합을 방지하고 모델의 일반화 성능을 향상시킵니다.
→ 자체 내장된 교차 검증 기능을 제공하며, 조기 종료(early stopping)를 통해 과적합을 방지할 수 있습니다.
→ 회귀, 이진 분류, 다중 클래스 분류, 랭킹 등 다양한 문제에 대해 다양한 손실 함수를 지원합니다.(때문에 정형 데이터에서 label의 타입과 상관없이 많이 쓰입니다)
→ 병렬 처리로 다중 코어 및 분산 컴퓨팅을 지원하여 대규모 데이터셋에 대한 효율적인 학습을 가능하게 합니다.
→ 결측치를 처리하는 기능을 내장하고 있어서, 결측치가 있는 데이터셋에서도 효과적으로 작동합니다. "missing"이라는 파라미터를 통해 따로 분기 처리를 하거나 값을 대체하면서 결측치를 처리합니다.
→ L1(Lasso) 및 L2(Ridge) 정규화를 통한 모델의 복잡도 조절과 학습 속도를 조절하는 shrinkage(축소) 기능을 지원합니다.
→ 학습된 모델에서 각 특징의 중요도를 계산할 수 있어서 어떤 특징이 모델 예측에 영향을 주는지 확인할 수 있습니다.
→ Grid Search 및 Random Search와 같은 하이퍼파라미터 튜닝을 자동으로 수행하는 기능을 제공합니다.
▶︎ XG Boost 단점
→ XGBoost는 트리 기반이기 때문에 일반적으로 높은 계산 리소스가 필요합니다. 큰 규모의 데이터셋이나 많은 특징을 다룰 때 메모리 사용량이 증가하고 학습 및 예측 속도가 느려질 수 있습니다.
→ XGBoost는 다양한 하이퍼파라미터를 가지고 있고, 이를 효과적으로 튜닝하기 위해서는 상당한 경험이 필요합니다. 특히, 많은 파라미터를 조절해야 하므로 최적의 조합을 찾는 것이 어려울 수 있습니다.
→ 기본 설정에서는 과적합을 방지하기 위한 일부 정규화가 있지만, 데이터가 작고 특징이 많은 경우에는 여전히 과적합의 위험이 있습니다.
→ XGBoost 모델은 복잡한 앙상블 모델로, 특징의 중요도를 해석하기 어려울 수 있습니다. 특히 트리의 깊이가 깊은 경우, 모델의 해석이 어려워집니다.
→ 초기에는 주로 이진 분류에 중점을 두고 개발되었으며, 다중 클래스 분류에도 사용할 수 있지만 다중 클래스 분류에 대한 기능이 다른 라이브러리에 비해 조금 미흡할 수 있습니다.
→ 트리 기반 모델은 초기화에 랜덤성이 있기 때문에 같은 설정에서도 학습 결과가 다를 수 있습니다. (재현성을 보장받지 못함)'머신러닝 배우기' 카테고리의 다른 글
[머신러닝] 변수가 모델에 얼마나 큰 영향을 끼치니? 확인하는 두가지 방법 feature importance, permutation importance (0) 2023.12.11 [머신러닝] 하이퍼파라미터와 AutoML (1) 2023.12.08 [머신러닝] 분류 모델 성능 평가 방법 (2) ROC Curve, AUC (1) 2023.12.05 [머신러닝] 분류 모델 성능 평가 방법 (1) Confusion Matrix (2) 2023.12.05 선형회귀의 비용함수, 경사하강법, 학습률 (1) 2023.12.05