The Nature of Tabular Data
정형 데이터의 본질
GBM(XGBoost/LightGBM)이 Kaggle과 현업에서 여전히 지배적인 이유는 정형 데이터의 이질성(heterogeneity)과 희소한 레이블에 딥러닝의 귀납적 편향이 맞지 않기 때문이다 — 단, 고차원 임베딩 입력이나 시계열 구조가 있을 때는 딥러닝이 이긴다.
Overview
2016년 Kaggle 우승자 인터뷰를 분석하면 놀라운 패턴이 보인다. 이미지/텍스트 대회를 제외한 정형 데이터 대회에서, 우승 솔루션의 80% 이상이 XGBoost, LightGBM, 또는 그 앙상블이다. 2024년 현재도 이 패턴은 크게 달라지지 않았다. 딥러닝이 이미지와 텍스트를 완전히 점령했음에도, 정형 데이터만큼은 GBM 계열이 여전히 지배적이다. 왜인가?
이 질문에 대한 답은 정형 데이터의 본질적 특성에 있다. 정형 데이터는 세 가지 면에서 딥러닝의 귀납적 편향과 충돌한다: (1) 이질성(Heterogeneity) — 각 피처가 완전히 다른 스케일과 분포를 가진다.
(2) 희소성(Sparsity) — 샘플 수가 수천~수십만 수준인 경우가 많아 딥러닝의 '많은 데이터' 요구에 부응하지 못한다.
(3) 비연속성(Non-smoothness) — 연속적인 신경망 함수가 적합하지 않은 불연속적 결정 경계가 흔하다.
그러나 '정형 데이터 = 항상 GBM'이라는 단순화는 위험하다. 임베딩이 입력으로 들어오는 경우, 수백만 샘플을 가진 경우, 또는 엔드투엔드 학습이 중요한 경우에는 딥러닝이 GBM을 능가한다. AI 엔지니어의 역할은 이 경계를 정확히 파악하고 올바른 선택을 내리는 것이다.
- 정형 데이터가 딥러닝에 저항하는 세 가지 근본 이유를 설명할 수 있다
- GBM 삼형제(XGBoost, LightGBM, CatBoost)의 핵심 차이를 실무 맥락에서 선택할 수 있다
- 피처 엔지니어링을 '데이터에 귀납적 편향을 수동으로 주입하는 행위'로 이해한다
- 딥러닝이 정형 데이터에서 우위를 점하는 구체적 조건을 파악할 수 있다
Sections
왜 딥러닝은 정형 데이터에서 고전하는가
"Why do tree-based models still outperform deep learning on tabular data?" — 이 제목의 NeurIPS 2022 논문은 19개 벤치마크에서 XGBoost와 Gradient Boosting이 최신 딥러닝 아키텍처를 여전히 이긴다는 것을 체계적으로 보여주었다. 그 이유는 세 가지다.
이질성(Heterogeneity): 정형 데이터의 피처들은 근본적으로 다르다. 나이(0-120), 연소득(0-10억), 도시(100개 범주), 직업(50개 범주)이 한 행에 공존한다. 신경망은 이 피처들을 동일한 공간에서 처리하기 위해 표준화와 임베딩이 필요하지만, 이 과정에서 피처의 본질적 의미가 손실될 수 있다. 트리 기반 방법은 각 피처를 독립적으로 분할 기준으로 사용하므로 이 문제를 자연스럽게 회피한다.
비정규성(Non-regularities in structure): 이미지는 인접 픽셀이 상관되는 공간적 규칙성이 있다. 텍스트는 단어 순서가 의미를 가지는 시퀀셜 규칙성이 있다. 하지만 정형 데이터의 피처들은 이런 구조가 없다. 열 순서를 바꿔도 정보는 동일하다. 딥러닝의 강력함 — 레이어를 통한 계층적 표현 학습 — 이 여기서는 불필요하거나 오히려 해롭다.
소규모 데이터(Limited data): 정형 데이터는 레이블 획득이 상대적으로 쉬워(비전/비디오보다는) 보이지만, 실제로는 수천~수만 행이 일반적이다. 딥러닝은 수백만 샘플에서 진가를 발휘한다. GBM은 수천 샘플에서도 과적합 없이 강력한 성능을 낸다.
GBM 삼형제: XGBoost, LightGBM, CatBoost
세 라이브러리는 모두 Gradient Boosted Decision Tree의 구현이지만, 핵심 설계 결정이 다르며 이것이 실무 선택에 영향을 미친다.
| 특성 | XGBoost | LightGBM | CatBoost |
|---|---|---|---|
| 트리 성장 방식 | Level-wise | Leaf-wise | Symmetric |
| 범주형 처리 | 수동 인코딩 필요 | 일부 내장 | 최강의 내장 지원 |
| 속도 (대규모) | 보통 | 가장 빠름 | 보통 |
| 작은 데이터 | 좋음 | 과적합 위험 | 좋음 |
| 시계열 리키지 | 수동 방지 | 수동 방지 | 내장 Ordered Boosting |
실무 선택 가이드:
범주형 피처가 많고 레이블 인코딩이 번거롭다면 → CatBoost. 범주형 피처를 통계적으로 가장 정교하게 처리한다. 수백만 행 이상의 대규모 데이터셋이라면 → LightGBM. Leaf-wise 분할과 GOSS(Gradient-based One-Side Sampling) 덕분에 3-5배 빠르다. Kaggle 베이스라인을 빠르게 세우거나, 재현성을 중시한다면 → XGBoost. 문서가 가장 풍부하고 커뮤니티가 넓다.
피처 엔지니어링: 귀납적 편향의 수동 주입
피처 엔지니어링을 '데이터 전처리'로 이해하면 본질을 놓친다. 더 정확한 프레임은 '모델이 학습할 수 없는 귀납적 편향을 수동으로 주입하는 행위'다.
예를 들어 대출 심사 모델을 만든다고 하자. 신청일과 출생일 피처가 있을 때, 이 두 열을 그대로 모델에 넣는 것보다 신청시_나이 = (신청일 - 출생일).days / 365를 계산해 넣는 것이 낫다. 이유는 두 가지다: 절대 날짜보다 나이가 신용 위험과 더 직접적인 관계를 가지고(도메인 지식 주입), 모델이 두 날짜 열에서 나이를 스스로 학습하는 것보다 이 관계를 직접 알려주는 것이 샘플 효율이 높다.
효과적인 피처 엔지니어링 패턴:
- 상호작용 피처(Interaction Features):
가격 / 면적→ 단위 면적당 가격 - 집계 피처(Aggregation Features): 고객별 최근 30일 평균 구매액
- 라그 피처(Lag Features): 시계열에서 t-1, t-7, t-30 시점의 값
- 타겟 인코딩(Target Encoding): 범주형 피처를 타겟 평균으로 대체 (주의: 리키지!)
- 도메인 특화 피처: 금융에서 RSI, 의료에서 BMI 등
딥러닝은 이런 상호작용을 자동으로 학습할 수 있다는 주장이 있지만, 데이터가 충분하지 않으면 이 이점이 실현되지 않는다. 결국 피처 엔지니어링은 '도메인 지식'과 '통계적 사고'가 결합된 인간의 독자적 기여 영역이다.
딥러닝이 정형 데이터에서 이기는 조건
GBM이 기본값이지만, 딥러닝이 명확히 우위인 시나리오가 있다. AI 엔지니어는 이 경계를 알아야 한다.
조건 1: 임베딩 입력이 있을 때. 텍스트 임베딩(512차원), 이미지 임베딩(2048차원) 등 고차원 밀집 벡터가 피처로 포함될 때, GBM의 트리 분할은 이 공간에서 비효율적이다. 신경망이 이 임베딩 공간에서 훨씬 자연스럽게 학습한다.
조건 2: 엔드투엔드 학습이 중요할 때. 추천 시스템에서 사용자 ID와 상품 ID를 임베딩으로 학습하면서 CTR을 예측하는 경우, 임베딩 학습과 예측이 동시에 최적화되어야 한다. GBM은 이 엔드투엔드 최적화를 지원하지 않는다.
조건 3: 수백만 행 이상 + 단순한 피처 구조. 데이터가 충분히 많고 피처 이질성이 낮을 때는 딥러닝의 장점이 실현되기 시작한다.
조건 4: 시계열 + 외부 컨텍스트 결합. LSTM, Transformer 기반 시계열 모델은 외부 컨텍스트(날씨, 이벤트)를 자연스럽게 통합할 수 있다.
TabNet, FT-Transformer: 순수 정형 데이터를 위해 설계된 딥러닝 아키텍처들. TabNet은 attention으로 피처 선택을 학습하고, FT-Transformer는 피처를 임베딩으로 변환해 Transformer에 입력한다. 성능은 GBM과 비슷하거나 약간 낮지만, 임베딩 피처와 자연스럽게 결합하거나 엔드투엔드 학습이 필요할 때 유용하다.
GBM과 딥러닝의 차이를 요리로 비유해보자. GBM은 경험 많은 요리사와 같다. 재료들(피처들)을 하나씩 확인하며 '이 재료가 이 수준이면 단맛이 강하고, 저 재료가 저 수준이면 쓴맛이 나니, 이 조합이면 결과는 이럴 것'이라고 규칙을 명시적으로 세운다. 요리사가 경험에서 쌓아온 if-then 규칙이 의사결정 트리이고, 여러 요리사의 판단을 앙상블하는 것이 Gradient Boosting이다.
딥러닝은 첨단 화학 분석기와 같다. 원재료를 갈아서 분자 단위로 분해하고(임베딩), 수천 개의 센서로 성분 간 상호작용을 분석한다(레이어). 완전히 새로운 맛 조합도 발견할 수 있다. 그러나 단 5가지 재료만 있는 간단한 요리라면, 경험 많은 요리사가 훨씬 빠르고 정확하다. 고가의 분석기가 오히려 노이즈를 찾아내 오답을 낸다.
피처 엔지니어링은 요리사가 '재료를 미리 손질'하는 행위다. 통마늘을 그냥 넣는 것보다(원시 데이터), 다져서 넣으면(변환된 피처) 맛이 더 잘 배는 것처럼 — 도메인 지식으로 변환된 피처는 모델이 패턴을 더 쉽게 학습하게 한다.
동일 데이터셋에서 XGBoost와 간단한 MLP의 성능을 비교하고, 피처 엔지니어링이 GBM 성능에 미치는 영향을 확인해보자.
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import cross_val_score
from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
import xgboost as xgb
# 중간 크기의 이질적인 정형 데이터 시뮬레이션
# n_informative=10: 실제 유용한 피처 10개, 나머지는 노이즈
X, y = make_classification(
n_samples=5000,
n_features=30,
n_informative=10,
n_redundant=5,
random_state=42
)
# 모델 1: XGBoost (기본 하이퍼파라미터)
xgb_model = xgb.XGBClassifier(
n_estimators=300,
max_depth=6,
learning_rate=0.05,
subsample=0.8,
random_state=42,
eval_metric='logloss',
verbosity=0
)
# 모델 2: MLP (표준화 필수)
mlp_pipeline = Pipeline([
('scaler', StandardScaler()),
('mlp', MLPClassifier(
hidden_layer_sizes=(256, 128, 64),
max_iter=500,
random_state=42
))
])
# 5-fold CV
xgb_scores = cross_val_score(xgb_model, X, y, cv=5, scoring='roc_auc')
mlp_scores = cross_val_score(mlp_pipeline, X, y, cv=5, scoring='roc_auc')
print(f"XGBoost AUC: {xgb_scores.mean():.4f} ± {xgb_scores.std():.4f}")
print(f"MLP AUC: {mlp_scores.mean():.4f} ± {mlp_scores.std():.4f}") 5000행, 30피처의 이질적 데이터에서 XGBoost는 일반적으로 MLP보다 AUC가 높거나 동등하다. n_samples를 500_000으로 늘리면 MLP가 따라잡기 시작한다. StandardScaler가 없는 MLP는 수렴조차 안 하는 경우가 많아 pipeline으로 묶는 것이 중요하다. XGBoost는 스케일링 없이도 안정적으로 동작한다 — 이것 자체가 이질적 정형 데이터에 대한 GBM의 장점 중 하나다.
✅ 시니어가 보는 것
- GBM vs 딥러닝 선택의 근거를 데이터 특성(크기, 이질성, 구조)으로 설명하는 능력
- 피처 누수(data leakage)를 사전에 식별하는 감각 — 특히 타겟 인코딩과 시계열
- LightGBM의 Leaf-wise 분할이 소규모 데이터에서 과적합을 일으키는 메커니즘 이해
- 임베딩 피처 존재 여부에 따른 아키텍처 전환 판단
⚠️ 레드 플래그
- 항상 XGBoost 기본값을 쓰고 하이퍼파라미터를 조정하지 않음 — 데이터 크기와 특성을 고려하지 않는 신호
- 타겟 인코딩 시 validation set 리키지를 인식하지 못함
- 정형 데이터에 딥러닝을 쓸 때 StandardScaler 없이 직접 적용
🎤 예상 인터뷰 질문
- 고객 이탈 예측 모델에서 '고객의 마지막 30일 평균 구매 금액' 피처를 계산할 때, train/validation split과 관련해 어떤 주의사항이 있습니까?
- CatBoost의 Ordered Boosting이 무엇이고, 어떤 상황에서 중요합니까?
- 임베딩 레이어가 포함된 추천 모델을 정형 데이터와 결합할 때 XGBoost 대신 신경망을 선택하는 이유를 설명해보세요.
Key Takeaways
GBM은 기본값이다
정형 데이터에서 GBM 계열(XGBoost/LightGBM/CatBoost)은 대부분의 경우 딥러닝보다 낫다. 반증이 없으면 여기서 출발하라.
이질성이 핵심이다
정형 데이터가 딥러닝에 저항하는 근본 이유는 피처의 이질성이다 — 트리 분할은 이것을 자연스럽게 처리한다.
범주형이 많으면 CatBoost
수동 인코딩 없이 범주형을 통계적으로 처리하는 CatBoost의 Ordered Target Encoding은 실무에서 강력하다.
대규모 + 속도는 LightGBM
수백만 행이 넘으면 LightGBM의 Leaf-wise 분할과 GOSS가 3-5배 속도 우위를 낸다.
임베딩 입력은 전환점
텍스트/이미지 임베딩이 피처로 들어오는 순간, 딥러닝으로의 전환을 검토해야 한다.
피처 엔지니어링 = 도메인 지식 주입
이 작업은 Claude Code가 대신할 수 없다. 도메인 이해에서 나오는 피처 설계가 성능을 가른다.
Leakage는 조용히 성능을 부풀린다
타겟 인코딩, 미래 정보, 시계열 split 오류 — 실제 배포 후 성능이 급락하는 근본 원인이다.