Табличные данные

Коротко

Definition

Табличные данные — это данные, представленные в виде строк и столбцов, где каждая строка обычно соответствует объекту, а каждый столбец — признаку, целевой переменной или служебной информации.

Табличные данные — один из самых распространённых форматов в прикладном машинном обучении. В таком виде часто хранятся данные о клиентах, товарах, пациентах, транзакциях, материалах, экспериментах и бизнес-процессах.

Интуитивно таблица отвечает на вопрос: какие свойства известны про каждый объект.

Что это за данные

В типичной ML-задаче таблица устроена так:

СтрокаСмысл
Один объектклиент, квартира, материал, молекула, транзакция, пациент
Один столбец-признаквозраст, площадь, температура, состав, категория, измерение
Целевая переменнаякласс, число или другой ответ, который нужно предсказать

Пример:

ОбъектПлощадьРайонЭтажЦена
145центр3300000
270пригород8280000
330центр1210000

Здесь Площадь, Район и Этаж — признаки, а Цена может быть целевой переменной для задачи регрессии.

Как обычно представлены

Табличные данные обычно представлены как матрица признаков:

где:

  • — число объектов;
  • — число признаков;
  • — матрица признаков.

Целевая переменная обычно обозначается как .

Для supervised learning данные можно представить так:

где:

  • — признаки объектов;
  • — правильные ответы.

В реальных таблицах признаки бывают разных типов:

  • числовые признаки;
  • категориальные признаки;
  • бинарные признаки;
  • даты и время;
  • текстовые поля;
  • идентификаторы;
  • агрегированные признаки.

Не все столбцы одинаково полезны для модели. Например, идентификатор объекта часто не должен использоваться как признак, потому что он может привести к переобучению или data leakage.

Какие задачи решают

На табличных данных часто решают основные задачи машинного обучения:

Примеры:

ЗадачаЦелевая переменнаяТип задачи
Предсказать отток клиентауйдёт / не уйдётклассификация
Предсказать цену квартирыценарегрессия
Найти сегменты клиентовномер группыкластеризация
Предсказать энергию материалаэнергия образованиярегрессия
Определить мошенническую транзакциюfraud / normalклассификация

Табличные данные особенно часто встречаются в бизнесе, медицине, финансах, инженерии и ML для материалов.

Какие модели подходят

Для табличных данных часто хорошо работают классические ML-модели:

Для многих прикладных задач на таблицах Градиентный бустинг часто является очень сильным baseline или основной моделью.

Нейросети тоже можно использовать для табличных данных, но они не всегда выигрывают у деревьев и бустинга. Особенно это верно для небольших и средних датасетов со смешанными числовыми и категориальными признаками.

Типичная предобработка

Табличные данные почти всегда требуют предобработки.

Частые шаги:

  1. Удалить дубликаты.
  2. Разобраться с пропусками.
  3. Исправить очевидные ошибки в данных.
  4. Разделить данные на train, validation и test.
  5. Закодировать категориальные признаки.
  6. Масштабировать числовые признаки, если модель чувствительна к масштабу.
  7. Проверить выбросы.
  8. Удалить признаки, которые создают data leakage.
  9. Проверить баланс классов, если это классификация.
  10. Сравнить модель с простым baseline.

Важно: параметры предобработки нужно вычислять только на train-части, а затем применять к validation и test. Например, среднее значение для заполнения пропусков нельзя считать по всему датасету сразу.

Частые проблемы

Пропуски

В таблицах часто отсутствуют значения: клиент не указал возраст, измерение не удалось, поле не было заполнено.

Пропуски можно:

  • удалить;
  • заполнить средним, медианой или модой;
  • заполнить специальным значением;
  • добавить отдельный индикатор пропуска.

Лучший вариант зависит от причины пропуска.

Категориальные признаки

Многие модели не умеют напрямую работать со строками вроде центр, пригород, низкий риск.

Такие признаки нужно кодировать. Например:

  • one-hot encoding;
  • ordinal encoding;
  • target encoding;
  • специальные методы для категориальных признаков в бустинге.

Разный масштаб признаков

Если один признак измеряется в тысячах, а другой в долях единицы, модели на основе расстояний или градиентной оптимизации могут работать хуже.

Масштабирование особенно важно для:

Деревья решений, случайный лес и градиентный бустинг обычно менее чувствительны к масштабу числовых признаков.

Data leakage

Data leakage возникает, когда в признаки попадает информация, которая не будет доступна в момент реального применения модели.

Примеры:

  • использовать итоговый статус заявки как признак для предсказания одобрения заявки;
  • считать статистики по всему датасету до train-test split;
  • использовать будущие события для предсказания прошлого;
  • оставлять в данных идентификатор, который напрямую связан с ответом.

Data leakage часто даёт неправдоподобно высокое качество на тесте.

Дисбаланс классов

В задачах классификации один класс может встречаться намного чаще другого.

Например, мошеннических транзакций может быть меньше 1%. В такой ситуации accuracy может быть почти бесполезной, и нужно смотреть precision, recall, F1-score, ROC-AUC и другие метрики.

Сдвиг распределения

Модель может обучаться на одном распределении данных, а применяться на другом.

Например, данные клиентов за прошлый год могут отличаться от новых клиентов. В таком случае качество модели может ухудшиться после внедрения.

Минимальный пример

Допустим, нужно предсказать, уйдёт ли клиент из сервиса.

КлиентВозрастТарифМесяцев в сервисеЖалобыУшёл
125basic32yes
241pro240no
332basic61yes
455premium360no

Здесь:

  • объект — клиент;
  • признаки — возраст, тариф, число месяцев в сервисе, число жалоб;
  • целевая переменная — Ушёл;
  • тип задачи — классификация.

Перед обучением модели нужно:

  1. Закодировать Тариф.
  2. Разделить данные на train и test.
  3. Выбрать baseline.
  4. Обучить модель, например логистическую регрессию или Градиентный бустинг.
  5. Оценить качество через метрики классификации.

Практические замечания

Для табличных данных хороший стартовый workflow обычно такой:

  1. Сделать первичный анализ данных.
  2. Проверить пропуски, дубликаты и типы столбцов.
  3. Определить целевую переменную.
  4. Удалить явные leakage-признаки.
  5. Разделить данные на train, validation и test.
  6. Сделать простую предобработку.
  7. Обучить baseline.
  8. Обучить более сильную модель.
  9. Оценить качество через подходящие метрики.
  10. Проанализировать ошибки.

Подробный порядок работы см. в Типовой ML pipeline.

Связанные понятия