콘텐츠로 이동
Data Prep
상세

TabPFN: Tabular Foundation Model with In-Context Learning

항목 내용
논문 Accurate predictions on small data with a tabular foundation model
저자 Noah Hollmann, Samuel Muller, Frank Hutter et al. (University of Freiburg)
게재 Nature (2025.01)
arXiv 2207.01848 (v1: ICLR 2023)
GitHub automl/tabpfn

핵심 아이디어

TabPFN(Tabular Prior-data Fitted Network)은 In-Context Learning을 활용한 tabular foundation model이다. 별도의 학습 과정 없이 단일 forward pass로 예측을 수행한다.

기존 방식 vs TabPFN

기존 방식 TabPFN
데이터셋마다 모델 학습 필요 Pre-trained 모델 사용
하이퍼파라미터 튜닝 필수 튜닝 불필요
수 분~수 시간 학습 단일 forward pass (초 단위)
개별 샘플 단위 추론 전체 데이터셋 단위 추론

성능 (10,000 샘플 이하 데이터셋)

모델 튜닝 시간 평균 성능
TabPFN 0 (forward pass) 1위
XGBoost (4h tuning) 4시간 2위
CatBoost (4h tuning) 4시간 3위
LightGBM (4h tuning) 4시간 4위

속도 향상: 분류 5,140배, 회귀 3,000배 (튜닝된 GBDT 대비)


작동 원리

In-Context Learning 메커니즘

Pre-training Phase (한 번만 수행):
+------------------+      +-------------------+      +------------------+
| Synthetic Data   | ---> | Transformer Model | ---> | Trained TabPFN   |
| (100M+ datasets) |      | Training          |      |                  |
+------------------+      +-------------------+      +------------------+

Inference Phase (각 데이터셋에 적용):
+------------------+      +------------------+      +------------------+
| X_train, y_train | ---> | TabPFN           | ---> | y_test 예측      |
| X_test           |      | (single forward) |      |                  |
+------------------+      +------------------+      +------------------+

핵심 특징: 1. 데이터셋 전체를 입력: 학습 데이터 + 테스트 데이터를 함께 입력 2. 컨텍스트 기반 예측: 학습 데이터를 컨텍스트로 활용하여 테스트 예측 3. 메타 학습: 수억 개의 합성 데이터셋으로 "학습 방법" 자체를 학습

Bayesian 해석

TabPFN은 사후 예측 분포를 근사한다:

p(y_test | X_test, X_train, y_train)

Prior(합성 데이터 생성 분포)가 정의하는 베이지안 예측을 수행한다.


아키텍처 상세

Two-Way Attention 메커니즘

기존 Transformer는 1D 시퀀스 처리에 최적화되어 있다. TabPFN은 테이블의 2D 구조를 활용하는 attention을 설계했다:

Cell Attention Flow:

     Feature 1    Feature 2    Feature 3
     --------     --------     --------
Row 1:  [C11] <---> [C12] <---> [C13]    (Row-wise attention)
           |          |          |
           v          v          v       (Column-wise attention)
Row 2:  [C21] <---> [C22] <---> [C23]
           |          |          |
           v          v          v
Row 3:  [C31] <---> [C32] <---> [C33]
Attention 타입 역할
Row-wise 동일 샘플 내 피처 간 관계 학습
Column-wise 동일 피처의 샘플 간 분포 학습

불변성 (Invariance)

속성 설명
Sample order invariance 샘플 순서와 무관한 예측
Feature order invariance 피처 순서와 무관한 예측

출력 분포

회귀 태스크에서 piece-wise constant 분포를 출력하여 불확실성 정량화가 가능하다:

+--------+
|   p(y) |    +--+
|        |    |  |
|        | +--+  +--+
|        | |        |
+--------+-+--------+----> y
          y1  y2  y3

다중 모드 분포, 비대칭 분포 등 복잡한 타겟 분포 표현 가능.


합성 데이터 생성 (Prior)

Structural Causal Model (SCM) 기반

TabPFN의 성능은 합성 데이터 품질에 의존한다. SCM을 사용하여 다양한 인과 구조를 생성한다:

SCM Generation Pipeline:

1. Hyperparameter Sampling
   +------------------------------------------+
   | - Dataset size (n_samples, n_features)   |
   | - Difficulty level                       |
   | - Causal structure complexity            |
   +------------------------------------------+
              |
              v
2. DAG Construction
   +------------------------------------------+
   |     [Noise] --> [Z1] --> [Z2]            |
   |                   |       |              |
   |                   v       v              |
   |                  [F1]    [F2] --> [T]    |
   +------------------------------------------+
              |
              v
3. Data Generation
   +------------------------------------------+
   | Propagate noise through graph            |
   | Extract features (F) and target (T)      |
   +------------------------------------------+
              |
              v
4. Post-processing
   +------------------------------------------+
   | - Add missing values                     |
   | - Add noise / outliers                   |
   | - Categorical encoding                   |
   +------------------------------------------+

생성되는 데이터 특성

특성 구현 방식
비선형 관계 소규모 신경망으로 edge 매핑
피처 간 상호작용 DAG 구조로 복잡한 의존성 모델링
결측치 랜덤 마스킹
이상치 노이즈 주입
범주형 변수 이산화 및 인코딩
클래스 불균형 다양한 클래스 비율 샘플링

합성 데이터의 장점

장점 설명
Privacy 실제 데이터 사용 안 함
No data leakage 테스트셋 오염 원천 차단
Unlimited scale 필요한 만큼 생성 가능
Controllable 원하는 특성 명시적 제어

TabPFN v2 개선사항 (Nature 2025)

확장성

