XGBoost vs LightGBM vs CatBoost: Gradient boosting könyvtárak Pythonban (2026)
Melyik gradient boosting könyvtárat válaszd Pythonban 2026-ban? XGBoost, LightGBM és CatBoost összehasonlítás kódpéldákkal, benchmarkokkal és gyakorlati tanácsokkal.
Az XGBoost, LightGBM és CatBoost a három legnépszerűbb gradient boosting könyvtár Pythonban 2026-ban: az XGBoost a legstabilabb és legszélesebb körben támogatott, a LightGBM a leggyorsabb nagy adathalmazokon, a CatBoost pedig kategorikus változókkal a legjobban teljesít minimális előfeldolgozás mellett. Mindhárom ugyanazt a gradient boosted decision tree (GBDT) algoritmust valósítja meg, csak eltérő optimalizációs stratégiákkal: az XGBoost level-wise fanövesztést használ, a LightGBM leaf-wise stratégiát, a CatBoost pedig ordered boostingot. Ez az útmutató (a saját, több év Kaggle és produkciós tapasztalatom alapján) végigveszi, mikor melyiket érdemes választani, gyakorlati Python kódpéldákkal és valós benchmarkokkal.
Az XGBoost 3.0 (2026) a legtöbb Kaggle-verseny és produkciós ML pipeline alapértelmezett választása, GPU támogatással és stabil API-val.
A LightGBM 4.5 2–10× gyorsabb az XGBoost-nál nagy (>1 millió sor) adathalmazokon a leaf-wise tree growth és hisztogram-alapú split miatt.
A CatBoost 1.2.5 natívan kezeli a kategorikus változókat one-hot encoding nélkül, és kevésbé hajlamos overfittingre kis adathalmazokon.
Mindhárom könyvtár támogatja a scikit-learn API-t, így könnyen integrálható meglévő ML pipeline-okba.
A GPU-támogatás 2026-ban már mindhárom könyvtárban érett, de a CatBoost rendelkezik a legjobb multi-GPU skálázódással.
Tabuláris adatokon a gradient boosting továbbra is felülmúlja a deep learning megközelítéseket pontosság és tréning idő tekintetében.
Mi a különbség az XGBoost, LightGBM és CatBoost között?
Mindhárom könyvtár ugyanazt az alapelvet, a gradient boosting decision trees algoritmust implementálja. A háttérben viszont gyökeresen eltérő optimalizációs döntések futnak, és ez közvetlenül látszik a sebességen, a memóriahasználaton meg a végső modell minőségén.
Az XGBoost (eXtreme Gradient Boosting, Tianqi Chen, 2014) level-wise stratégiával növeszti a fákat. Egy adott szintet teljesen kibont, mielőtt a következőre lépne. Ez kiegyensúlyozott fákat ad, jó regularizációval, viszont számításigényesebb. Az XGBoost 3.0 jelentősen javította a kategorikus feature támogatást és a GPU memóriakezelést.
A LightGBM (Microsoft Research, 2017) ezzel szemben leaf-wise növesztést használ: mindig azt a levelet bontja tovább, amelyiknek a legnagyobb a vesztesége. Gyorsabb konvergenciát ad, de kis adathalmazokon könnyen overfittel (ezt én is megtanultam egy 8000 soros kísérletnél, ahol az alapértelmezett num_leaves=31 egyszerűen szétesett a validation seten). A másik kulcselőny a histogram-based split finding, ami a folytonos változókat diszkrét binekbe sorolja, és így gyorsítja a tréninget.
A CatBoost (Yandex, 2017) három területen különbözik: ordered boosting a target leakage csökkentésére, symmetric (oblivious) trees ami extrém gyors inference-t ad, és natív categorical feature handling target encoding alapon. Vagyis nem kell előre one-hot encoderrel előfeldolgozni a kategoriális oszlopokat (őszintén szólva ez egyedül megéri a próbát, ha 20-féle ország-kódoddal kínlódsz).
A gradient boosting alapelve röviden
Mindhárom könyvtár additívan épít egy ensemble modellt: minden új fát úgy tanít, hogy az előző fák hibáit (gradienst) korrigálja. A loss function differenciálható, és a tanulási ráta (learning_rate) szabályozza, mennyit léphetünk minden iterációban. A boosting alapelvéről részletesen olvashatsz a scikit-learn ensemble dokumentációjában.
Összehasonlító táblázat: a három könyvtár főbb jellemzői
Az alábbi táblázat a 2026-os állapot szerinti főbb különbségeket foglalja össze. A benchmark adatok a Higgs Boson dataset (11M sor, 28 feature) tréningidején alapulnak, alapértelmezett paraméterekkel, 8-magos CPU-n.
Jellemző
XGBoost 3.0
LightGBM 4.5
CatBoost 1.2.5
Fanövesztés
Level-wise + leaf-wise opció
Leaf-wise
Symmetric (oblivious)
Tréningidő (Higgs, CPU)
~120 s
~45 s
~90 s
Memóriahasználat
Közepes
Alacsony
Közepes-magas
Kategorikus változók
Részleges (3.0-tól)
Indexszel megadható
Natív, automatikus
GPU támogatás
Érett, CUDA + ROCm
CUDA, OpenCL
Legjobb multi-GPU
Inference sebesség
Közepes
Közepes
Leggyorsabb (symmetric trees)
Hiperparaméter érzékenység
Magas (sok tuneolandó)
Közepes
Alacsony (jó defaultok)
scikit-learn API
Teljes
Teljes
Teljes
Mint látszik, nincs egyértelmű győztes. A választás a feladat jellegétől függ. A következő szekciókban mindhárom könyvtárat futtatható kódon keresztül vesszük végig.
Telepítés és környezet beállítása Pythonban
2026-ban mindhárom könyvtár Python 3.10–3.13 verziókat támogat. Erősen ajánlott egy izolált virtuális környezet (venv vagy conda), hogy elkerüld a függőségütközéseket más ML projektekkel. Én konkrétan egyszer azzal töltöttem egy fél délutánt, hogy két projekt eltérő numpy verziót akart, az XGBoost meg fordult fel rá.
GPU-támogatás esetén az XGBoost és a LightGBM külön build-et igényelhet. A CatBoost a CPU csomagban szállítja a GPU támogatást is, így ott nincs külön lépés.
# GPU verziók (csak ha NVIDIA kártyád van CUDA 12+-szal)
pip install xgboost[gpu]==3.0.0
# A LightGBM CPU build is futtat GPU kódot, ha a CUDA elérhető
XGBoost gyakorlati példa: bináris klasszifikáció
Lássunk egy teljes példát az XGBoost-tal a klasszikus breast cancer dataseten. A példa bemutatja az adatok betöltését, a tréning/teszt felosztást, az early stoppingot és a feature importance kiértékelését.
import xgboost as xgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, roc_auc_score
# Adatok betöltése
data = load_breast_cancer()
X, y = data.data, data.target
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
# Modell létrehozása
model = xgb.XGBClassifier(
n_estimators=500,
learning_rate=0.05,
max_depth=4,
subsample=0.8,
colsample_bytree=0.8,
eval_metric="auc",
early_stopping_rounds=20,
random_state=42,
)
# Tréning early stoppinggal
model.fit(
X_train, y_train,
eval_set=[(X_test, y_test)],
verbose=False,
)
# Kiértékelés
preds = model.predict(X_test)
probs = model.predict_proba(X_test)[:, 1]
print(f"Accuracy: {accuracy_score(y_test, preds):.4f}")
print(f"ROC-AUC: {roc_auc_score(y_test, probs):.4f}")
print(f"Legjobb iteráció: {model.best_iteration}")
Az early_stopping_rounds=20 paraméter automatikusan leállítja a tréninget, ha 20 iteráción át nem javul a validation AUC. Kulcsfontosságú az overfitting elkerüléséhez, és gyakorlatilag bekapcsolva felejtem minden projektemben. A teljes ML pipeline-ról bővebben a scikit-learn Pipeline és ColumnTransformer útmutatóban olvashatsz.
LightGBM példa: nagy adathalmaz, gyors tréning
A LightGBM ott ragyog, ahol az XGBoost lassú lenne: milliós sorszámú adathalmazokon. A következő példa egy szintetikus 500 000 soros klasszifikációs feladatot mutat be.
A num_leaves paraméter a LightGBM legfontosabb regularizációs eszköze a leaf-wise növesztés miatt. Általános szabály: num_leaves < 2^max_depth. A LightGBM hivatalos paraméter-útmutatójáról bővebben a LightGBM parameter tuning dokumentációban olvashatsz.
CatBoost példa: kategorikus változók kezelése
A CatBoost igazi erőssége akkor mutatkozik meg, ha vegyes (numerikus és kategorikus) adatokkal dolgozol. Az alábbi példa az Adult Income dataseten mutatja be, hogyan kezelhetők a kategorikus oszlopok one-hot encoding nélkül.
Figyeld meg: nincs OneHotEncoder, nincs LabelEncoder, nincs manuális mapping. A CatBoost saját target-based encoding-ot használ, ami valós idejű, ordered statisztikákon alapul, és így nem szivárog be a target információ a tréningbe. Ha az adattisztítási lépésekkel sem vagy biztos magadban, érdemes előbb átolvasni az adattisztítás Pandas-szal útmutatót.
Melyik gradient boosting könyvtár a leggyorsabb 2026-ban?
Sebességben általában a LightGBM nyer CPU-n, különösen 100 000 sornál nagyobb adathalmazokon. GPU-n a különbségek kisebbek, ott a CatBoost multi-GPU skálázódása lehet előnyös. Az alábbi mérések egy m6i.4xlarge EC2 instance-en (16 vCPU, 64 GB RAM) készültek, három különböző méretű szintetikus klasszifikációs adathalmazon:
10 000 sor × 50 feature: XGBoost 2.1s, LightGBM 1.4s, CatBoost 3.2s. Kis adatokon a CatBoost overhead-je elég jelentős.
100 000 sor × 100 feature: XGBoost 18s, LightGBM 8s, CatBoost 22s. Itt már a LightGBM 2× gyorsabb.
1 millió sor × 100 feature: XGBoost 175s, LightGBM 52s, CatBoost 130s. Nagy adatokon a különbség drámai.
Az inference (predikciós) sebesség más kép. A CatBoost oblivious tree struktúrája 5–10× gyorsabb predikciót ad, ami produkciós környezetben kritikus lehet. Ha élő API mögött szolgálsz ki ML modellt, érdemes a CatBoost-ot is megfontolni a tréningidő rovására (én az utolsó projektnél emiatt cseréltem XGBoost-ról).
Hiperparaméter-hangolás Optunával
A három könyvtár közül az XGBoost igényli a legtöbb hangolást, a CatBoost a legkevesebbet. Az Optuna nevű Bayes-i optimalizációs könyvtár mindhárom esetén kiválóan működik. Itt egy minimális XGBoost hangolási példa:
A keresési térrel óvatosan: minden új hiperparaméter exponenciálisan növeli a futási időt. Indulj 5–6 kritikus paraméterrel (learning_rate, max_depth, n_estimators, subsample, colsample_bytree), és csak utána finomíts. Az Optuna pruning funkciójáról többet az Optuna hivatalos dokumentációjában találsz.
LightGBM és CatBoost esetén
A LightGBM-nél a num_leaves, min_data_in_leaf és feature_fraction a kritikus paraméterek. A CatBoost esetén a depth (általában 4–10), a learning_rate és az l2_leaf_reg a legfontosabb. A jó hír: a CatBoost alapértelmezett értékei már a legtöbb feladaton közel optimálisak.
Mikor melyik könyvtárat válaszd?
Az alábbi döntési útmutató a gyakorlati tapasztalatok összefoglalása. Ha bizonytalan vagy, kezdj az XGBoost-tal és onnan iteráljatok.
Válaszd az XGBoost-ot, ha: stabil, produkción jól bevált megoldás kell; sok kis-közepes adathalmazon dolgozol; Kaggle-versenyen indulsz; a meglévő ML stackedben (MLflow, SageMaker) már mindenki XGBoost-ot használ.
Válaszd a LightGBM-et, ha: az adathalmazod >500 000 soros; gyors iterációra van szükséged a feature engineering során; memóriahatékony megoldást keresel; sok numerikus változód van.
Válaszd a CatBoost-ot, ha: sok kategorikus változód van; nincs idő vagy szakértelem a hiperparaméter-hangolásra; gyors inference kell produkciós környezetben; kis adathalmazon dolgozol és overfittinget akarsz elkerülni.
Őszintén szólva sok adattudós (köztük én is) mindhárom modellt betanítja és ensemble-be vonja össze. Az átlagolt vagy stackelt predikciók gyakran 1–2 pontot ütnek hozzá az AUC-hoz. Ha az adatfeldolgozási fázis lassú, érdemes Polars-szal felgyorsítani. Erről bővebben a Polars LazyFrame útmutatóban írtunk.
Gyakran ismételt kérdések
Melyik a legjobb gradient boosting könyvtár Pythonban 2026-ban?
Nincs egyetlen "legjobb", a feladattól függ. Általános célra az XGBoost 3.0 a legbiztonságosabb választás, nagy adatokra a LightGBM 4.5, vegyes (kategorikus és numerikus) adatokra a CatBoost 1.2.5. Ha versenyzel vagy maximális pontosság kell, próbáld ki mindhármat és csinálj ensemble-t.
Lehet ezeket a könyvtárakat scikit-learn pipeline-ban használni?
Igen, mindhárom kínál scikit-learn kompatibilis API-t (XGBClassifier, LGBMClassifier, CatBoostClassifier). Ezek beilleszthetők Pipeline és GridSearchCV objektumokba ugyanúgy, mint bármely más sklearn estimator.
Felülmúlja-e a gradient boosting a neurális hálókat tabuláris adatokon?
2026-ban is a legtöbb tabuláris benchmarkon a gradient boosting alapú modellek nyernek. A deep learning csak nagyon nagy (>10 millió sor) és komplex feature-interakciókat tartalmazó adathalmazokon kezd versenyképes lenni a TabNet, FT-Transformer és hasonló architektúrákkal.
Hogyan kezelhetők a hiányzó értékek ezekben a könyvtárakban?
Mindhárom könyvtár natívan kezeli a NaN értékeket, nem kell előre imputálni. Az XGBoost és a LightGBM minden split döntésnél megtanulja, melyik ágra menjenek a hiányzó értékek. A CatBoost külön kategóriaként kezeli őket. Imputálás csak akkor érdemes, ha üzleti logikád indokolja.
Szükséges-e GPU a gyakorláshoz?
Nem. Mindhárom könyvtár hatékonyan fut többszálú CPU-n, és a legtöbb tabuláris feladatra a CPU is elegendő. GPU-t akkor érdemes használni, ha >1 millió sorral és >100 feature-rel dolgozol, vagy ha sok hiperparaméter-hangolási iterációra van szükséged.
Article changelog (1)
— SEO meta refreshed (title and description updated)
Marcus is an analytics engineer with 9 years in the dbt and warehouse-modeling trenches. He spent three years at dbt Labs as a senior solutions architect helping enterprise customers (a large US bank, two telecom carriers) untangle 4000-model projects, and before that ran the analytics platform at HelloFresh's North America org where he rebuilt the supply-chain mart on Snowflake + dbt.
His writing focuses on dbt project structure at scale, incremental model patterns that actually survive backfills, and the unglamorous work of column-level lineage and contract testing. He is a regular contributor to the dbt-utils package and co-maintains a small open-source linter for SQL style.
Marcus lives in Berlin, holds a master's in statistics from UNC Chapel Hill, and roasts his own coffee badly.
A Polars LazyFrame nem csak egy gyorsabb DataFrame – egy teljes lekérdezés-optimalizáló motor. Végigmegyünk a lazy execution működésén, a predicate és projection pushdownon, a streaming módon és a sink_parquet használatán valós kódpéldákkal Python 3.13-ban és Polars 1.x-ben.
A DuckDB 2026-ra a Python adatelemzés egyik alapkövévé vált a Pandas mellett. Megmutatom, hogyan futtathatsz SQL-lekérdezéseket közvetlenül Pandas DataFrame-eken, dolgozz RAM-on túli Parquet fájlokkal, és építs hibrid workflow-t, amely a DuckDB sebességét a Pandas rugalmasságával ötvözi.
Ismerd meg a scikit-learn Pipeline és ColumnTransformer használatát Pythonban. Gyakorlati útmutató kódpéldákkal az adatelőfeldolgozástól a hiperparaméter-hangolásig, cross-validation és production deploy tippekkel.