📚Введение в разработку фичей для прогнозирования временных рядов - отрывок из книги доктора Francesca Lazzeri «Машинное обучение для прогнозирования временных рядов с помощью Python» (Machine Learning for Time Series Forecasting with Python), опубликованной в декабре 2020 года
Разработка ML-моделей часто занимает много времени и требует учета множества факторов: повторение алгоритмов, настройка гиперпараметров и feature engineering. Эти варианты дополнительно умножаются на данные временных рядов, поскольку DS-специалисты должны еще учитывать тенденции, сезонность, праздники и внешние экономические переменные. Каждый ML-алгоритм ожидает данные в качестве входных данных, которые должны быть отформатированы. Поэтому наборы данных временных рядов требуют предварительной очистки и определения фичей, прежде чем запустить моделирование.
Особенность анализа временных рядов в том, что точки данных привязываются ко времени. Например, необходимо построить выходные данные ML-модели, определив переменную, которую необходимо предсказать (будущее количество продаж в следующий понедельник), а затем использовать исторические данные и набор фичей для создания входных переменных. Это нужно для достижения следующих целей:
• создание корректного набора входных данных для ML-алгоритма, чтобы создать входные фичи из исторических данных и сформировать датасет как задачу контролируемого обучения;
• повышение производительности ML-моделей – создание действительных отношений между входными фичами и целевой переменной, которую необходимо прогнозировать.
Основными категориями данных, полезных для анализа временных рядов, являются следующие:
• Дата и время - фичи на основе значения отметки времени каждого наблюдения, например, часы, месяц и день недели для каждого наблюдения. Сюда же относятся выходные и праздники, время года и пр.
• Запаздывание - значения на предыдущих временных шагах, которые считаются полезными, потому что они созданы на основе предположения, что то, что произошло в прошлом, может влиять или содержать своего рода внутреннюю информацию о будущем. Например, может быть полезно создавать функции для продаж, которые произошли в предыдущие дни в 16:00, если нужно предсказать аналогичные продажи в это же время на следующий день.
• Статистика скользящего окна, чтобы вычислить статистику по значениям из заданной выборки данных путем определения диапазона, который включает сам выборку, а также некоторое заданное количество значений до и после используемой выборки.
• Статистика расширяемого окна из фичей, которые включают все предыдущие данные.
Посмотреть иллюстрации и примеры Python-функций можно здесь: https://medium.com/data-science-at-microsoft/introduction-to-feature-engineering-for-time-series-forecasting-620aa55fcab0
Post #140
467