Табличные данные
Коротко
Definition
Табличные данные — это данные, представленные в виде строк и столбцов, где каждая строка обычно соответствует объекту, а каждый столбец — признаку, целевой переменной или служебной информации.
Табличные данные — один из самых распространённых форматов в прикладном машинном обучении. В таком виде часто хранятся данные о клиентах, товарах, пациентах, транзакциях, материалах, экспериментах и бизнес-процессах.
Интуитивно таблица отвечает на вопрос: какие свойства известны про каждый объект.
Что это за данные
В типичной ML-задаче таблица устроена так:
| Строка | Смысл |
|---|---|
| Один объект | клиент, квартира, материал, молекула, транзакция, пациент |
| Один столбец-признак | возраст, площадь, температура, состав, категория, измерение |
| Целевая переменная | класс, число или другой ответ, который нужно предсказать |
Пример:
| Объект | Площадь | Район | Этаж | Цена |
|---|---|---|---|---|
| 1 | 45 | центр | 3 | 300000 |
| 2 | 70 | пригород | 8 | 280000 |
| 3 | 30 | центр | 1 | 210000 |
Здесь Площадь, Район и Этаж — признаки, а Цена может быть целевой переменной для задачи регрессии.
Как обычно представлены
Табличные данные обычно представлены как матрица признаков:
где:
- — число объектов;
- — число признаков;
- — матрица признаков.
Целевая переменная обычно обозначается как .
Для supervised learning данные можно представить так:
где:
- — признаки объектов;
- — правильные ответы.
В реальных таблицах признаки бывают разных типов:
- числовые признаки;
- категориальные признаки;
- бинарные признаки;
- даты и время;
- текстовые поля;
- идентификаторы;
- агрегированные признаки.
Не все столбцы одинаково полезны для модели. Например, идентификатор объекта часто не должен использоваться как признак, потому что он может привести к переобучению или data leakage.
Какие задачи решают
На табличных данных часто решают основные задачи машинного обучения:
- Задачи классификации — предсказать класс объекта;
- Задачи регрессии — предсказать численное значение;
- Задачи кластеризации — найти группы похожих объектов.
Примеры:
| Задача | Целевая переменная | Тип задачи |
|---|---|---|
| Предсказать отток клиента | уйдёт / не уйдёт | классификация |
| Предсказать цену квартиры | цена | регрессия |
| Найти сегменты клиентов | номер группы | кластеризация |
| Предсказать энергию материала | энергия образования | регрессия |
| Определить мошенническую транзакцию | fraud / normal | классификация |
Табличные данные особенно часто встречаются в бизнесе, медицине, финансах, инженерии и ML для материалов.
Какие модели подходят
Для табличных данных часто хорошо работают классические ML-модели:
- Линейная регрессия;
- Логистическая регрессия;
- SVM;
- SVR;
- Дерево решений;
- Случайный лес;
- Градиентный бустинг;
- k-means;
- DBSCAN.
Для многих прикладных задач на таблицах Градиентный бустинг часто является очень сильным baseline или основной моделью.
Нейросети тоже можно использовать для табличных данных, но они не всегда выигрывают у деревьев и бустинга. Особенно это верно для небольших и средних датасетов со смешанными числовыми и категориальными признаками.
Типичная предобработка
Табличные данные почти всегда требуют предобработки.
Частые шаги:
- Удалить дубликаты.
- Разобраться с пропусками.
- Исправить очевидные ошибки в данных.
- Разделить данные на train, validation и test.
- Закодировать категориальные признаки.
- Масштабировать числовые признаки, если модель чувствительна к масштабу.
- Проверить выбросы.
- Удалить признаки, которые создают data leakage.
- Проверить баланс классов, если это классификация.
- Сравнить модель с простым 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 и другие метрики.
Сдвиг распределения
Модель может обучаться на одном распределении данных, а применяться на другом.
Например, данные клиентов за прошлый год могут отличаться от новых клиентов. В таком случае качество модели может ухудшиться после внедрения.
Минимальный пример
Допустим, нужно предсказать, уйдёт ли клиент из сервиса.
| Клиент | Возраст | Тариф | Месяцев в сервисе | Жалобы | Ушёл |
|---|---|---|---|---|---|
| 1 | 25 | basic | 3 | 2 | yes |
| 2 | 41 | pro | 24 | 0 | no |
| 3 | 32 | basic | 6 | 1 | yes |
| 4 | 55 | premium | 36 | 0 | no |
Здесь:
- объект — клиент;
- признаки — возраст, тариф, число месяцев в сервисе, число жалоб;
- целевая переменная —
Ушёл; - тип задачи — классификация.
Перед обучением модели нужно:
- Закодировать
Тариф. - Разделить данные на train и test.
- Выбрать baseline.
- Обучить модель, например логистическую регрессию или Градиентный бустинг.
- Оценить качество через метрики классификации.
Практические замечания
Для табличных данных хороший стартовый workflow обычно такой:
- Сделать первичный анализ данных.
- Проверить пропуски, дубликаты и типы столбцов.
- Определить целевую переменную.
- Удалить явные leakage-признаки.
- Разделить данные на train, validation и test.
- Сделать простую предобработку.
- Обучить baseline.
- Обучить более сильную модель.
- Оценить качество через подходящие метрики.
- Проанализировать ошибки.
Подробный порядок работы см. в Типовой ML pipeline.