Условие
Почему на tabular данных GBDT (XGBoost / CatBoost) почти всегда обыгрывает MLP и сложные нейросети?
Решение
Подход
Причины (Grinsztajn et al., 2022 — «Why do tree-based models still outperform DL on tabular data?»):
-
Inductive bias: tree-based models делают axis-aligned splits. На табличных фичи имеют разные масштабы и природу (категории, числа, бинарные) — splits идеально подходят. Нейросети делают smooth boundaries, что лишнее для discontinuous patterns.
-
Не-гладкие зависимости: бизнес-данные часто имеют резкие пороги (возраст 18, доход 50k). Деревья это ловят за один split, MLP требует много нейронов.
-
Uninformative features: GBDT их не выберет; нейросеть тратит capacity на overfit на них.
-
Heterogeneous features: разные масштабы, типы. Деревья invariant к monotonic трансформациям.
-
Heavy-tail в фичах: outliers ломают gradient flow в NN; деревья режут.
-
Малая выборка: NN требует много данных, деревья работают с n=1000.
-
Robustness: scaling не нужен, NaN handling «из коробки», categorical native.
Когда DL выигрывает
- Очень большие выборки (>1M).
- Сложные многошаговые взаимодействия (изображения, последовательности).
- Multimodal: tabular + text + image → NN с эмбеддингами.
- Когда есть structure (например, geo).
Гибрид: tabular DL подходы
- TabNet: attention + sparse feature selection.
- FT-Transformer: tokenize features → transformer.
- NODE / DANets: «дерево-подобные» нейросети.
- DeepGBM: ensemble GBDT + DNN.
Обычно паритет с GBDT, редко лучше — и за счёт огромного train time.
Демонстрация
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.neural_network import MLPClassifier
from sklearn.datasets import fetch_openml
from sklearn.metrics import roc_auc_score
from sklearn.model_selection import train_test_split
X, y = fetch_openml('credit-g', as_frame=False, return_X_y=True)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.3, random_state=42)
gb = GradientBoostingClassifier().fit(X_tr, y_tr)
mlp = MLPClassifier(hidden_layer_sizes=(128,64), max_iter=200).fit(X_tr, y_tr)
# Обычно GB AUC > MLP AUC на 3-7%Подводные камни
- «Я попробовал MLP, не зашёл — DL не работает»: возможно, не нормализованы фичи, не tuned learning rate. NN требует больше работы по подготовке.
- «Tabular Transformer лучше CatBoost» в paper — на их benchmark + их tuning budget. Воспроизведите.
- На multimodal данных (tabular + text) DL может быть единственным выбором.
- Бизнес-смежные модели: GBDT интерпретируем через SHAP; DL — сложнее.
- Production latency: GBDT 0.5ms vs MLP 5ms vs Transformer 50ms.
Эталонный ответ
GBDT выигрывает на tabular из-за: axis-aligned splits подходят к не-гладким зависимостям; invariance к scaling и monotonic трансформациям; robust к uninformative и heavy-tail фичам; работает на малой выборке. DL побеждает только на multimodal или огромных датасетах (>1M). Гибриды (TabNet, FT-Transformer) обычно паритет с GBDT при многократно бóльшем train time.