LightGBM i CatBoost
Dlaczego LightGBM jest szybszy, podział oparty na histogramach i CatBoost dla cech kategorialnych.
LightGBM i CatBoost to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Poza XGBoost
XGBoost jest wydajny, ale może działać wolno na bardzo dużych zbiorach danych. LightGBM i CatBoost to nowsze biblioteki do gradient boostingu, które zwiększają szybkość i lepiej obsługują dane kategoryczne.
Podziały oparte na histogramie
LightGBM przed wyszukiwaniem podziałów grupuje wartości ciągłe w dyskretne przedziały (histogram). Dzięki temu wyszukiwanie podziałów jest znacznie szybsze i wymaga mniej pamięci niż metoda dokładna.
Wzrost drzewa według liści
W przeciwieństwie do wzrostu poziomami LightGBM rozwija drzewa według liści: najpierw dzieli liść zapewniający największe zmniejszenie straty. Przyspiesza to zbieżność, ale może prowadzić do przeuczenia, dlatego należy kontrolować ją za pomocą num_leaves.
LGBMClassifier i num_leaves
num_leaves to najważniejszy parametr złożoności LightGBM. Większe wartości zwiększają dokładność, ale zwiększają też ryzyko przeuczenia. Praktyczna zasada mówi, aby zachować warunek 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))Przewagi szybkościowe LightGBM
Dzięki grupowaniu histogramowemu, wzrostowi według liści oraz podpróbkowaniu cech i danych LightGBM trenuje się zauważalnie szybciej niż XGBoost na dużych zbiorach danych, często przy porównywalnej dokładności.
from lightgbm import LGBMClassifier
model = LGBMClassifier(
n_estimators=1000,
num_leaves=63,
learning_rate=0.03,
feature_fraction=0.8,
bagging_fraction=0.8,
)Wczesne zatrzymywanie w LightGBM
LightGBM obsługuje wczesne zatrzymywanie za pomocą funkcji callback. Należy przekazać zbiór ewaluacyjny i funkcję callback early_stopping, aby zatrzymać trenowanie, gdy wartość metryki przestanie się poprawiać.
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 i cechy kategoryczne
CatBoost świetnie sprawdza się w przypadku danych kategorycznych. Surowe kolumny kategoryczne można przekazać bezpośrednio za pomocą cat_features, bez potrzeby ręcznego kodowania.
Wewnętrznie wykorzystuje uporządkowane statystyki zmiennej docelowej, aby uniknąć jej wycieku.
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])Dlaczego brak kodowania jest zaletą
W przypadku innych bibliotek kategorie trzeba kodować metodą one-hot lub label encoding, co może gwałtownie zwiększyć liczbę wymiarów albo spowodować wyciek zmiennej docelowej. CatBoost obsługuje to wewnętrznie za pomocą uporządkowanego boostingu, ograniczając przeuczenie cech kategorycznych.
Najważniejsze parametry CatBoost
CatBoost wykorzystuje iterations (odpowiednik n_estimators), learning_rate oraz depth (buduje drzewa symetryczne). Często działa dobrze przy minimalnym dostrajaniu.
from catboost import CatBoostClassifier
model = CatBoostClassifier(
iterations=1000,
learning_rate=0.03,
depth=8,
l2_leaf_reg=3.0,
verbose=100,
)Porównanie szybkości
Ogólne wskazówki:
- LightGBM zwykle działa najszybciej na dużych zbiorach danych numerycznych
- CatBoost najlepiej sprawdza się przy wielu cechach kategorycznych i wymaga mniejszego dostrajania
- XGBoost jest dojrzały, niezawodny i ma świetne wartości domyślne
Należy przetestować wszystkie trzy biblioteki na własnych danych, ponieważ wyniki zależą od problemu.
Wybór biblioteki
Jeśli dane zawierają dużo cech kategorycznych, warto zacząć od CatBoost. W przypadku ogromnych tabel numerycznych i potrzeby szybkości należy wybrać LightGBM. Jako sprawdzony punkt odniesienia warto zastosować XGBoost. Wszystkie trzy biblioteki wykorzystują gradient boosting, więc poznane koncepcje można przenosić między nimi.
Szybki test
Sprawdź swoją wiedzę na temat bibliotek do gradient boostingu.
Podsumowanie
Podsumowanie: LightGBM wykorzystuje podziały oparte na histogramie i wzrost według liści, kontrolowany za pomocą num_leaves, aby szybko przetwarzać duże dane numeryczne. CatBoost natywnie obsługuje cechy kategoryczne za pomocą cat_features, bez kodowania. Obie biblioteki, podobnie jak XGBoost, są odmianami gradient boostingu. Należy przeprowadzić testy porównawcze: CatBoost sprawdzi się przy danych kategorycznych, a LightGBM zapewni szybkość.
Często zadawane pytania
Czy lekcja „LightGBM i CatBoost” jest bezpłatna?
Tak — pełny tekst „LightGBM i CatBoost” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „LightGBM i CatBoost”?
Dlaczego LightGBM jest szybszy, podział oparty na histogramach i CatBoost dla cech kategorialnych. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „LightGBM i CatBoost”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Drzewa decyzyjne: teoria i implementacja
- Lasy losowe i bagging
- Gradient boosting: GBM i XGBoost
- LightGBM i CatBoost