본문 바로가기

LightGBM 정리

개념

LightGBM은 기존 GBDT (Gradient Boosting Decision Tree)의 한계를 극복하기 위해 만들어진 모델로,

같은 accuracy를 유지하면서 계산 속도는 더 빠르고 메모리 사용량은 더 적은 GBDT이다.

GBDT (Gradient Boosting Decision Tree)란?

GBDT에서 gradient는 손실 함수의 그래디언트(gradient)가 아니라 예측값과 실제 타깃값의 잔차(residual)를 의미 

GBDT는 손실 함수를 최소화하는 모델을 만들기 위해 이러한 잔차를 줄이는 방향으로 모델을 학습

각 트리는 이전 트리가 만든 잔차에 대해 학습하며, 잔차에 대한 예측값의 그래디언트를 기반으로 합니다.

cf) boosting은 약한 학습기(분류기/예측기)를 여러 개 연결하여 강한 학습기를 만드는 앙상블 방법을 의미

기존 GBDT의 한계

모든 가능한 분기점에 대해 information gain을 추정하기 위해 모든 data instance를 다 scan 하므로 매우 time consuming.

특히 빅데이터(data instance가 많고 feature 수도 많은 경우)에서는 효율성이 굉장히 떨어짐

어떻게 계산 속도는 더 빠르고 메모리 사용량은 더 적게 만들었을까?

단순히 말하면 data instance는 down sampling 해서 적게 만들고 서로 상관계수가 낮은 feature는 번들로 묶어(그룹화하여) feature 개수를 적게 만듦으로써 속도는 빠르게 메모리 사용량은 더 적게 만들 수 있었음

1. Gradient-based One-Side Sampling (GOSS)

다운 샘플링을 함

그래디언트가 큰 data instances는 그대로 사용하고 작은 data insatances는 랜덤으로 삭제(down sampling)

그래디언트가 큰 data instances가 information gain을 계산하는데 더 중요한 역할을 하기 때문

(그래디언트가 작으면 이미 학습이 잘된 것이므로 학습이 잘 안 된 data instacne 위주로 학습)

cf) one-side는 그래디언트가 큰 side, 작은 side 둘 중 작은 side만 down sampling 했다는 의미

2. Exclusive Feature Bundling (EFB)

상호 배타적인 피처(서로 상관계수가 낮은 피처)는 번들로 묶어(그룹화하여) 피처 수를 줄임

최적의 번들을 구하는 것은 NP-hard 문제이지만, 그리디 알고리즘을 사용해 꽤 괜찮은 근삿값을 얻을 수 있음

cf) NP-hard (Nondeterministic Polynomial hard): 목적지(정답, 목표)까지 가는 방법이 여러 가지이고(유일하게 결정되어 있지 않고), 다항시간 내에 풀 수 없는 문제

언제 사용할까?

Big data일 때. 즉, data instance가 많고 feature 수도 많은 경우에 사용하면 기존 GBDT에 비해 훨씬 효율적.

(논문에 따르면 훈련과정이 기존 GBDT와 비교했을 때 최대 20배 빠르다고 함)

Small data(LightGBM 공식 문서에 따르면 10,000개 이하) 일 때는 과적합하는 문제가 있음.

출처

- 논문 : https://papers.nips.cc/paper/2017/file/6449f44a102fde848669bdd9eb6b76fa-Paper.pdf

- <파이썬 머신러닝 완벽가이드> 책

'Machine Learning > Scikit-learn' 카테고리의 다른 글

[TestDome] Marketing Costs  (0) 2024.03.10