ice rabbit programming

[AI] 의사 결정 트리(2) - 앙상블 본문

Development/Machine Learning

[AI] 의사 결정 트리(2) - 앙상블

판교토끼 2021. 3. 16. 00:58

지난 글에서 앙상블 중 Bagging까지 정리했었다.

앙상블 - 부스팅(Boosting)

부스팅은 여러 개의 약한 모델을 합쳐서 강한 모델을 만드는 기법이다. 랜덤 포레스트 알고리즘이 사용된다.

랜덤 포레스트는 입력 변수에 대해서 복원 추출을 하는 알고리즘으로, 의사 결정 트리와 Bagging 알고리즘이 결합된 형태이다. 여러 개의 나무(트리)로 숲을 생성하는 의미이다.

1. 데이터 SET에서 Bootstrap을 통해 N개의 훈련 데이터 SET을 생성한다.
2. 생성한 N개의 의사 결정 트리를 학습한다.
3. 학습된 트리들의 예측 결과값의 평균 또는 다수결 투표 방식으로 결합한다.

이러한 절차를 거치고, 변수의 중요성(어떤 변수가 중요한지)을 파악할 수 있고 과적합을 방지할 수 있다는 특징을 가진다.

Ada Boost(Adaptive Boosting, 적응 부스팅)

Ada Boost는 이전 학습 과정에서 오분류한 데이터를 다음에는 잘 분류하도록 하여 약한 모델을 강한 모델로 만들어간다. 즉, 이전에 오분류한 데이터의 가중치를 바꿔서 다음에는 해당 데이터에 더 집중하도록 한다.

오분류 데이터에 대해 적합한 모델이고, 과적합 방지를 할 수 있다. 본인은 Viola-Jones 알고리즘에서 이미지 detecting할 때 사용해보았다.

Gradient Boosting

Gradient Boost는 Gradient Descent + Boosting으로, 가중치의 업데이트 과정으로 Gradient Descent를 사용한다. 그 외에는 Ada Boost와 동일한 원리.

계산량은 많지만 높은 성능을 보이며, 효율적 연산이 가능하도록 파이썬 라이브러리가 정의되어 있다. 또한, 이를 응용한 다양한 모델들이 개발되었다.

  • XG Boost : Gradient Boosting 기반으로, 과적합 방지를 위해 정규화(Regularization)된 모델을 사용한다. 이를 통해 실행 속도가 빨라지고, 예측 성능이 좋아진다.
  • LGBM(Light Gradient Boosting Model) : Gradient Boosting 기반으로, XGBoost에 비해 더 가볍과 빠른 실행 속도를 가진 모델이다. 범주형 변수 처리 지원을 한다. (배타적 범주 변수 ex. 남자/여자, 혈액형 등 하나만 가지는 변수) 이를 통해 실행 속도가 개선되고, 적은 메모리를 사용한다.
  • CatBoost(Categorical + Boosting model) : Gradient Boosting 기반으로, 범주형 변수를 위한 다양한 기능을 지원한다. Category 변수에 대한 전처리 문제를 해결하고, 범주형/수치형 변수의 combination 형태도 지원한다.