Özer Cem KELAHMETKELAHMET
Tools · Classical ML

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), and rf (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

  1. Bin the features. Before training, every numeric feature is converted into at most max_bin integer bins (255 by default in many setups). This is done once.
  2. Start with a constant prediction. Typically the mean target or the log-odds of the positive class.
  3. Compute gradients and hessians. For each row, calculate how the loss changes with the current prediction.
  4. Build histograms. For every feature, sum the gradients and hessians per bin. This replaces scanning raw values.
  5. Find the best split. Scan bin boundaries and compute the gain of each. Pick the best across all features.
  6. Split the best leaf. Among all current leaves, split the one with the highest gain (leaf-wise growth) until num_leaves is reached.
  7. Apply learning rate. Scale the new tree's leaf values by the learning rate and add them to the model.
  8. 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_depth and min_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.

  1. Root has gain 10 if split. Split it into leaves A and B.
  2. 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.
  3. A becomes A1 and A2. Now A1 has potential gain 3, A2 has 1, B still has 2.
  4. The next split goes to A1, then B, then A2. If num_leaves is 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

python
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

python
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

python
# 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

python
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_leaf and num_leaves limits.
  • Sensitive to a few parameters. num_leaves and min_data_in_leaf matter 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

  1. Define the task and metric. Choose a split that mirrors production, such as time-based for forecasting.
  2. Fit a baseline with default parameters and early stopping.
  3. Look at importance and SHAP to find leaks or odd features.
  4. Tune num_leaves, min_child_samples, learning_rate, subsampling and regularization with a search library such as Optuna or Ray Tune.
  5. Fix the number of rounds from early stopping, then retrain on all training data.
  6. Evaluate once on the untouched test set.
  7. 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

  1. Set a moderate learning rate and use early stopping.
  2. Tune num_leaves and min_child_samples together.
  3. Tune feature and row sampling.
  4. Tune L1 and L2 regularization.
  5. Lower the learning rate at the end and let the model use more trees.

Class imbalance

  • Use scale_pos_weight or is_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 category dtype or pass categorical_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 Dataset once and reuse it across tuning trials with free_raw_data=False when needed.
  • Reduce max_bin for large data.
  • Use force_col_wise or force_row_wise if 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 seed or the individual seeds, and deterministic=True.
  • Fix the number of threads for exact repeats.
  • Record the library version.

Common mistakes

  • Raising num_leaves without raising min_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_leaves and max_depth. A depth of 6 allows up to 64 leaves, so a num_leaves of 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.

It belongs to Classical ML in my stack, under Foundation models and applied ML. Others in the same group:

Type to search.
    ↑↓ navigate↵ open