포스트 난이도: HOO_Senior
# XGBoost란?
XGBoost (Extreme Gradient Boosting)는 결정 트리(Decision Tree) 기반의 부스팅(Boosting) 알고리즘이다. 기본적으로 Gradient Boosting Machine (GBM)을 개선한 버전이며, 빠르고 효율적인 트리 기반 앙상블 학습 방식을 사용하고 있다. 결정 트리(Decision Tree) 기반의 회귀 및 분류 문제 해결에 특화된 머신러닝 모델이며 부스팅(Boosting) 기법을 활용하여 여러 개의 약한 학습기(Weak Learners)를 결합하여 성능을 향상할 수 있다.
이런 특성 때문에 나의 경우 XGBoost를 선택적으로 활용하는 편이다. 우선 정확도(Accuracy)와 효율성(Efficiency)가 필요할 경우 XGBoost를 고려한다. 트리 기반 모델로, 복잡한 데이터에서 뛰어난 성능을 보이며 Gradient Boosting 알고리즘을 개선하여 학습 속도를 최적화할 수 있다. 두번째로 클래스 불균형 문제 해결 가능하다. 뒤의 섹션에서 언급할 내용이지만, 비선형 구조의 경우 이를 구조화하는데 매우 편리한 머신러닝 모델 중 하나이다. scale_pos_weight 옵션을 활용하여 클래스 불균형을 조정할 수 있으며 SMOTE 및 RandomUnderSampler와 함께 사용하여 데이터 기준에 대한 균형 조정이 가능하다. 다음으로 해석 가능성 (Interpretability) 용이하다. 딥러닝(Deep Learning) 보다 모델의 해석이 용이하며, Feature Importance를 분석하여 어떤 요소가 산출하려는 결과에에 가장 중요한지 파악 가능하다. 마지막으로 속도 및 최적화되어 있다는 점이다. 딥러닝보다 훈련 속도가 빠르며 (특히 중소형 데이터셋에서 효율적), GPU 가속 및 병렬 연산을 지원하여 대규모 데이터셋에서도 성능 최적화 가능하다.
# 딥러닝 말고 XGBoost
앞서 이미 이유들을 전부 설명하고 있지만, XGBoost를 고려할 때 다른 머신러닝 모델이나 아니면 딥러닝 모델과의 사용에 대해서 고민을 하는 편일 것이다. 클라이언트들은 무조건 딥러닝을 외치기도 하는데 그럴 때면 정말 개발자 브로들은 답답할 따름이다. 특히 상관관계가 뚜렷하게 나오지도 않으면서, 구조화된 데이터인데 데이터 개수가 많아봐야 몇 만개일 경우에는 (심지어 몇천 개) 산출되는 결과의 속도가 문제가 아니라 근본적으로 결과로 나타내야 하는 산출물의 정확도가 낮게 나올 수밖에 없다. 그렇기에 이런 경우 XGBoost를 활용하면 생각보다 높은 정확도의 결과물을 산출해 낼 수 있으니, 선택지에서 고려해 볼 만하다.
# 정리
많은 정보를 담고 있는 이미지, 영상 등의 경우 딥러닝 모델이나 비구조화된 데이터 분석에 특화된 머신러닝 모델을 사용하는 것이 맞다. 하지만 데이터 수가 충분히 많지 않으면서도 비선형 구조일 경우에는 어차피 모델을 만들고 돌려도 산출물에 대한 정확도가 낮게 나올 수밖에 없다. 그렇기에 구조화된 데이터를 조정하여 모델링을 해야 하는 경우에는 XGBoost를 사용하는 것을 추천한다.


'Computer Science > Algorithms' 카테고리의 다른 글
[Algorithms] 머신러닝에서 SMOTE 라이브러리를 통해 데이터 불균형 해소하기: 데이터 수 증가 및 감소 (2) | 2025.03.31 |
---|---|
[Algorithms] Heap sort(힙 정렬)란 무엇인가요? (0) | 2024.12.31 |
[Algorithms] Random Forest (랜덤 포레스트) (2) | 2024.12.18 |
[Algorithms] Network Analysis Metrics: Eccentricity, Katz Centrality and Closeness Vitality (2) | 2024.01.25 |
[Deep Learning Algorithms] Adam Optimization Algorithm(아담 최적화 알고리즘) (0) | 2022.07.31 |
댓글