0Pricing
Learn AI with Python · Lezione

LightGBM e CatBoost

Perché LightGBM è più veloce, suddivisione basata su istogrammi e CatBoost per le feature categoriche.

LightGBM e CatBoost è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.

Oltre XGBoost

XGBoost è potente, ma può essere lento su dataset molto grandi. LightGBM e CatBoost sono librerie di gradient boosting più recenti, che migliorano la velocità e gestiscono i dati categorici in modo più efficace.

Suddivisioni basate su istogrammi

LightGBM raggruppa le feature continue in intervalli discreti (un istogramma) prima di individuare le suddivisioni. Questo rende molto più veloce la ricerca delle suddivisioni e utilizza meno memoria rispetto al metodo esatto.

Crescita degli alberi per foglia

A differenza della crescita per livelli, LightGBM fa crescere gli alberi per foglia: divide per prima la foglia che offre la maggiore riduzione della loss. In questo modo converge più rapidamente, ma può incorrere nell'overfitting; per controllarlo si utilizza num_leaves.

LGBMClassifier e num_leaves

num_leaves è il principale parametro di complessità di LightGBM. Valori più grandi aumentano la precisione, ma comportano un rischio maggiore di overfitting. Una regola pratica consiste nel mantenere 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))

I vantaggi di LightGBM in termini di velocità

Grazie al binning basato su istogrammi, alla crescita per foglia e al sottocampionamento delle feature e dei dati, LightGBM si addestra sensibilmente più velocemente di XGBoost sui dataset grandi, spesso con una precisione comparabile.

from lightgbm import LGBMClassifier

model = LGBMClassifier(
    n_estimators=1000,
    num_leaves=63,
    learning_rate=0.03,
    feature_fraction=0.8,
    bagging_fraction=0.8,
)

Early stopping in LightGBM

LightGBM supporta l'early stopping tramite callback. Passi un set di valutazione e una callback early_stopping per interrompere l'addestramento quando la metrica raggiunge un plateau.

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 e le feature categoriche

CatBoost eccelle con i dati categorici. È possibile passare direttamente le colonne categoriche grezze tramite cat_features, senza alcuna codifica manuale.

Internamente utilizza statistiche target ordinate per evitare il leakage del target.

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])

Perché l'assenza di codifica è efficace

Con altre librerie è necessario codificare le categorie con il one-hot encoding o il label encoding, operazione che può far esplodere la dimensionalità o causare il leakage del target. CatBoost gestisce tutto internamente tramite il boosting ordinato, riducendo l'overfitting sulle feature categoriche.

Parametri principali di CatBoost

CatBoost utilizza iterations (come n_estimators), learning_rate e depth (costruisce alberi simmetrici). Spesso offre buoni risultati con un'ottimizzazione minima.

from catboost import CatBoostClassifier

model = CatBoostClassifier(
    iterations=1000,
    learning_rate=0.03,
    depth=8,
    l2_leaf_reg=3.0,
    verbose=100,
)

Confronto della velocità

Indicazioni generali:

  • LightGBM è generalmente il più veloce sui dataset numerici grandi
  • CatBoost è la scelta migliore quando sono presenti molte feature categoriche e richiede meno ottimizzazione
  • XGBoost è maturo, robusto e offre ottimi valori predefiniti

Confronti tutti e tre sui propri dati: i risultati variano in base al problema.

Scegliere una libreria

Se dispone di molti dati categorici, inizi con CatBoost. Per tabelle numeriche molto grandi e quando la velocità è importante, scelga LightGBM. Per una baseline collaudata, scelga XGBoost. Tutti e tre utilizzano il gradient boosting internamente, quindi i concetti sono trasferibili.

Verifica rapida

Verifichi le Sue conoscenze sulle librerie di gradient boosting.

Riepilogo

Riepilogo: LightGBM utilizza una crescita per istogrammi e per foglia, controllata da num_leaves, per offrire velocità sui dati numerici di grandi dimensioni. CatBoost gestisce nativamente le feature categoriche tramite cat_features, senza codifica. Entrambi, insieme a XGBoost, sono varianti del gradient boosting. Esegua un benchmark per scegliere: CatBoost per i dati categorici, LightGBM per la velocità.

Domande Frequenti

La lezione «LightGBM e CatBoost» è gratuita?

Sì — il testo completo di «LightGBM e CatBoost» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.

Cosa imparerò in «LightGBM e CatBoost»?

Perché LightGBM è più veloce, suddivisione basata su istogrammi e CatBoost per le feature categoriche. Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Learn AI with Python?

Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «LightGBM e CatBoost»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?

Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Alberi decisionali: teoria e implementazione
  2. Random forest e bagging
  3. Gradient boosting: GBM e XGBoost
  4. LightGBM e CatBoost
← Torna a Learn AI with Python