본문 바로가기
ML

#7 앙상블 기법 LightGBM (LGBM)

by Kwonys 2023. 9. 22.
728x90
반응형

기존의 GBM

균형 트리 분할

  • 모든 변수에 대해 모든 데이터셋을 스캔

Light GBM

Leaf 중심 트리 분할

기존의 GBM은 수직적으로 확장하는 반면에 다른 알고리즘은 Tree가 수평적으로 확장

Light GBM의 Leaf-wise tree 분할 방식은 tree 균형을 고려하지 않고 최대 손실 값(max data loss)를 가지는 leaf 노드를 지속적으로 분할하면서 tree가 깊어지고 비대칭적인 tree가 생성됨

성능 향상이 빠른 leaf 노드를 분할한다.

 

  • 모든 변수에 대해 -> Exclusive Feature Bundling (EFB)
    • 데이터가 Sparse한 공간에서는 exclusive하다. 즉, 동시에 nonzero값을 갖는 경우는 드물다.(ex: one-hot-encoding)
    • 즉, 데이터의 변수를 줄임
    • 모든 데이터셋을 스캔 -> Gradient-based One-Side Sampling (GOSS)
      • 데이터 포인트들은 모두 서로 다른 Gradient를 가지고 있고 Gradient가 큰 데이터 포인트와 Gradient 작은 데이터 포인트는 서로 다른 역할을 함
      • Large Gradient를 가지고 있는 데이터들은 Keep 
      • Small Gradient를 가지고 있는 데이터들은 랜덤하게 Drop
      • 즉, 데이터의 객체 수를 줄임
    • 즉, Light GBM은 데이터의 전체 총량을 줄임
    • 민감하고 작은 데이터(n_rows가 10000이하)면 over-fitting 되기 쉬움
    • 대용량 데이터에서 성능이 좋음
    • 카테고리 변수가 많을 경우 매우 유용
    • split point를 찾는 방식에서 효율을 극대화하여, 훨씬 작은 메모리로 빠르게 성능이 좋은 트리를 만듦

 

주요 파라미터

CART 관련 params

  • max_depth : 제한을 크게 두지 않는 것을 추천, 15 ~ 25
  • num_leaves : leaf node의 최대 갯수는 2의 depth 제곱 (*참고: node의 최대 갯수는 2의 depth+1 제곱 - 1)                                       당연히 2의 max_depth 제곱보다 작아야 함
  • min_child_samples : 최종 결정 클래스인 Leaf Node가 되기 위해서 최소한으로 필요한 데이터 개체의 수, 1 ~ 100
  • colsample_bytree : node split 시 동일한 세팅이어야 하기에 global randomization을 제공, 0.5 ~ 0.8
  • reg_lambda 

Tree ensemble 관련 params

  • n_estimators : 반복을 수행하는 Tree 수, 50 ~ 원하는 만큼
  • learning_rate : 0.3 ~ 0.001
  • silent : -1(=verbase)
  • random_state

 

728x90
반응형