항목 v1 (ICLR 2023) v2 (Nature 2025)
최대 샘플 수 1,000 50,000
최대 피처 수 100 500
회귀 지원 X O
범주형 지원 제한적 완전 지원
결측치 처리 X O
메모리 효율성 낮음 4배 개선

최적화 기법

기법 효과
Flash Attention 메모리 및 속도 향상
Half-precision LayerNorm 메모리 절감
Activation Checkpointing 메모리 절감
Train-state Caching 추론 속도 300배 향상 (CPU)

확장 기능

기능 설명
Fine-tuning 특정 도메인 데이터로 추가 학습
Density Estimation 데이터 분포 추정
Generative Modeling 합성 데이터 생성

Python 구현

설치

pip install tabpfn

기본 사용법 (분류)

from tabpfn import TabPFNClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 데이터 로드
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# TabPFN 분류기
clf = TabPFNClassifier(device='cpu')

# 학습 및 예측 (단일 forward pass)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
y_proba = clf.predict_proba(X_test)

print(f"Accuracy: {accuracy_score(y_test, y_pred):.4f}")

회귀 태스크

from tabpfn import TabPFNRegressor
from sklearn.datasets import fetch_california_housing
from sklearn.metrics import mean_squared_error
import numpy as np

# 데이터 로드 (서브샘플링 - TabPFN은 소규모 데이터에 최적화)
X, y = fetch_california_housing(return_X_y=True)
idx = np.random.choice(len(X), size=5000, replace=False)
X, y = X[idx], y[idx]

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# TabPFN 회귀기
reg = TabPFNRegressor(device='cpu')
reg.fit(X_train, y_train)

# 점 예측
y_pred = reg.predict(X_test)
print(f"RMSE: {np.sqrt(mean_squared_error(y_test, y_pred)):.4f}")

# 분포 예측 (불확실성 정량화)
y_dist = reg.predict_full(X_test)  # 전체 분포 반환

결측치 처리

import numpy as np
from tabpfn import TabPFNClassifier

# 결측치 포함 데이터
X_train_missing = X_train.copy()
X_train_missing[np.random.rand(*X_train.shape) < 0.1] = np.nan

# TabPFN은 결측치를 자동 처리
clf = TabPFNClassifier(device='cpu')
clf.fit(X_train_missing, y_train)  # 별도 imputation 불필요
y_pred = clf.predict(X_test)

앙상블 (성능 향상)

from tabpfn import TabPFNClassifier

# 여러 TabPFN 모델의 앙상블
clf = TabPFNClassifier(
    device='cpu',
    N_ensemble_configurations=32,  # 앙상블 크기
)
clf.fit(X_train, y_train)
y_proba = clf.predict_proba(X_test)  # 앙상블 평균 확률

GPU 활용

import torch
from tabpfn import TabPFNClassifier

# GPU 사용 (대규모 데이터셋에서 속도 향상)
device = 'cuda' if torch.cuda.is_available() else 'cpu'
clf = TabPFNClassifier(device=device)

# 대용량 데이터셋의 경우 배치 처리
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test, batch_size=1000)

제한사항 및 적용 가이드

데이터셋 크기 제한

데이터 크기 TabPFN 적합도 권장 대안
< 1,000 최적 -
1,000 - 10,000 우수 -
10,000 - 50,000 가능 TabM, GBDT
> 50,000 부적합 TabM, GBDT, Deep Learning

피처 수 제한

피처 수 적합도 비고
< 100 최적 추가 처리 불필요
100 - 500 가능 메모리 고려
> 500 부적합 피처 선택 필요

적합한 사용 케이스

케이스 적합도 이유
소규모 데이터 분류/회귀 높음 설계 목적
AutoML 파이프라인 높음 튜닝 불필요, 빠른 baseline
불확실성 정량화 필요 높음 분포 출력 지원
결측치 많은 데이터 높음 자동 처리
대규모 데이터 (100K+) 낮음 확장성 제한
실시간 스트리밍 중간 배치 처리에 최적화

TabPFN vs TabM 비교

항목 TabPFN TabM
접근법 In-Context Learning Parameter-Efficient Ensembling
학습 방식 Pre-trained (학습 불필요) 데이터셋마다 학습 필요
최적 데이터 크기 < 10,000 10,000 - 1,000,000
추론 속도 빠름 (단일 forward) 중간
학습 속도 N/A (즉시 사용) 수 분 ~ 수 시간
확장성 제한적 우수
하이퍼파라미터 거의 없음 튜닝 권장
커스터마이징 Fine-tuning 아키텍처 변형

사용 시나리오 가이드

시나리오 권장 모델
빠른 baseline 필요 TabPFN
데이터 < 10K TabPFN
데이터 10K - 100K TabM 또는 둘 다 시도
데이터 > 100K TabM
튜닝 시간 제한 TabPFN
최고 성능 필요 둘 다 시도 후 선택

최신 연구 동향 (2025-2026)

TabPFN 관련 후속 연구

연구 내용 출처
TabPFN Unleashed 대규모 데이터셋으로 확장 ICML 2025
TabICL 더 큰 데이터에 ICL 적용 ICML 2025
TabDPT 실제 데이터로 pre-training NeurIPS 2025
Time Series TabPFN 시계열 예측 확장 arXiv 2025

Tabular Foundation Model 생태계

Tabular Foundation Models:

In-Context Learning 계열:
  +-- TabPFN (Freiburg)
  +-- TabICL (INRIA)
  +-- TabDPT (Toronto)

Traditional DL 계열:
  +-- TabM (Yandex)
  +-- TabR (Yandex)
  +-- FT-Transformer (Yandex)

참고 자료