[머신러닝] GBM (Gradient Boosting Machine) - 그라디언트 부스팅

민정·2022년 11월 26일
1

 머신러닝

목록 보기
5/9
post-custom-banner

🍄 Gradiednt Boosting Machine 이란?


부스팅 알고리즘은 여러 개의 약한 학습기를 순차적으로 학습 - 예측하며 잘못 예측한 데이터에 가중치 부여를 통해 오류를 개선해 나가면서 학습하는 방식이다.
앞장에 배깅 알고리즘의 대표적인 모델로는 랜덤포레스트가 존재하고 부스팅 알고리즘의 대표적인 모델로 그라디언트 부스팅 머신이 존재한다

부스팅의 대표적인 구현으로 AdaBoost 와 그래디언트 부스트가 있다.
Gradient Boost의 변형 모델로는 대표적으로 XGBoost, LightGBM, CatBoost 가 있다! 변형 모델은 다음장에서 다루는 걸로 하고 오늘은 Grandient Boost에 대해서만 다루도록 하겠다.

GBM 은 에이다 부스트와 유사하나, 가중치 업데이트를 경사 하강법을 이용하는 것에 차이가 있다.

GBM 은 CART 기반의 다른 알고리즘과 마찬가지로 분류, 회귀 모두 가능하다

💫 GBM 실습

from sklearn.ensemble import GradientBoostingClassifier
import time 
import warnings
warnings.filterwarnings('ignore')

X_train,X_test, y_train, y_test = get_human_dataset()

#gbm 수행 시간 측정 
start_time = time.time()
gb_clf = GradientBoostingClassifier(random_state = 0)
gb_clf.fit(X_train,y_train)
gb_pred = gb_clf.predict(X_test)
gb_accuracy = accuracy_score(y_test,gb_pred)

print('GBM 정확도:{0.4f}'.format(gb_accuracy))
print('GBM 수행시간:{0.4f}'.format(time.time() - start_time))

→ GBM 정확도 : 0.9376

→ GBM 수행시간 : 176.2 초

랜덤 포레스트보다 좋은 성능을 나타냈다.
일반적으로 랜덤포레스트보다 예측 성능이 좋으며 그렇지만 수행시간이 오래 걸린다는 단점이 존재

🪴 GBM 하이퍼 파라미터 및 튜닝


  • loss : 경사 하강법에서 사용할 비용 함수를 지정 , 특별한 이유가 없으면 기본값 ‘ deviance’ 를 그대로 적용!
  • learning_rate: GBM이 학습을 진행할 때마다 적용하는 학습률 0-1사이값을 지정가능하며 기본값은 0.1
    learning_rate는 n_estimators와 상호 보완적으로 조합해 사용, learning_rate를 작게하고 n_estimators를 크게 하면 더 이상 성능이 좋아지지 않는 한계점까지는 예측 성능이 좋아질 수 있음
  • n_estimators: weak learner의 개수, 기본값은 100
  • subsample : weak learner가 학습에 사용하는 데이터의 샘플링 비율 , 기본값은 1

GridSearchCV를 이용한 하이퍼 파라미터 최적화 실습

from sklearn.model_selection import GridSearchCV

params = {
	'n_estimators':[100,50],
	'learning_rate':[0.05,0.1]
}
grid_cv = GridSearchCV(gb_clf, param_grid = params, cv = 2, verbose = 1)
grid_cv.fit(X_train,y_train)
print('최적 하이퍼 파라미터:\n',grid_cv.params)
print('최고 예측 정확도:{0.4f}'.format(grid_cv.best_score_))

→ 최적 하이퍼 파라미터 : {’learning_rate’:0.05,’n_estimators’:500}

→ 최고 예측 정확도 : 0.9010

GBM 은 과적합에도 뛰어난 예측 성능을 가진 알고리즘이며 수행시간이 오래걸린다는 단점이 존재한다. 따라서 GMB의 단점을 보완한 알고리즘들이 새롭게 만들어지고 있다. 그 중 XGBoost와 LightGBM이 가장 많이 사용되고 있는데 이 두개에 대한 정리는 다음 글에 정리해야겠다!

파이썬 머신러닝 완벽 가이드를 참조하여 작성하였습니다.

profile
공부 기록장
post-custom-banner

0개의 댓글