Найти в Дзене

TabPFN v2: революция в анализе «малых» табличных данных

Оглавление

Мир машинного обучения последнее время захлёстывает волна «foundation-моделей» — обобщённых алгоритмов, которые предварительно обучены на больших массивах данных и могут применяться к новым задачам без отточки или с минимальной донастройкой. Вроде бы мы привыкли к подобным решениям в сфере языка (GPT), изображений (Stable Diffusion), биоинформатики (AlphaFold). Но что насчёт классических табличных данных, где есть колонны с числовыми, категориальными и пропущенными значениями? Как раз в этом месте появляется TabPFN — проект, который (по словам авторов) готов пересмотреть привычный подход к анализу табличных данных.

В чём фишка TabPFN?

  • Small data: модель специально «заточена» под наборы менее 10 тыс. строк (и до 500 признаков). Это частая ситуация — например, в медицинских исследованиях, научных экспериментах с ограниченной выборкой или стартапах, где нет «гор» данных.
  • ICL (In-Context Learning)**: TabPFN использует тот же трюк, что сделали популярным языковые модели вроде GPT, только для табличных задач. То есть она обучается не просто «прогонять через обычную нейронку», а подхватывает логику на лету (в контексте предоставленных выборок).
  • Высокая скорость: на бенчмарках авторы отмечают, что модель выдаёт превосходные результаты буквально за 2.8 секунды (для классификации), обгоняя CatBoost/XGBoost, которым нужен длительный перебор гиперпараметров.

Как это устроено

  1. Генерация синтетики
    Чтобы «научить модель обучаться», команда использует колоссальное количество (около 100 млн) сгенерированных датасетов, построенных по структуре «каузальных графов» (SCM).☕ Эти датасеты специально содержат сложности: пропуски в данных, смешанные типы (числовые/категориальные), возможные выбросы и т. д.
    ☕ Идея в том, чтобы «запрограммировать» обучающие примеры не руками (как в классическом ML), а «по-настоящему» показать модели «миллионы кейсов». В результате TabPFN учится находить лучшие алгоритмы обработки сама.
  2. Архитектура
    В основе —
    трансформер, который, в отличие от текстовых моделей, «читает» табличный формат (то есть его реализация умеет различать колонки как особые «позиции»). Считается, что такой двухмерный подход позволяет лучше учитывать взаимосвязи между признаками и строками.
  3. ICL: одно прохождение
    При предсказании (inference) модель получает и обучающую часть, и тестовую часть данных «в одно горло». Никакого отдельного «fit» в привычном смысле: всё происходит за один проход. Это резко повышает скорость, хотя потребляет больше памяти.
  4. Скорость против качества
    Одна из ключевых целей — за время порядка секунд показать результат, который превосходит классические инструменты (CatBoost, XGBoost, Random Forest, AutoGluon) даже после 4 часов (!) перебора гиперпараметров. Если верить статье, на задачах до 10k строк это выглядит весьма реалистично.

Что даёт пользователю?

  • Сильное «из коробки» решение: Вы можете, не заморачиваясь с тюнингом, скормить таблицу модельке — и она выдаст результат. Причём зачастую лучше, чем CatBoost/LightGBM в их дефолтных настройках.
  • Возможность моделировать распределения: модель может не только выдавать «значение», но и строить вероятностное предсказание, что актуально для рисков, медицинских приложений и т. д.
  • Генеративные фичи: TabPFN якобы может синтезировать новые точки, похожие на исходные (privacy-friendly data generation).
  • Удобство интеграции: код открытый, есть Python API, можно использовать на обычной потребительской GPU (GeForce RTX 2080 Ti и выше).

Моя личная оценка

Как человек, который видел, как дерево-энсамбли (CatBoost, XGBoost) последние 5-7 лет вытесняют прочие подходы для «классических табличек», я признаю: идея «foundation-model» в табличной области звучит очень круто. Проблема главная — «реальная жизнь»:

  • Датасеты бывают крупнее 10k строк. Для 100k–1M, возможно, CatBoost или LightGBM останутся царями.
  • Память и inference: TabPFN в статье оптимизирован, но всё равно держит весь train + test в трансформере. Не лучший вариант, если нужен real-time или миллионы строк.
  • Приёмка индустрией: деревья проще, быстрее, требуют меньше GPU. Имея готовые production-пайплайны, можно только ради 5% улучшения метрики в edge-кейсе не «сносить» всё.

Но если у вас действительно небольшой датасет, ограниченное время, и хочется «лучше, чем baseline GBDT» — TabPFN может оказаться очень удобным решением. Причём этот подход, похоже, даёт и интерпретируемость (SHAP values) и умеет работать с пропусками.

Технические тонкости

  • Регрессия: модель превращает задачу регрессии в задачу классификации по кусочным интервалам (piece-wise constant), но при этом получает вероятностное распределение на выходе, что позволяет предсказывать не «одно число», а «спектр» (полезно для оценки неопределённости).
  • Генерация данных: возможна, так как фактически на выходе имеем «density estimation» — можно, по очереди, «пробегая» по признакам, сэмплировать значения с учётом условных вероятностей.
  • Адаптивность к пропущенным значениям: «заполнять» пропуски иногда лучше, чем жёстко им путать 0, — и модель сама «придумывает» стратегию через ICL (от неё не требуется вручную прописывать механизмы).
  • Фантастические оптимизации: чтобы всё это «помещалось» на GPU. LayerNorm в половинной точности, FlashAttention, activation checkpointing и др.

Кому полезно и когда?

  1. Если у вас до 10k строк: TabPFN обещает невероятную быстроту обучения (фактически, одно прохождение) при отличном качестве.
  2. Если вы хотите Bayesian-like распределение: TabPFN умеет выдавать не только точечные предсказания, но и вероятностные (удобно для риск-анализа).
  3. Если вам нужно что-то покрутить вручную: у TabPFN (в отличие от CatBoost) меньше традиционных гиперпараметров, зато можно менять логику ансамбля, преобразовать данные.

В больших случаях (100k+) деревья пока выгоднее. Однако авторы намекают, что при грамотных доработках TabPFN можно масштабировать, внедряя блоки «шардинга» данных.

Итоги

TabPFN v2 — реальный сдвиг парадигмы для табличных данных, доказывающий, что и в этом сегменте можно применять большие «обобщающие» модели. Вместо того чтобы годами вручную писать эвристики и тюнить CatBoost, эта модель сама научилась обучаться через in-context learning на гигантском количестве сгенерированных датасетов. По результатам авторов, TabPFN:

  • ☕ Превзошёл самые топовые энсамбли (CatBoost, AutoGluon) на наборе задач (до 10 тыс. строк).
  • ☕ Делает это за считанные секунды (против часов перебора).
  • ☕ Умеет выдавать распределение ответа, генерировать «похожие» строки, давать интерпретацию (через SHAP).

Конечно, пока всё это лучше всего работает в рамках «малых данных». Если проект действительно укладывается в лимиты (10k строк и 500 признаков), TabPFN может стать новым «оружием» в руках ML-практиков.

Ссылки:

Если вы интересуетесь AutoML и ищете свежие идеи для работы с табличными данными, однозначно стоит попробовать TabPFN. Возможно, за такими «foundation»-подходами будущее, даже в классических бизнес-задачах, где «небо больших данных» пока не такое уж и большое.