공부일기/Machine-Learning

그라디언트 부스팅 알고리즘(GBM, Gradient Boosting Machine)

pipiiiiii 2024. 8. 2. 01:13

그라디언트 부스팅

머신러닝에서 부스팅은 약한 모델을 여러 번 순차적으로 적용해 강한 모델을 만들어 나가는 것을 의미한다. 

 

그라디언트 부스팅은 Gradient(또는 잔차(Residual))를 이용해 이전 모형의 약점을 보완하는 새로운 모형을 순차적으로 적합한 뒤 이들을 선형 결합하여 얻어진 모형을 생성하는 지도 학습 알고리즘이다. 

 

GBM에서 사용되는 가장 핵심적인 방법은 gradient descent, 경사하강법이다. 

경사하강법은 손실 함수(loss fuction)를 정의하고 이의 미분값이 최소가 되도록 하는 방향을 찾고 접근하는 방식이다. 

 

 

그라디언트 부스팅 작동 요소

그라디언트 부스팅은 세 가지 요소를 수반한다. 

  • 최적화되는 손실 함수
    • 사용된 손실 함수는 해결되는 문제의 유형에 따라 다르다. 예를 들어 회귀분석은 Squared error(제곱 오류)를 사용할 수 있고 분류는 Logarithmic(대수) 손실을 사용할 수 있다. 
  • 예측을 만드는 약한 학습기
    • 의사결정나무는 그라디언트 부스팅에서 약한 학습기로 사용된다. 
    • 회귀 나무를 사용하여 분할에 대한 실제 결과 값을 출력하고 예측에서 잔차를 수정할 수 있다. 
  • 손실 함수를 최소화하는 약한 학습기를 추가하는 추가적 모델
    • 나무들은 한 번에 하나만 추가되고, 모델 내 기존 나무들은 바뀌지 않는다. 
    • 경사하강법은 나무가 추가될 때 손실을 최소화하는 데 사용되며, 회귀방정식의 계수들 또는 신경망의 가중치들 같은 파라미터들의 집합을 최소화하는 데 사용된다. 
    • 트리를 파라미터화 한 다음 파라미터를 수정하고 잔차 손실을 감소시킴으로써 올바른 방향으로 이동하여 작업을 수행한다. 
    • 고정된 수의 트리들은 일단 손실이 수용가능한 수준까지 도달하거나 외부 validation(확인) 데이터셋에서도 더 이상 향상되지 않으면 추가되거나 훈련을 멈춘다. 

 

 

그라디언트 부스팅 장단점

장점

  • 머신러닝 계열의 모델 중 성능이 좋은 편이다.
  • 부스팅 계열 Tree 모델이 가지는 장점들을 가지고 있다.
  • 수치형, 범주형 모두 예측이 가능하고, 결측 데이터 처리, 피처 중요도 선택이 쉽다.

단점

  • 배깅과 비교했을 때 훨씬 속도가 느리다.
  • 잔차를 줄여 나가기 위해 학습하는 부스팅 모델 특성상 과적합 발생 가능성이 높다.
  • hp튜닝에 시간이 많이 걸린다.
  • 전문 지식이 필요하다.
  • 해석이 어렵다. 

 

 

그라디언트 부스팅 과정

  1. 초기값으로 상수함수를 적용한다. 
  2. 손실 함수를 최소화하는 경사도(gradient)를 구한다.
  3. 경사도(gradient)를 모델의 타겟 값으로 사용해 경사도(gradient)를 고려한 학습을 진행한다. 
  4. 학습률을 더해 최종 모형을 만든다
  5. 2번에서 4번 과정을 반복한다. 

 

 

그라디언트 부스팅 강화 버전들

