LightGBM과 CatBoost
LightGBM이 더 빠른 이유, 히스토그램 기반 분할, 범주형 특성을 위한 CatBoost를 학습합니다.
LightGBM과 CatBoost은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
XGBoost를 넘어
XGBoost는 강력하지만 매우 큰 데이터셋에서는 느릴 수 있습니다. LightGBM과 CatBoost는 속도를 개선하고 범주형 데이터를 더 자연스럽게 처리하는 최신 그래디언트 부스팅 라이브러리입니다.
히스토그램 기반 분할
LightGBM은 분할 지점을 찾기 전에 연속형 특성을 이산적인 구간으로 나눕니다(히스토그램). 따라서 정확한 방식보다 분할 지점을 훨씬 빠르게 찾고 메모리도 적게 사용합니다.
잎 단위 트리 성장
수준 단위 성장과 달리 LightGBM은 트리를 잎 단위로 성장시킵니다. 즉, 손실 감소량이 가장 큰 잎을 먼저 분할합니다. 이 방식은 더 빠르게 수렴하지만 과적합할 수 있으므로 num_leaves로 제어합니다.
LGBM 분류기와 잎 수
num_leaves는 LightGBM에서 복잡도를 결정하는 가장 중요한 조절 항목입니다. 값을 크게 하면 정확도가 높아지지만 과적합 위험도 커집니다. 일반적으로 num_leaves < 2^max_depth를 유지하는 것이 좋습니다.
from lightgbm import LGBMClassifier
model = LGBMClassifier(
n_estimators=300,
num_leaves=31,
learning_rate=0.05,
random_state=0,
)
model.fit(Xtr, ytr)
print(model.score(Xte, yte))LightGBM의 속도상 이점
히스토그램 구간화, 잎 단위 성장, 특성과 데이터의 부분 샘플링 덕분에 LightGBM은 대규모 데이터셋에서 XGBoost보다 눈에 띄게 빠르게 학습되며, 정확도도 비슷한 경우가 많습니다.
from lightgbm import LGBMClassifier
model = LGBMClassifier(
n_estimators=1000,
num_leaves=63,
learning_rate=0.03,
feature_fraction=0.8,
bagging_fraction=0.8,
)LightGBM에서의 조기 중단
LightGBM은 콜백을 통해 조기 중단을 지원합니다. 평가 집합과 early_stopping 콜백을 전달하면 지표가 더 이상 개선되지 않을 때 학습을 중단합니다.
import lightgbm as lgb
from lightgbm import LGBMClassifier
model = LGBMClassifier(n_estimators=2000, learning_rate=0.03)
model.fit(
Xtr, ytr,
eval_set=[(Xte, yte)],
callbacks=[lgb.early_stopping(50)],
)CatBoost와 범주형 특성
CatBoost는 범주형 데이터에서 뛰어난 성능을 보입니다. cat_features를 사용하여 원시 범주형 열을 직접 전달하면 되며, 수동 인코딩이 필요하지 않습니다.
내부적으로 순서가 있는 타깃 통계량을 사용하여 타깃 누수를 방지합니다.
from catboost import CatBoostClassifier
model = CatBoostClassifier(
iterations=500,
learning_rate=0.05,
depth=6,
verbose=False,
)
model.fit(Xtr, ytr, cat_features=[0, 3, 5])인코딩이 필요 없을 때의 강점
다른 라이브러리에서는 범주를 원-핫 인코딩하거나 레이블 인코딩해야 하며, 이 과정에서 차원이 지나치게 커지거나 타깃이 누수될 수 있습니다. CatBoost는 순서 기반 부스팅으로 이를 내부에서 처리하여 범주형 특성의 과적합을 줄입니다.
CatBoost의 주요 매개변수
CatBoost는 iterations(n_estimators와 같은 역할), learning_rate, depth를 사용합니다. CatBoost는 대칭형 트리를 구축하므로 최소한의 조정만으로도 좋은 성능을 내는 경우가 많습니다.
from catboost import CatBoostClassifier
model = CatBoostClassifier(
iterations=1000,
learning_rate=0.03,
depth=8,
l2_leaf_reg=3.0,
verbose=100,
)속도 비교
일반적인 지침은 다음과 같습니다:
- LightGBM은 대규모 수치형 데이터셋에서 대체로 가장 빠릅니다
- CatBoost는 범주형 특성이 많을 때 가장 좋고, 조정이 덜 필요합니다
- XGBoost는 성숙하고 안정적이며 기본 설정이 훌륭합니다
문제에 따라 결과가 달라지므로 자신의 데이터에서 세 가지 모두를 벤치마크하십시오.
라이브러리 선택
범주형 데이터가 많다면 CatBoost로 시작하십시오. 매우 큰 수치형 표 데이터에서 속도가 중요하다면 LightGBM을 선택하십시오. 충분히 검증된 기준 모델이 필요하다면 XGBoost를 사용하십시오. 세 라이브러리 모두 내부적으로 그래디언트 부스팅을 사용하므로 개념을 서로 적용할 수 있습니다.
빠른 확인
그래디언트 부스팅 라이브러리에 대한 지식을 테스트해 보십시오.
복습
복습: LightGBM은 num_leaves로 제어되는 히스토그램 기반 잎 단위 성장을 사용하여 대규모 수치형 데이터에서 빠르게 학습합니다. CatBoost는 cat_features를 통해 범주형 특성을 기본적으로 처리하므로 인코딩이 필요하지 않습니다. 두 라이브러리 모두 XGBoost와 마찬가지로 그래디언트 부스팅의 변형입니다. 선택하기 전에 벤치마크하십시오. 범주형 데이터에는 CatBoost를, 속도에는 LightGBM을 사용하십시오.
자주 묻는 질문
“LightGBM과 CatBoost” 강의는 무료인가요?
네 — “LightGBM과 CatBoost” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“LightGBM과 CatBoost”에서 뭘 배우나요?
LightGBM이 더 빠른 이유, 히스토그램 기반 분할, 범주형 특성을 위한 CatBoost를 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“LightGBM과 CatBoost” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 결정 트리: 이론과 구현
- 랜덤 forest와 배깅
- 그래디언트 부스팅: GBM과 XGBoost
- LightGBM과 CatBoost