Почему структурирование данных должно предшествовать любой ML-модели
Прежде чем разговор доходит до выбора алгоритма, нужно разобраться с тем, из чего модель будет учиться. Разбираю этот шаг подробно.
Когда компания решает попробовать машинное обучение, разговор обычно начинается с задачи и алгоритма. Хотим предсказывать отток клиентов - давайте посмотрим на классификацию. Хотим предсказывать спрос - давайте регрессию.
Это естественная последовательность для тех, кто смотрит на задачу сверху вниз. Но в реальности именно здесь закладывается основная причина будущих неудач: до разговора об алгоритме нужно разобраться, есть ли данные, пригодные для обучения.
Что значит "пригодные для обучения"
Модель машинного обучения - это не система, которую можно сконфигурировать и запустить. Это система, которая учится на примерах. Для этого нужно несколько условий.
Первое: примеры должны существовать в достаточном количестве. Для большинства задач это означает тысячи, а не десятки записей. Мало данных - модель не обобщает, а запоминает.
Второе: у примеров должны быть правильные ответы. Для задачи оттока клиентов нужно знать, кто именно ушёл и когда. Если история хранится только в головах менеджеров или разбросана по переписке - данных для обучения нет.
Третье: данные должны описывать именно тот период и контекст, в котором будет работать модель. Данные трёхлетней давности в сильно изменившейся рыночной ситуации дадут модель, которая прогнозирует прошлое.
Типичные проблемы, которые я вижу
Самая частая - разрыв между тем, что данные должны содержать по логике, и тем, что в них фактически есть. Поле "дата первого контакта" существует в CRM, но заполнено только у 40% клиентов. Поле "причина отказа" есть, но менеджеры заполняли его произвольно на протяжении трёх лет.
Вторая частая проблема - смешение контекстов. В одной таблице могут лежать данные из разных периодов с разными правилами работы, разными продуктами, разной ценовой политикой. Модель, обученная на этом, будет учитывать закономерности, которых уже нет.
Третья - отсутствие метаданных. Что означает значение "3" в поле "статус"? Когда изменилась логика этого поля? Без документации данные технически существуют, но интерпретировать их правильно невозможно без человека, который "помнит как было".
Что нужно сделать до выбора алгоритма
Практически в каждом проекте, где я помогаю с оценкой готовности к ML, мы проходим одни и те же шаги:
- Инвентаризация: какие данные есть, где они хранятся, кто за них отвечает.
- Оценка полноты: по ключевым полям - какой процент записей заполнен, есть ли аномалии.
- Проверка истории: насколько далеко уходят данные, как менялась логика их сбора.
- Проверка связей: можно ли соединить данные из разных источников, есть ли ключи для этого.
- Формулировка целевой переменной: что именно мы хотим предсказать и есть ли это в данных в явном виде.
Только после этого разговор об алгоритмах становится предметным.
Практический тест
Если перед стартом ML-проекта команда не может за один рабочий день подготовить выборку из 500 примеров с правильными ответами - это сигнал, что данные не готовы. Не потому что 500 примеров достаточно, а потому что если даже это сделать сложно, обучение полноценной модели будет ещё сложнее.
Это не приговор проекту. Это диагноз, с которым нужно работать до начала моделирования.