GBM에는 GBM을 더욱 발전시킨 XGBoost와 LightGBM, Catboost이 있다. 

  • XGBoost
    • 최적화된 그래디언트 부스팅 구현이 가능한 파이썬 라이브러리다. 
    • 빠른 속도, 확장성, 이식성이 특징이다. 
    • 이전 모델이 과소적합한 샘플에 가중치를 줘서 다음 모델에서 예측 정확도를 높이는 방식으로 모델을 보완해 가는 부스팅 기법을 사용한다. 
    • GBM보다 빠르고 조기종료가 가능하며 과적합 방지가 가능하다.
    • 분류와 회귀 둘 다 사용이 가능하다.
    • 병렬 학습이 지원되도록 구현한 라이브러리다.  
    • XGBoost의 장단점은 아래와 같다.
      • 장점
        • 높은 예측 성능
        • 빠른 속도와 확장성
        • 강력한 특성 선택 가능
        • 다양한 평가 지표 제공
      • 단점
        • 매개변수 튜닝의 어려움
        • 자원 소모
        • 해석이 어려운 모델 

  • LightGBM 
    • XGBoost의 효율성 문제를 보완하여 나온 알고리즘이다.
    • LightGBM의 장단점은 아래와 같다.
      • 장점
        • 학습하는 데 걸리는 시간이 적다.
        • 메모리 사용량이 상대적으로 적다.
        • gpu 학습을 지원한다. 
        • categorical feature들의 자동 변환과 최적 분할
      • 단점
        • 작은 dataset을 사용할 경우 과적합 가능성이 크다. 
    • leaf wise tree 분할 방식으로 나무의 균형을 고려하지 않고 최대 손실 값을 가지는 leaf node를 지속적으로 분할해 깊고 비대칭적인 트리를 생성한다. 기존 트리 분할 방식에 비해 예측 오류 손실을 최소화할 수 있다.  

  • Catboost(Categorical Boosting)
    • 상대적으로 최근에 나온 알고리즘으로 범주형 변수를 처리하는데 유용한 알고리즘이다. 
    •  GBM의 문제인 과적합 문제를 해결하면서 동시에 학습 속도를 XGBoost과 LightGBM보다 빠르게 개선한 알고리즘이다. 
    • 기존의 GBM 알고리즘을 조작하여 타겟 누수를 개선했다. 
    • XGBoost과 LightGBM에서 Hyper-parameter에 따라 성능이 달라지는 민감한 문제를 해결하는 것에도 초점을 맞췄다. 
    • Catboost의 특징은 아래와 같다. 
      • Level-wise Tree
        level-wise 방식으로 트리를 형성하지만 특징이 모두 동일하게 대칭적인 트리 구조로 형성한다. 이런 방식을 통해 예측 시간을 감소시킨다.   

      • Ordered Boosting
        Ordered Boosting은 기존의 부스팅 과정과 전체적인 양상은 비슷하되, 조금 다르다. 
        기존의 부스팅 모델이 일괄적으로 모든 훈련 데이터를 대상으로 잔차계산을 했다면 catboost는 일부 데이터만을 가지고 잔차계산을 한 후 모델을 만들어 나머지 데이터의 잔차는 이 모델로 예측한 값을 사용한다.   

      •  Random Permutation
        데이터를 뽑아낼 때 셔플링하여 뽑아낸다. 또한, 모든 데이터를 뽑는 것이 아니라 그중 일부만 가져오게 할 수 있다. 이렇게 하는 이유는 과적합 방지를 위해 트리를 다각적으로 만들기 위해서다. 
    • Catboost의 장단점은 아래와 같다. 
      • 장점
        • 다른 GBM에 비해 과적합이 적다.
        • 범주형 변수에 대해 특정 인코딩 방식으로 인하여 모델의 정확도와 속도가 높다. 
        • 인코딩 작업을 하지 않고도 그대로 모델의 input으로 사용할 수 있다. 
      • 단점
        •  missing data를 처리해주지 않는다. 
        • 결측치가 매우 많은 데이터셋에는 부적합하다. 
        • 데이터의 대부분이 수치형인 경우 LightGBM보다 학습 속도가 느리다. 

 

 

그라디언트 부스팅 알고리즘 코드 공부

https://github.com/DIB-PP/Machine-Learning

 

GitHub - DIB-PP/Machine-Learning

Contribute to DIB-PP/Machine-Learning development by creating an account on GitHub.

github.com

 

 

 

 

 

 

참고 자료