트리 기반의 앙상블 학습에서 가장 각광 받고 있는 알고리즘 중 하나

 

GBM에 기반하고 있지만 GBM이 가진 '느린 수행 시간' 및 '과적합 규제(Regularization) 부재' 등의 문제를 해결

 

병렬 CPU환경에서 병렬 학습이 가능해 GBM대비 빠른 학습 시간을 가진다.

 

Early Stopping 기능

기본 GBM의 경우 지정된 횟수(n_estimator)를 다 채워야 학습이 종료 되지만 XGBoost의 경우 부스팅 반복 횟수에 도달하지 않아도 예측 오류가 더 이상 개선되지 않는다면 반복을 끝까지 수행하지 않고 중지하여 수행시간을 개선할 수 있다.

 

독자적인 XGBoost 프레임 워크 기반의 XGBoost와 사이킷런과 연동되는 모듈로 나뉜다.

 

과적합 문제가 심각하다면 다음과 같이 적용할 것을 고려할 수 있다.

eta 값을 낮춘다.(0.01 ~ 0.1). eta 값을 낮출 경우 num_round(n_estimators)는 반대로 높여줘야 하낟.

max_depth 값을 낮춘다.

min_child_weight 값을 높인다.

gamma 값을 높인다.

subsample과 colsample_bytree를 조정하는 것도 트리가 너무 복잡하게 생성되는 것을 막아 과적합에 도움이 될 수 있다.

 

XGBoost 자체적으로 교차검증, 성능 평가, 피처 중요도 등의 시각화 기능을 가지고 있다.

 

 

 

랜덤 포레스트(Random Forest)

 

랜덤 포레스트는 앙상블 알고리즘 중 비교적 빠른 수행 속도를 가지고 있고, 다양한 영역에서 높은 예측 성능을 가지고 있다.

 

여러 결정 트리(트리들이 모여 숲(forest)이 된다)가 배깅 방식으로 전체 데이터를 샘플링하여 개별적으로 학습해 보팅을 통해 예측 결정을 하게 된다.

 

부트스트래핑(bootstrapping) 분할 방식 : 여러 개의 데이터 세트를 중첩되게 분리하는 것

Bagging = Bootstrap aggregating

 

GBM(Gradient Boost Machine)

Ada boost과 동작 과정이 유사하나 가중치 갱신에 경사 하강법을 사용한다는 것이 큰 차이이다.

 

일반적으로 GBM이 랜덤 포레스트보다 예측 성능이 조금 뛰어난 경우가 많다.

그러나 수행시간이 오래 걸리고, 하이퍼 파라미터 튜닝 노력도 더 필요하다.

 

GBM은 과적합에도 강한 뛰어난 예측 성능을 가진 알고리즘이지만 수행 시간이 오래 걸린다.

 

 

앙상블 학습
앙상블 분류는 여러 분류기를 생성하고 그 예측을 결합함으로써 보다 정확한 예측을 도달하는 기법

 

이미지, 영상, 음성 등의 비정형 데이터의 분류는 딥러닝이 뛰어난 성능을 보이고 있지만, 대부분의 정형 데이터 분류 시에는 앙상블이 뛰어난 성능을 나타내고 있다.

 

* 정형 데이터와 비정형 데이터

정형 데이터 : 데이터베이스와 같이 데이터 들의 특징을 분류할 수 있도록 규칙에 맞게 정리된 정보

비정형 데이터 : (이미지, 음성, 영상등) 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보(위키 백과)

 

앙상블 학습의 유형 : 보팅(Voting), 배깅(Baggin), 부스팅(Boosting) 이외에도 스태킹을 포함한 다양한 앙상블 방법이 있다.

보팅 : 다른 분류 알고리즘을 사용하여 투표를 통해 최종 예측 값을 선정

(다른 분류 알고리즘의 예 : 선형 회귀, KNN, 서포트 벡터 머신 등)


배깅 : 같은 분류 알고리즘을 사용하고 데이터 샘플링을 서로 다르게 가져가 투표를 통해 최종 예측 값을 선정

(예: 랜덤 포레스트)

보팅과 배깅에서 학습 데이터의 활용 방법이 다르다.

보팅은 학습 데이터를 공유하여 여러 알고리즘에서 사용하는 것이나, 배깅에서는 학습 데이터를 샘플링하여 각 각 알고리즘에 전달한다. 이렇게 데이터를 샘플링하여 추출하는 방식을 부트스트래핑(Bootstraping)분할 방식이라고 한다.

 

