티스토리 뷰

LightGBM은 XGBoost와 함께 부스팅 계열 알고리즘에서 각광받고 있습니다. XGBoost가 아무리 GBM에 비해 학습 시간이 짧다고 해도, 여전히 랜덤 포레스트와 같은 알고리즘에 비하면 학습 시간이 너무 깁니다. 특히 하이퍼 파라미터 최적화를 위해선 더 긴 시간이 필요합니다. 또한 멀티 코어의 CPU 시스템이 있어야 학습 시간 단축을 체감할 수 있습니다.

 

 

 

LightGBM의 가장 큰 장점은 XGBoost보다 학습 시간이 더 짧고, 메모리 소요량도 훨씬 적다는 점입니다. "Light"의 의미가 상대적인 기능 부족 및 예측 성능 부족으로 받아들여질 수 있는데, 절대 그렇지 않습니다. 예측 성능은 XGBoost와 비슷하며 기능은 오히려 LightGBM이 더 풍부합니다. XGBoost와 동일하게 조기 중단 기능도 제공합니다.

 

 

 

LightGBM의 단점은 데이터 개수가 적을 때 과적합이 발생하기 쉽다는 점입니다. 적은 데이터란 일반적으로 10000개 이하의 데이터를 의미한다고 LightGBM 공식 문서에 적혀있습니다.

 

 

 

LightGBM은 일반적인 GBM 계열의 트리 분할 방식과 다르게, 리프 중심 분할(Leaf Wise) 방식을 사용합니다. 기존의 트리 기반 알고리즘은 트리의 깊이를 줄이기 위한 균형 트리 분할(Level Wise) 방식을 사용합니다. 트리의 깊이가 적으면 과적합에 상대적으로 강하기 때문입니다. 그러나 트리의 균형을 맞추기 위한 시간이 추가적으로 소요됩니다.

 

 

 

LightGBM은 트리의 균형을 맞추지 않고, 최대 손실값(max delta loss)을 가지는 리프 노드를 지속적으로 분할하기에 비대칭적인 트리를 만들어냅니다.

 

 

 

 

 

  • 더 빠른 학습과 예측 수행 시간
  • 더 적은 메모리 사용량
  • 카테고리형 피처를 자동으로 최적 변환

 

 

 

 

 

LightGBM의 하이퍼 파라미터는 XGBoost와 많은 부분이 같습니다. 그러나 LightGBM 알고리즘의 동작 방식은 XGBoost와 다르기 때문에(Leaf-Wise), max_depth 파라미터를 매우 크게 설정해줘야 할 필요가 있습니다. 모델의 복잡도를 줄이기 위한 기본 방안은 num_leaves의 개수를 중심으로 min_child_samples, max_depth를 함께 조정하는 것입니다. num_leaves는 개별 트리가 가질 수 있는 최대 리프 노드의 개수이고, LightGBM 모델의 복잡도를 제어하는 주요 파라미터입니다. 큰 값을 설정하면 정확도가 높아지지만, 트리의 깊이가 깊어지고 과적합이 발생합니다.

 

 

 

learning_rate를 작게 하면서 n_estimators를 크게 하는, 부스팅 계열 튜닝에서 가장 기본적인 방안을 사용하는 것도 좋습니다.

 

 

 

LightGBM 모델을 통해 위스콘신 유방암 데이터 세트를 학습하고 예측해봅시다.

 

 

 

 

 

 

 

 

LightGBM 사이킷런 래퍼 클래스로 LGBMClassifier, LGBMRegressor가 있습니다. LGBMClassifier 객체를 선언한 후 위스콘신 유방암 데이터 세트를 학습합시다. 조기 중단 기능을 사용하기 위해 검증 데이터 세트를 만들었습니다.

 

 

 

 

 

 

 

 

 

 

 

 

적은 학습 데이터 세트임에도 불구하고 AUC 값이 약 0.98임을 확인할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

XGBoost와 동일하게 학습시 피처 중요도를 시각화하는 내장 API를 가지며, 메서드 이름도 동일합니다.

 

 

 

 

 

 

«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31