본문 바로가기

Machine Learning/머신러닝 완벽가이드 for Python

ch. 4.5 앙상블-부스팅

부스팅 (Boosting)

 

  • 부스팅 알고리즘은 여러개의 약한 학습기(weak learner) 를 순자적으로 학습-예측하면서 잘못 예측한 데이터에 가중지 부여를 통해 오류를 개선해 나가면서 학습하는 방식입니다.
  • 부스팅의 대표적인 구현은 AdaBoost(Adaptive boosting)와 그래디언트 부스트가 있습니다.

 

에이다부스팅의 학습/예측 프로세스 -1

 

오류들에 대해 가중치를 부여하고, 예측 결정 기준을 결합해 예측을 수행함.

 

GBM(Gradient Boost Machine) 개요

 

● 경사하강법 : 반복 학습을 통해 모델의 오류를 최소화하는 가중치를 업데이트하는것

GBM(Gradient Boost Machine) 도 에이다부스트와 유사하나, 가중지 업데이트를 경사 하강법(Gradient Descent)을 이용하는 것이 큰 차이입니다. 오류 값은 실제 값 - 예즉값입니다. 분류의 실제 결괏값을 y, 피처를 X1,X2, ~ ,…, Xn, 그리고 이 피처에 기반한 예측 함수를 F(x) 함수라고 하면 오류식 h(x) = y - F(x) 이 됩니다. 이 오류식 h(x) = y - F(x) 를 최소화하는 방향성을 가지고 반복적으로 가중치 값을 업데이트하는 것이 경사 하강법 (Gradient Descent)입니다. 경사 하강법은 반복 수행을 통해 오류를 최소화할 수 있도록 가중치의 업데이트 값을 도출하는 기법으로서 머신러닝에서 중요한 기법 중 하나입니다.

 

 

● GBM의 단점:
가중치 업데이트 반복수행으로 인해
학습시간이 상대적으로 오래걸린다.
그리드서치까지 수행하면 매우 오래걸린다.

 

사이킷런 GBM 주요하이퍼 파라미터 및 튜닝

 

사이킷런은 GBM 분류를 위해 GradientBoostingClassifier 클래스를 제공합니다.

  • loss: 경사 하강법에서 사용할 비용 함수를 지정합니다. 특별한 이유가 없으면 기본값인 'deviance’ 를 그대로 적용합니다.
  • learning_rate: GBM 이 학습을 진행할 때마다 적용하는 학습률입니다. Weak learner 가 순자적으로 오류 값을 보정해 나가는 데 적용하는 계수입니다. 0~1 사이의 값을 지정할수 있으며 기본값은 0.1입니다. 너무 작은 값을 적용하면 업데이트 되는 값이 작아져서 최소 오류 값을 잦아 예측 성능이 높아질 가능성이 높습니다. 하지만 많은 weak learner는순차적인 반복이 필요해서 수행 시간이 오래 걸리고, 또 너무 작게 설정하면 모든 weak learner의 반복이 완료돼도 최소 오류 값을 찾지 못할 수 있습니다. 반대로 큰 값을 적용하면 최소 오류값을 찾지 못하고 그냥 지나쳐 버려 예측성능이 떨어질 가능성이 높아지지만, 빠른 수행이 가능합니다.
    n_estimators: weak learner의 개수입니다 weak learner가 순자적으로 오류를 보정하므로 개수가 많을수록 예즉 성능이 일정 수준까지는 좋아질 수 있습니다. 하지만 개수가 많을수록 수행 시간이 오래 걸립니다. 기본값은 100 입니다.
    subsample: weak learner 가 학습에 사용하는 데이터의 샘플링 비율입니다. 기본값은 1 이며, 이는 전제 학습 데이터를기반으로 학습한다는 의미입니다 (0.5 이면 학습 데이터의 50%). 과적합이 염려되는 경우 subsample을 1보다 작은 값으로 설정합니다.