교차 검증에선 데이터 세트간의 중첩을 허용하지 않았지만, 배깅은 중첩을 허용한다.

즉 10,000개의 데이터를 10개의 분류기가 배깅 방식으로 나눈다면 각 1000개의 데이터 내에서는 중복된 데이터가 있다.

 

부스팅은 순차적으로 학습을 수행하는데, 다음 분류기에 가중치를 부여하며 학습과 예측을 진행한다.

대표적인 무스팅 모듈 : 그래디언트 부스트, XGBoost(eXtra Gradient Boost), LightGBM(Light Gradient Boost) 등


보팅에는 두가지 방법이 있다. (하드 보팅, 소프트 보팅)
하드 보팅 : 다수의 분류기가 결정한 예측값을 최종 보팅 결괏값으로 선정 (다수결)
소프트 보팅 : 레이블 값 결정 확률을 모두 더하고 이를 평균해서 이들 중 확률이 가장 높은 레이블 값을 최종 보팅 결과값으로 선정

일반적으로 하드 보팅보다 소프트보팅이 예측 성능이 좋아 더 많이 사용된다.

결정 트리
학습을 통해 데이터에 있는 규칙을 자동으로 찾아내 트리 기반의 분류 규칙을 만드는 것.
규칙노드 : 규칙 조건이 되는 것
리프노트 : 결정된 클래스(레이블) 값
새로운 규칙 조건마다 생성되는 '서브트리'

데이터세트에 피처가 있고 이러한 피처가 결합해 규칙 조건을 만들떄 마다 규칙 노드가 만들어진다.
많은 규칙이 있다는 것은 분류를 결정하는 방식이 더욱 복잡해지고, 트리의 깊이가 깊어져 과적합으로 이어지기 쉽다.

결정 노드는 정보 균일도가 높은 데이터 세트를 먼저 선택할 수 있도록 규칙 조건을 만든다

정보 이득 지수 = 1- 엔트로피
결정 트리는 정보 이득 지수로 분할 기준을 정한다.
엔트로피가 높은 수록 데이터가 혼잡하다.

지니 계수 = 0 가장 평등, 1 가장 불평등
지니계수가 낮을 수록 데이터 균일도가 높다.

결정 트리 장점
쉽다, 직관적이다, 피처의 스케일링이나 정규화 등의 사전 가공 영향도가 크지 않다.

결정 트리 단점
과적합으로 알고리즘 성능이 떨어진다. 이를 극복하기 위해 트리의 크기를 사전에 제한하는 튜닝 필요

분류(Classification)
명시적인 정답이 있는 데이터가 주어진 상태에서 학습하는 머신러닝 방식
1. 학습 데이터로 데이터의 피처와 레이블 값(결정 값, 클래스 값)을 머신 러닝 알고리즘으로 학습
2. 새로운 데이터 값이 주어졌을 때 메지의 레이블 값 예측

분류 알고리즘
1. 베이즈(Bayes) 통계와 생성 모델에 기반한 나이브 베이즈(Naive Bayes)
2. 독립 변수와 종속 변수의 선형 관계성에 기반한 로지스틱 회귀(Logistic Regression)
3. 데이터 균일도에 따른 규칙 기반의 결정 트리(Decision Tree)
4. 개별 클래스 간의 최대 분류 마진을 효과적으로 찾아주는 서포트 벡터 머신(Support Vector Machine)
5. 근접 거리를 기준으로 하는 최소 근접(Nearest Neighbor) 알고리즘
6. 심층 연결 기반의 신경망(Neural Network)
7. 서로 다른(또는 같은)머신 러닝 알고리즘을 결합한 앙상블(Ensemble)

 

앙상블 분류는 가장 각광받는 분류 알고리즘 중 하나
정형 데이터 예측 분석 영역에서 앙상블은 매우 높은 예측 성능을 가진다.

앙상블 학습을 통한 분류
여러 개의 분류기를 생성하고 그 예측을 결합하여 보다 정확한 최종 예측을 도출하는 기법

이미지, 영상, 음성 등의 비정형 데이터 분류는 딥러닝이 뛰어난 성능을 보이고 있지만, 대부분의 정형 데이터 분류에서는 앙상블이 뛰어난 성능을 보이고 있다.


대표적인 앙상블 알고리즘으로 랜덤 포레스트, 그래디언트 부스팅이 있다. 

이들은 뛰어난 성능과 쉬운 사용, 다양한 활용도로 많이 애용된다.

+ Recent posts