본문 바로가기
AI

Gradient boost

by HYEBINess 2022. 8. 29.

Gradient Boost는 Bagging과 Boosting이라는 앙상블 학습법 중 Boosting에 해당하는 대표적인 모델입니다. 따라서 Gradient Boost를 이해하기 위해서는 앙상블(Ensemble)이 무엇인지 알아야 합니다.

 

앙상블(Ensemble)이란?

앙상블(Ensemble)은 여러 개의 Decison Tree를 결합하여 학습하는 머신러닝 기법입니다. 더 정확히 말하자면 여러 개의 약 분류기(Weak Classifier)를 결합하여 강 분류기(Strong Classifier)를 만드는 것입니다. 앙상블을 사용하면 하나의 Decision Tree를 사용할 때보다 더 좋은 성능을 냅니다.

예를 들어, 각각 0.5의 정확도를 가지는 분류기 A, B, C가 있다고 해봅시다. 우리는 더 높은 정확도를 얻기 위해 A, B, C를 결합할 수 있습니다. 이것이 바로 앙상블 알고리즘의 기본 원리입니다.

 

Boosting의 원리

Boosting은 앙상블(ensemble) 과정을 순차적으로 실행합니다. A 분류기를 만들고 그 정보를 바탕으로 B 분류기를 만듭니다. 다시 앞선 과정의 정보들을 바탕으로 C 분류기를 만듭니다. 이때 A와 B를 약 분류기(Weak Classifier), 최종 분류기인 C를 강 분류기(Strong Classifier)라고 합니다.

약 분류기(Weak Classifier) A를 이용해 학습을 하면서 error가 발생하면, 그 error에 좀 더 집중하기 위해 error에 대한 가중치(weight)를 높이고, 그 error를 잘 처리하는 방향으로 새로운 약 분류기(Weak Classifier) B를 학습해 나갑니다. 그리고 약 분류기(Weak Classifier)들로부터의 출력을 결합하여 더 좋은 예측률을 갖는 강 분류기(Strong Classifier) C가 만들어지는 것입니다. 이처럼 Boosting은 새로운 Classifier(learner)를 학습할 때마다 이전 결과를 참조하는 방식이며, 이것이 bagging 방식과 다른 점입니다.

위 그림에서는 -와 + 기호를 더 크고 진하게 나타내어 가중치를 표현하고 있습니다. 잘못 분류된 오답에 대해 높은 가중치를 부여하고, 정답에 대해서는 낮은 가중치를 부여하고 있습니다. 

 

이때 정답과 오답의 차이(편차)를 residual(잔차) 또는 fitting error라고 합니다.  Gradient Boosting은 이 residual을 계속해서 줄이는 방식으로 예측 모형을 만들어 냅니다.

이때 모델의 학습대상인 residual은  negative gradient입니다. negative gradient는 loss fuction이 줄어드는 방향을 의미합니다. 즉, gradient가 양수라면 음수 방향(negative gradient)으로 이동해야 loss function이 작아지고, gradient가 음수라면 양수 방향(negative gradient)으로 이동해야 loss function이 작아지게 됩니다. 이렇게 Gradient Boosting은 경사 하강법(Gradient Descent)을 이용하여 residual을 줄여갑니다.

 

아주 간단한 모델 A를 통해 정답 y을 예측하고 남은 residual(잔차)를 다시 B라는 모델을 통해 예측한 다음, 다시 A + B 모델로 y를 예측한다면 A보다 나은 모델을 만들 수 있습니다. 이러한 과정을 반복하면 residual(잔차)는 계속해서 줄어들게 되고, 정확도 높은 예측 모형을 만들 수 있게 됩니다.

 

 

reference

https://bkshin.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-11-%EC%95%99%EC%83%81%EB%B8%94-%ED%95%99%EC%8A%B5-Ensemble-Learning-%EB%B0%B0%EA%B9%85Bagging%EA%B3%BC-%EB%B6%80%EC%8A%A4%ED%8C%85Boosting?category=1057680

https://bkshin.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-15-Gradient-Boost

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=laonple&logNo=220834569716 

https://koreapy.tistory.com/323

https://hyoeun-log.tistory.com/entry/ML-Gradient-Boosting-GBM

 

'AI' 카테고리의 다른 글

특이값 분해(SVD, Singular Value Decomposition)  (0) 2022.09.02
SVM(Support Vector Machine)  (0) 2022.08.14
L1 Regularization & L2 Regularization  (0) 2022.08.12
Generalization, Normalization, Standardization  (0) 2022.08.12
binary & multinomial  (0) 2022.08.08

댓글