본문 바로가기
  • 데이터에 가치를 더하다, 서영석입니다.
공부하는 습관을 들이자

XGBoost vs Randomforest

by 꿀먹은데이터 2022. 6. 29.

데이터 사이언티스트(DS)로 성장하기 위해 모델의 분류와 모델에 관해 심도 깊은 이해가 필요하다.

그래서 이번에는 XGBoost와 Randomforest의 차이에 대해 알아보려고 한다.

또한 앞으로 모델을 세부적으로 공부하면서 간간히 모델에 대해 공부하고 포스팅을 하려고 한다.

왜 이 둘의 차이를 먼저 알아보는지 ?

이번 삼성 SDS Brightics 서포터즈 3기 면접에서 XGBoost와 Randomforest의 차이에 대해 여쭤봤지만..

제대로 답하지를 못했다.. 동계 인턴십에서 '암예측'에서 사용했던 주요 모델 중 하나였지만, 모델을 제대로 숙지하지 않고 썼던 나를 반성하며 공부하려고 한다.

XGBoost란?

XGBoost는 현업에서 자주 사용하는 ML 모델이다. XGBoost는 Gradient Boosting 방법 중 하나로, 'Extreme Gradient Boosting'을 뜻한다.

XGBoost는 efficient / flexible / portable 하도록 설계된 최적의 분산 그래디언트 부스팅 라이브러리로 제공된다. Gradient Boosting 프레임워크에서 머신러닝 알고리즘을 구현한다. XGBoost는 빠르고 정확한 방법으로 GBDT, GBM이라고 불리는 병렬 트리 부스팅으로 많은 데이터 과학 문제를 해결하도록 제공한다.

아래는 'XGBoost: A Scalable Tree Boosting System' 의 논문으로 참고하였다.

https://dl.acm.org/doi/abs/10.1145/2939672.2939785

 

XGBoost | Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining

KDD '16 Paper Acceptance Rate 66 of 1,115 submissions, 6% Overall Acceptance Rate 926 of 6,880 submissions, 13%

dl.acm.org

 

 

다른 부스팅 알고리즘과 차별화된 XGBoost의 특징은 다음과 같다.

GBM의 단점을 보완하여 병렬 처리를 가능하도록 설계

Regularization 기능 내장

CART 모델을 사용하여 Classification / Regression에서 뛰어난 성능을 보임

+ 무엇보다 kaggle / Dacon에서 사용하는 기법 중 하나로 정확도면에서 뛰어나 많은 사람들이 쓴다.

요약하자면, 트리 기반으로 병렬 처리를 효율적으로 빠르게 학습하고 예측하는 기법이다.

https://github.com/dmlc/xgboost

 

GitHub - dmlc/xgboost: Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, S

Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow - GitHub...

github.com

 

Randomforest 란?

랜덤포레스트 의사결정나무(DecisionTree) 모델을 기반으로 만들어진 앙상블 ML 모델로서, 여러개의 decision tree를 형성하고 포인트에 따라 각 트리에 통과시켜 가장 큰 비중을 가진 결과를 선택하는 방식이다.

랜덤 포레스트가 생성한 일부 트리는 과적합(overfitting)이 될 수 있지만, 많은 수의 트리를 생성하여 과적합이 영향을 미치지 못하도록 예방한다고 볼 수 있다.

랜덤 포레스트는 xgboost (부스팅)과는 다르게 Bagging이라는 과정을 거친다.

Bagging 프로세스는 데이터 포인트를 교체하며 무작위로 선택된다. 이는 단일 데이터 포인트를 두 번 이상 선택할 수 있음을 의미한다.

랜덤 포레스트의 장점을 보면,

분류 및 회귀 문제에 모두 사용 가능하며 결측치를 다루기 쉽다. 또한 과적합을 방지하여 모델의 정확도를 향상시키는 대표적인 모델이다.

 

여러 개의 의사결정나무가 모여 Bagging 앙상블한 모델과는 달리 XGBoost는 Boosting 앙상블로 구현된 모델이다.