LightGBM
LightGBM is a fast gradient-boosting framework with leaf-wise trees and histogram splits. Learn how it works, how to tune it, and its place beside tabular foundation models.
Overview
LightGBM is a gradient-boosting framework that builds an ensemble of decision trees with a focus on speed and memory efficiency. It grows trees leaf-wise instead of level-wise, bins feature values into histograms before searching for splits, and adds two sampling and bundling tricks that make it very fast on tables with many rows or many columns. On large tabular datasets it is often the quickest of the major boosting libraries to train, while giving accuracy that is comparable to XGBoost and CatBoost.
The framework is a standard tool for prediction on spreadsheet-style data: churn, risk, demand, ranking, click prediction and similar problems. It supports classification, regression, ranking and custom objectives, handles missing values and categorical columns natively, and runs on CPU, GPU and distributed systems. In the world of tabular foundation models, such as TabPFN and TabICL, a tuned LightGBM model is one of the baselines that new methods are expected to match or beat. See /model/benchmarks for how such comparisons are made.
What it is
LightGBM stands for Light Gradient Boosting Machine. It is an open-source library implementing gradient-boosted decision trees (GBDT) with several system and algorithm optimizations.
Core identity
- A boosting framework: trees are added one at a time, each fitting the errors of the current ensemble.
- A histogram-based learner: feature values are bucketed into a small number of bins before training.
- A leaf-wise learner: it always splits the leaf that gives the largest loss reduction.
- A library with bindings for Python, R and a command-line interface, plus a scikit-learn style API.
What it offers in practice
- Objectives for binary, multiclass, regression (L2, L1, Huber, quantile, Poisson, Tweedie), and learning to rank (see Learning to rank).
- Native categorical feature support, without one-hot encoding.
- Native handling of missing values.
- Multiple boosting modes: standard
gbdt,dart(dropout trees), andrf(random-forest style). - Early stopping, custom metrics and callbacks.
- Parallel, GPU and distributed learning.
- Compatibility with SHAP for explanations and with Optuna for tuning.
The kind of data it suits
Structured tables where rows are examples and columns are features. It is especially good when the table has many rows (hundreds of thousands to many millions), many sparse columns, or both. It is not a tool for raw images, audio or free text unless features have been extracted first.
Where it came from
Decision trees and gradient boosting
- Decision trees offer simple, interpretable rules but overfit alone.
- Boosting combines many weak trees into a strong model. The 2001 paper "Greedy Function Approximation: A Gradient Boosting Machine" gave the general gradient-based recipe that modern libraries follow.
- Libraries such as XGBoost (introduced in the 2016 paper "XGBoost: A Scalable Tree Boosting System") made the approach fast and regularized.
The motivation for LightGBM
By the mid 2010s, datasets had grown to millions of rows and thousands of features. Classic GBDT implementations scanned all rows for every candidate split, which was costly in time and memory. The LightGBM paper, "LightGBM: A Highly Efficient Gradient Boosting Decision Tree" (2017), proposed two techniques to reduce that cost:
- GOSS (Gradient-based One-Side Sampling), which keeps the rows with large gradients and samples among the rest.
- EFB (Exclusive Feature Bundling), which merges sparse features that rarely take non-zero values together.
The library also relied on histogram-based split finding and leaf-wise tree growth, ideas that have since spread to other libraries.
The wider picture
- CatBoost (introduced in a 2018 paper on unbiased boosting with categorical features) took a different direction by focusing on categorical statistics and prediction shift.
- Neural approaches such as TabNet, SAINT and FT-Transformer were frequently compared against tuned GBDT models, including LightGBM.
- Pre-trained tabular models in the 2020s continued that tradition. See /model/research.
How it works
The analogy: a sculptor who works where the flaws are
Picture a sculptor with a rough block. A level-wise approach would chip a little off every part of the block, layer by layer, even where the shape is already fine. A leaf-wise approach looks at the whole statue, finds the single spot with the biggest flaw, and works there first. LightGBM is the second sculptor: at each step it picks the leaf where a split will reduce the error the most.
Step by step
- Bin the features. Before training, every numeric feature is converted into at most
max_bininteger bins (255 by default in many setups). This is done once. - Start with a constant prediction. Typically the mean target or the log-odds of the positive class.
- Compute gradients and hessians. For each row, calculate how the loss changes with the current prediction.
- Build histograms. For every feature, sum the gradients and hessians per bin. This replaces scanning raw values.
- Find the best split. Scan bin boundaries and compute the gain of each. Pick the best across all features.
- Split the best leaf. Among all current leaves, split the one with the highest gain (leaf-wise growth) until
num_leavesis reached. - Apply learning rate. Scale the new tree's leaf values by the learning rate and add them to the model.
- Repeat until the number of rounds is reached or early stopping fires.
Why histograms make it fast
Instead of sorting and scanning every distinct value of every feature, the algorithm works on at most a few hundred bins per feature. The cost of finding a split drops from the number of rows to the number of bins. Think of sorting people into age groups of 5 years instead of comparing exact birth dates.
The histogram subtraction trick
For any split, the histogram of one child can be computed by subtracting the other child's histogram from the parent's. LightGBM builds the histogram for the smaller child and obtains the larger one by subtraction. That roughly halves the work per split.
Leaf-wise growth
- In depth-wise growth, all leaves at one level are split before going to the next level.
- In leaf-wise growth, only the best leaf is split each time.
- For the same number of leaves, leaf-wise trees reach a lower loss.
- The risk is deep, unbalanced trees that overfit, especially on small data. The main controls are
num_leaves,max_depthandmin_data_in_leaf.
GOSS: focus on the hard rows
Rows with large gradients are those the model still gets wrong. GOSS keeps all of them, takes a random sample of the small-gradient rows, and up-weights that sample to keep the gradient estimate unbiased in expectation. Training uses fewer rows per tree while keeping the informative ones. It is like a teacher who reviews every wrong answer but only a sample of the right ones.
EFB: bundling sparse features
In wide, sparse tables (for example, one-hot encodings), many columns are rarely non-zero at the same time. EFB merges such mutually exclusive columns into one bundle by offsetting their bin ranges. The result has far fewer features to scan, with little loss of information.
Native categorical handling
Instead of one-hot encoding, LightGBM can sort categories by their accumulated gradient statistics and find the best partition of categories into two groups. This is more compact and often more accurate than one-hot encoding. High-cardinality columns need regularization (cat_smooth, min_data_per_group) to avoid overfitting.
Missing values
Missing values are put on one side or the other of each split, whichever gives a better gain. Zero and missing are treated separately when requested through options such as zero_as_missing.
Regularization and sampling
| Mechanism | Parameters | Effect |
|---|---|---|
| Leaf budget | num_leaves, max_depth |
Limits tree complexity |
| Minimum leaf size | min_data_in_leaf, min_sum_hessian_in_leaf |
Prevents tiny leaves |
| L1 and L2 penalties | lambda_l1, lambda_l2 |
Shrinks leaf values |
| Minimum gain | min_gain_to_split |
Prunes weak splits |
| Row sampling | bagging_fraction, bagging_freq |
Adds randomness |
| Feature sampling | feature_fraction |
Decorrelates trees |
| Learning rate | learning_rate |
Scales each tree's effect |
Boosting types
- gbdt: the standard approach.
- dart: randomly drops earlier trees during training, which can reduce overfitting but is slower and makes early stopping less direct.
- rf: builds an averaged ensemble in the style of a random forest.
Key concepts and terms
| Term | Plain meaning |
|---|---|
| GBDT | Gradient-boosted decision trees |
| Leaf-wise growth | Split the leaf with the best gain, not level by level |
| Histogram | Counts and gradient sums per bin of a feature |
max_bin |
Number of bins per feature |
num_leaves |
Maximum leaves in one tree, the main complexity control |
min_data_in_leaf |
Minimum rows allowed in a leaf |
learning_rate |
Shrinkage factor on each tree |
feature_fraction |
Fraction of features sampled per tree |
bagging_fraction |
Fraction of rows sampled per iteration |
| GOSS | Keep big-gradient rows, sample the rest |
| EFB | Merge exclusive sparse features |
categorical_feature |
Columns treated as categories natively |
is_unbalance, scale_pos_weight |
Class imbalance controls |
| Early stopping | Stop when validation score stops improving |
lambdarank |
Objective for ranking with listwise information |
| Dataset | LightGBM's internal binned data structure |
| Importance (split, gain) | Counts of splits or total gain per feature |
A worked example
A small numeric picture of leaf-wise growth
Imagine a single tree grown from a root with eight rows. Each leaf's potential gain is the improvement if split.
- Root has gain 10 if split. Split it into leaves A and B.
- Leaf A has potential gain 6, leaf B has potential gain 2. Level-wise growth would split both. Leaf-wise growth splits only A, the larger.
- A becomes A1 and A2. Now A1 has potential gain 3, A2 has 1, B still has 2.
- The next split goes to A1, then B, then A2. If
num_leavesis 4, growth stops after A1 is split, giving leaves A1a, A1b, A2 and B.
The final tree is lopsided, deep where the data is complex and shallow where it is simple. That is both the strength and the risk of the method.
A realistic Python example
import pandas as pd
import lightgbm as lgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score
df = pd.read_csv("transactions.csv")
y = df.pop("is_fraud")
# Mark text columns as category
cat_cols = list(df.select_dtypes("object").columns)
for c in cat_cols:
df[c] = df[c].astype("category")
X_train, X_valid, y_train, y_valid = train_test_split(
df, y, test_size=0.2, stratify=y, random_state=42
)
model = lgb.LGBMClassifier(
n_estimators=5000,
learning_rate=0.03,
num_leaves=63,
min_child_samples=40,
subsample=0.8,
subsample_freq=1,
colsample_bytree=0.8,
reg_lambda=1.0,
random_state=42,
)
model.fit(
X_train, y_train,
eval_set=[(X_valid, y_valid)],
eval_metric="auc",
callbacks=[lgb.early_stopping(150), lgb.log_evaluation(100)],
)
pred = model.predict_proba(X_valid)[:, 1]
print("AUC:", roc_auc_score(y_valid, pred))
print("Best iteration:", model.best_iteration_)
Using the native API
train_set = lgb.Dataset(X_train, label=y_train, categorical_feature=cat_cols)
valid_set = lgb.Dataset(X_valid, label=y_valid, reference=train_set)
params = {
"objective": "binary",
"metric": "auc",
"learning_rate": 0.03,
"num_leaves": 63,
"feature_fraction": 0.8,
"bagging_fraction": 0.8,
"bagging_freq": 1,
"verbose": -1,
}
booster = lgb.train(
params, train_set, num_boost_round=5000,
valid_sets=[valid_set],
callbacks=[lgb.early_stopping(150)],
)
Ranking example
# group sizes tell LightGBM which rows belong to the same query
ranker = lgb.LGBMRanker(objective="lambdarank", n_estimators=500)
ranker.fit(X_train, y_rel, group=group_sizes)
Inspecting the model
import shap
explainer = shap.TreeExplainer(model)
values = explainer.shap_values(X_valid)
lgb.plot_importance(model, importance_type="gain", max_num_features=15)
Gain-based importance is usually more informative than split counts, and SHAP gives per-prediction detail.
Strengths and limitations
Strengths
- Speed. Histograms, GOSS, EFB and subtraction make training fast on large data.
- Memory efficiency. Binned integers use far less memory than raw floats.
- High accuracy. Leaf-wise growth reaches low loss with fewer leaves.
- Native categoricals. No need to one-hot encode in many cases.
- Native missing value handling. No imputation step required.
- Scales out. Supports multi-threading, GPU and distributed training.
- Flexible. Many objectives, metrics and boosting modes.
- Good for ranking. Lambdarank is a common choice for search and recommendation.
- Works well with tuning tools. Small, well-understood parameter space.
Limitations
- Overfitting on small data. Leaf-wise trees can become too specific without strong
min_data_in_leafandnum_leaveslimits. - Sensitive to a few parameters.
num_leavesandmin_data_in_leafmatter a great deal. - Binning loses precision. Very fine distinctions between feature values can be lost, though it rarely matters.
- Categorical overfitting. High-cardinality categories need smoothing.
- No transfer between tables. Each dataset requires its own model.
- Piecewise-constant output. Cannot extrapolate beyond the target range seen in training.
- Not designed for unstructured data.
- Run-to-run differences. Multi-threading and sampling may yield slightly different results unless deterministic settings are used.
How it compares with alternatives
| Method | Growth and splitting | Best at | Watch out for |
|---|---|---|---|
| LightGBM | Leaf-wise, histogram | Large data, speed, wide sparse tables | Overfits small data if leaves unconstrained |
| XGBoost | Depth-wise by default, histogram option | Mature features, strong default behavior | Slightly slower on some large workloads |
| CatBoost | Symmetric (oblivious) trees, ordered boosting | Categorical data, good defaults | Heavier training for some data |
| Random forest | Independent deep trees, averaged | Robust, simple | Often less accurate than boosting |
| Scikit-learn histogram boosting | Histogram boosting in a general library | Convenience and integration | Fewer options |
| FT-Transformer | Transformer on feature tokens | Competitive on some data with tuning | Cost, data hunger |
| TabPFN | Pre-trained, in-context | Small tables with no training | Row and column limits |
| Isolation forest | Random isolating trees | Unsupervised outliers | No labels used |
On most tabular benchmarks the three main boosting libraries land close to each other after tuning. Pick by data shape and tooling comfort, then verify on your own validation split.
Role in tabular foundation models
The baseline that foundation models are measured against
A tabular foundation model is pre-trained across a huge number of tables so that it can adapt to a new table quickly, often by passing training rows as context rather than updating weights. LightGBM is a per-table learner: it begins from nothing for each new table and uses gradient steps to fit that table alone. For that reason a tuned LightGBM model is a standard point of comparison. Foundation-model papers and the benchmark pages at /model/benchmarks usually report accuracy and runtime against boosting libraries.
How each approach treats raw table properties
| Raw-table property | LightGBM | Tabular foundation model |
|---|---|---|
| Row and column structure | Columns are independent features, trees split on one column at a time | Rows and columns are modeled jointly, with attention across both (see Axial attention) |
| Mixed types | Numeric bins and native categoricals | Type-specific cell embeddings |
| Missing values | Learned side for missing at each split | Masked or flagged cells, with potential reconstruction through masked cell modeling |
| No column names | Uses column positions only | Can learn from values and statistics alone, and optionally use names |
| Small data | Needs regularization, may overfit | In-context learning is strong on small tables |
| Large data | Excellent scaling | Attention cost limits rows unless the design is efficient, as in TabICL |
| Pre-training | None | Synthetic and/or real tables |
Complementary strengths
- On very large tables, LightGBM trains in minutes and serves in microseconds per row, which is hard for a transformer to match.
- On tiny tables with a few hundred rows, an in-context model like TabPFN may beat a boosted model with no tuning at all.
- On tables with text columns, a model like TabSTAR reads the words, while LightGBM needs engineered text features.
Synthetic pre-training and tree-like priors
Some foundation models are pre-trained on synthetic tables sampled from random causal structures, with mixtures of thresholds, interactions and noise. Tree-like and step-like functions are well represented, which is part of why those models behave similarly to a tuned boosted ensemble on many real tables. A boosting library learns that structure from scratch for each table. A foundation model has seen many similar structures before, so it can reach a good solution after a single forward pass.
Imputation
LightGBM is often used as the per-column learner inside an iterative imputer: predict each column with gaps from the others, loop until values settle. Foundation models handle missingness in a different way, because they are trained to reconstruct masked cells, so imputation emerges from the same objective used in pre-training. See Imputation networks and Masked cell modeling. A good check is to compare the two on the same masked cells with the same error metric.
Anomaly detection
LightGBM is supervised, so it needs labels for fraud, defects or faults. When labels are scarce, unsupervised tools such as Isolation forest are more common. Foundation models can assign a surprise score to a row, or to a single cell, given the rest of the table, which gives a label-free detector. A good pattern is to use unsupervised scores to surface candidates, then train LightGBM once labels have accumulated. See Anomaly detection.
Semantic and sector classification
LightGBM can classify a record, a column or a whole table into categories such as business sector if the right features are supplied, for example counts of tokens, column statistics and encoded names. Foundation models that jointly embed column names and values can learn this more directly and generalize to unseen label sets with few examples. See Semantic sector heads.
Continual learning
LightGBM can continue training from an existing model (init_model) by adding new trees. That makes it simple to refresh a model with new data, but it does not shield older patterns from being overridden, and tree count grows over time. Neural foundation models handle new knowledge with regularization methods such as EWC or with experience replay. Read more about the design choices in /model/architecture.
A sensible team practice
- Always run a tuned LightGBM baseline on the same split as any foundation model.
- Report accuracy, calibration, training time and inference time together.
- Consider blending: errors of boosted trees and pre-trained models are often not the same.
Practical guidance and best practices
A workflow that works
- Define the task and metric. Choose a split that mirrors production, such as time-based for forecasting.
- Fit a baseline with default parameters and early stopping.
- Look at importance and SHAP to find leaks or odd features.
- Tune
num_leaves,min_child_samples,learning_rate, subsampling and regularization with a search library such as Optuna or Ray Tune. - Fix the number of rounds from early stopping, then retrain on all training data.
- Evaluate once on the untouched test set.
- Log parameters and metrics with a tracker such as MLflow.
Starting parameter ranges
| Parameter | Suggested range | Notes |
|---|---|---|
learning_rate |
0.01 to 0.1 | Lower with more rounds |
num_leaves |
15 to 255 | Keep below roughly 2 to the power of max_depth |
max_depth |
-1 or 4 to 12 | A cap is a safety net for small data |
min_child_samples |
10 to 200 | Higher for noisy or small data |
feature_fraction |
0.5 to 1.0 | Lower decorrelates trees |
bagging_fraction |
0.5 to 1.0 | Use with bagging_freq greater than 0 |
lambda_l2 |
0 to 50 | Increase if overfitting |
max_bin |
63 to 511 | Smaller is faster |
cat_smooth, min_data_per_group |
tune | For high-cardinality categories |
Tuning order
- Set a moderate learning rate and use early stopping.
- Tune
num_leavesandmin_child_samplestogether. - Tune feature and row sampling.
- Tune L1 and L2 regularization.
- Lower the learning rate at the end and let the model use more trees.
Class imbalance
- Use
scale_pos_weightoris_unbalance, or sample weights. - Monitor AUC-PR or log loss.
- Tune the decision threshold on validation data.
- Be careful: heavy reweighting can distort probabilities, so calibrate afterward if you need real probabilities.
Categorical features
- Convert to the pandas
categorydtype or passcategorical_feature. - Use integer-coded categories starting at zero if you encode manually.
- Strengthen smoothing for categories with many levels.
- Remember to handle unseen levels at prediction time.
Speed and memory
- Build the
Datasetonce and reuse it across tuning trials withfree_raw_data=Falsewhen needed. - Reduce
max_binfor large data. - Use
force_col_wiseorforce_row_wiseif the automatic choice is slow. - Use a GPU build for very large data, if it is available.
Diagnosing problems
| Symptom | Likely cause | What to try |
|---|---|---|
| Training score far above validation | Too complex | Fewer leaves, higher min_child_samples, more regularization |
| Both scores poor and flat | Too simple or weak features | More leaves, lower min_child_samples, better features |
| Validation score noisy between runs | Small validation set | Use cross-validation and several seeds |
| Validation great, production poor | Leakage or drift | Audit features, split by time |
| Training very slow | Many bins or wide data | Lower max_bin, enable EFB defaults, use a GPU build |
| Memory error | Large raw frame | Build the Dataset from a compact dtype, delete the raw frame |
| Categorical column overfits | Too many levels | Raise cat_smooth, group rare levels |
Cross-validation tips
- Use stratified folds for classification and grouped folds when rows from one entity must stay together.
- Average the best iteration across folds to pick the final round count.
- Keep preprocessing inside each fold to avoid leakage.
Determinism
- Set
seedor the individual seeds, anddeterministic=True. - Fix the number of threads for exact repeats.
- Record the library version.
Common mistakes
- Raising
num_leaveswithout raisingmin_child_samples. The model then creates tiny, noisy leaves. - Using default settings on tiny datasets. Leaf-wise growth overfits without limits.
- Not marking categorical columns. Integer-coded categories are then treated as ordered numbers.
- Leaking the target through encoding. Target encoding must be computed within folds.
- Early stopping on the test set. Use a separate validation set.
- Random splits for time-dependent data. Use forward-chaining splits.
- Evaluating accuracy on imbalanced data. Use AUC-PR, log loss or recall at a fixed precision.
- Reading split-count importance as truth. It favors features with many thresholds. Use gain, permutation importance or SHAP.
- Comparing against a foundation model with default LightGBM. A fair comparison tunes both.
- Ignoring version differences. Defaults and behavior change over releases.
- Tuning on too few trials. Five or ten trials rarely find a good region. Use a proper search with at least dozens.
- Mixing up
num_leavesandmax_depth. A depth of 6 allows up to 64 leaves, so anum_leavesof 255 with depth 6 is meaningless. - Over-trusting a single seed. Average over several seeds for small differences.
- Skipping a simple baseline. A linear model shows whether boosting adds real value.
- Using DART with early stopping and expecting clean curves. Dropout changes earlier trees, so stopping is less reliable.
Frequently asked questions
What is LightGBM used for?
LightGBM is used to predict outcomes from tables, including classification, regression and ranking. Typical uses are churn and fraud models, demand and price forecasts, credit scoring, click-through prediction and search ranking. It is chosen when data is large, when training speed matters, or when many sparse features are involved.
Why is LightGBM faster than other boosting libraries?
It bins features into histograms so split search scans a few hundred bins instead of every row. It also uses histogram subtraction to get one child's histogram for free, samples rows with GOSS, and bundles sparse columns with EFB. Together these cut computation and memory without large accuracy loss.
What does leaf-wise growth mean?
It means the tree always splits the leaf that offers the largest improvement, rather than splitting every leaf on a level. This produces deeper, more uneven trees that reach a lower loss with the same number of leaves. The trade-off is a higher chance of overfitting on small datasets, which is why leaf and sample limits matter.
Which parameter matters most in LightGBM?
The number of leaves is usually the most influential setting, because it directly controls tree complexity. It works together with the minimum number of samples per leaf and the learning rate. Tune these three first, then add subsampling and regularization.
Does LightGBM need one-hot encoding?
No. It can treat a column as categorical and find the best way to split categories into two groups using gradient statistics. This is typically more compact and accurate than one-hot encoding, but high-cardinality columns need smoothing to avoid overfitting.
How does LightGBM handle missing values?
At each split it learns which side missing values should go to by checking which choice improves the objective more. You do not need to impute, and missingness itself can become a useful signal. If zeros mean missing in your data, an option exists to treat them that way.
Is LightGBM better than XGBoost?
Neither is always better. LightGBM is often faster on large data, while XGBoost is mature and gives very strong results with careful tuning. After tuning, accuracy is usually close, so choose by speed, features, team familiarity and what your validation data shows.
Can LightGBM overfit, and how do I prevent it?
Yes, especially on small data. Reduce the number of leaves, raise the minimum samples per leaf, lower the learning rate, use row and feature subsampling, add L2 regularization, and use early stopping on a clean validation set.
How does LightGBM relate to tabular foundation models?
LightGBM is a per-dataset learner, while a tabular foundation model is pre-trained across many tables and can predict on a new table in context. LightGBM is the baseline those models are compared with. In practice the two complement each other, with boosting strongest on large tables and foundation models strong on small ones.
Can I update a LightGBM model with new data?
You can continue training from an existing model by adding more trees on new data. That is simple and cheap, but it can drift away from earlier behavior. For many production systems it is safer to retrain periodically on a fresh window and compare against the old model.
Glossary
- Boosting: building a model from many weak learners added in sequence.
- GBDT: gradient-boosted decision trees.
- Leaf-wise growth: expanding the leaf with the best gain first.
- Histogram: binned counts and gradient sums used to find splits quickly.
- GOSS: a sampling method that keeps large-gradient rows.
- EFB: a method that merges exclusive sparse features.
- Learning rate: a scale factor applied to each tree.
- Regularization: a penalty that discourages complexity.
- Early stopping: stopping when a validation metric stops improving.
- Categorical feature: a column whose values are labels without order.
- Lambdarank: an objective for learning to order items within a query.
- SHAP: a method to attribute a prediction to features.
- In-context learning: predicting from examples placed in the model input.
- Tabular foundation model: a network pre-trained on many tables.
- Overfitting: fitting noise so that new data is predicted poorly.
Summary
LightGBM is a fast, memory-efficient gradient-boosting framework. It combines histogram-based split search, leaf-wise tree growth, gradient-based row sampling and sparse feature bundling to train accurate tree ensembles on large tables quickly. It handles missing values and categorical columns natively and supports classification, regression and ranking.
Its main risks are overfitting on small data and sensitivity to leaf-related settings, and like every boosting library it learns each table from scratch. Tabular foundation models such as TabPFN and TabICL offer a pre-trained alternative, strongest on small tables, with LightGBM remaining the baseline and often the winner on very large ones. Use both on the same splits, tune fairly, and pick or blend by accuracy, latency and cost. For related reading see XGBoost, CatBoost, Random forest, /model/architecture and /model/research.
Related
It belongs to Classical ML in my stack, under Foundation models and applied ML. Others in the same group: