XGBoost – один из наиболее эффективных алгоритмов прогнозирования временных рядов.
Однако для этого необходимо тщательно подготовить данные.
Вот шаги по преобразованию исходных данных в контролируемые ML-данные для прогнозирования временных рядов ↓
Пример
Представьте, что вы работаете в компании, предоставляющей услуги по совместному использованию поездок в Нью-Йорке, в качестве инженера ML.
Вы хотите помочь операционной команде оптимально распределять парк водителей в каждый час дня.
Конечная цель – максимизировать доход
Задача ML
Построим прогностическую модель для спроса на такси. Модель будет предсказывать, сколько поездок будет запрошено
в каждом районе Нью-Йорка
в ближайшие 60 минут.
Однако прежде чем обучать любую ML-модель, необходимо подготовить данные.
Для этого необходимо выполнить следующие действия
1️⃣ Валидация исходных данных
Необработанные данные собираются бэкендом приложения и отправляются в хранилище данных.
Отфильтруйте неверные или ошибочные события.
Например, тестовые события, сгенерированные командой разработчиков, которые случайно попали в производственные данные.
2️⃣ Агрегировать подтвержденные события в геовременные бакеты
Агрегируйте подтвержденные события в 1-часовые пакеты для каждого района города NYC.
Это и есть гранулярность задачи прогнозирования временных рядов.
3️⃣ Разбиение временного ряда на пары (признаки, цель)
Определите
- длину окна (например, последние 12 часов) для размера входного вектора признаков.
- размер шага (например, 1 час) для управления общим количеством выборок.
и применить операцию “нарезка на кубики”.
Мой совет 🧠.
Лучше всего упаковать все этапы предварительной обработки данных в функцию, которую можно запускать из командной строки и которая в дальнейшем будет использоваться в качестве конвейера функций.