[파이썬 머신러닝 가이드] 분류 - LightGBM

LightGBM

 

XGB 보다 더 빠른 학습과 예측 수행시간, 더 작은 메모리 사용량, 카테고리형 피처의 자동 변환과 최적 분할(원-핫 인코딩 사용 안하고도 카테고리형 피처를 최적으로 변환하고 이에 따른 노드 분할 수행)

 

 

  • Level-wise(균형 트리 분할) vs. Leaf-wise(리프 중심 트리 분할)

- 일반 GBM 계열의 트리 분할 방법은 균형 트리 분할. 

트리의 깊이를 효과적으로 줄이기 위해! 최대한 균형 잡힌 트리 유지하며 분할하기에 트리의 깊이 최소화 될 수 있음. 오버피팅에 더 강한 구조를 가질 수 있다고 알려져 있어서.

 

but, 균형 맞추기 위한 시간 필요함.

 

 

- 리프 중심 트리 분할 방식은,

 

트리의 균형 맞추지 않고, 최대 손실 값(max delta loss)을 가지는 리프 노드를 지속적으로 분할하며 트리의 깊이가 깊어지고, 비대칭적인 규칙 트리 생성.

최대 손실값을 가지는 리프 노드를 지속적으로 분할해 생성된 규칙 트리는 학습 반복할수록 결국 균형 트리 분할 방식보다 예측 오류 손실 최소화할 수 있음.

 

 

 

 

- 하이퍼 파라미터 튜닝 방안

  • num_leaves 개수 중심으로(개수 높아지면 정확도 높아지지만, 트리 깊어지고 모델 복잡해져 과적합 영향도 커짐)
  • min_child_samples(min_data_in_leaf)(보통 큰 값으로 설정하면 트리가 깊어지는 것 방지)
  • max_depth를 함께 조정하면서 모델의 복잡도 줄이는것.
  • learning_rate 작게 하면서 n_estimators 크게하기(너무 커지면 과적합 우려)

- plot_metric, plot_tree

  • plot_metric → 손실 함수 보여줌(training 과 valid의 차이를 보여주며 과적합임을 확인할 수 있음)
  • plot_tree → 리프들 보여줌.
  •