|
2 weeks ago | |
---|---|---|
.. | ||
solution | 3 weeks ago | |
working | 3 weeks ago | |
README.md | 2 weeks ago | |
assignment.md | 3 weeks ago |
README.md
Введение в прогнозирование временных рядов
Скетчноут от Tomomi Imura
В этом уроке и следующем вы узнаете немного о прогнозировании временных рядов — интересной и полезной части арсенала ученого в области машинного обучения, которая менее известна, чем другие темы. Прогнозирование временных рядов — это своего рода «хрустальный шар»: основываясь на прошлых данных о переменной, такой как цена, можно предсказать ее потенциальное значение в будущем.
🎥 Нажмите на изображение выше, чтобы посмотреть видео о прогнозировании временных рядов
Тест перед лекцией
Это полезная и интересная область, имеющая реальную ценность для бизнеса благодаря прямому применению к задачам ценообразования, управления запасами и цепочками поставок. Хотя методы глубокого обучения начали использоваться для получения более точных прогнозов, прогнозирование временных рядов остается областью, в значительной степени опирающейся на классические методы машинного обучения.
Полезный учебный курс по временным рядам от Penn State можно найти здесь
Введение
Представьте, что вы управляете массивом умных парковочных счетчиков, которые предоставляют данные о том, как часто и как долго они используются с течением времени.
Что если вы могли бы предсказать, основываясь на прошлых данных о работе счетчика, его будущую ценность в соответствии с законами спроса и предложения?
Точно предсказать, когда действовать для достижения вашей цели — это задача, которую можно решить с помощью прогнозирования временных рядов. Это может не понравиться людям, если им придется платить больше в часы пик, когда они ищут парковочное место, но это будет надежным способом получения дохода для уборки улиц!
Давайте изучим некоторые типы алгоритмов временных рядов и начнем работу с ноутбуком, чтобы очистить и подготовить данные. Данные, которые вы будете анализировать, взяты из конкурса прогнозирования GEFCom2014. Они включают три года почасовых данных о потреблении электроэнергии и температуре с 2012 по 2014 год. Учитывая исторические паттерны потребления электроэнергии и температуры, вы сможете предсказать будущие значения потребления электроэнергии.
В этом примере вы научитесь прогнозировать один временной шаг вперед, используя только исторические данные о потреблении. Однако перед началом полезно понять, что происходит «за кулисами».
Некоторые определения
Когда вы сталкиваетесь с термином «временные ряды», важно понимать его использование в различных контекстах.
🎓 Временные ряды
В математике «временные ряды — это последовательность точек данных, индексированных (или перечисленных, или отображенных на графике) в хронологическом порядке. Чаще всего временные ряды представляют собой последовательность, взятую в равномерно распределенные моменты времени». Примером временных рядов является ежедневное значение закрытия Dow Jones Industrial Average. Использование графиков временных рядов и статистического моделирования часто встречается в обработке сигналов, прогнозировании погоды, предсказании землетрясений и других областях, где события происходят, а точки данных могут быть отображены во времени.
🎓 Анализ временных рядов
Анализ временных рядов — это анализ вышеупомянутых данных временных рядов. Данные временных рядов могут принимать различные формы, включая «прерывистые временные ряды», которые выявляют паттерны в эволюции временных рядов до и после прерывающего события. Тип анализа, необходимый для временных рядов, зависит от природы данных. Данные временных рядов могут быть представлены в виде последовательности чисел или символов.
Анализ выполняется с использованием различных методов, включая методы частотной области и временной области, линейные и нелинейные, и другие. Узнайте больше о различных способах анализа таких данных.
🎓 Прогнозирование временных рядов
Прогнозирование временных рядов — это использование модели для предсказания будущих значений на основе паттернов, отображенных ранее собранными данными. Хотя возможно использовать регрессионные модели для изучения данных временных рядов, с временными индексами в качестве переменных x на графике, такие данные лучше анализировать с использованием специальных типов моделей.
Данные временных рядов представляют собой список упорядоченных наблюдений, в отличие от данных, которые можно анализировать с помощью линейной регрессии. Наиболее распространенной моделью является ARIMA, акроним, который расшифровывается как «Автокорреляционная интегрированная скользящая средняя».
Модели ARIMA «связывают текущее значение ряда с прошлыми значениями и ошибками прошлых прогнозов». Они наиболее подходят для анализа данных временной области, где данные упорядочены во времени.
Существует несколько типов моделей ARIMA, о которых вы можете узнать здесь и которые вы изучите в следующем уроке.
В следующем уроке вы создадите модель ARIMA, используя Унивариантные временные ряды, которые фокусируются на одной переменной, изменяющей свое значение с течением времени. Примером таких данных является этот набор данных, который фиксирует ежемесячную концентрацию CO2 на обсерватории Мауна-Лоа:
CO2 | YearMonth | Year | Month |
---|---|---|---|
330.62 | 1975.04 | 1975 | 1 |
331.40 | 1975.13 | 1975 | 2 |
331.87 | 1975.21 | 1975 | 3 |
333.18 | 1975.29 | 1975 | 4 |
333.92 | 1975.38 | 1975 | 5 |
333.43 | 1975.46 | 1975 | 6 |
331.85 | 1975.54 | 1975 | 7 |
330.01 | 1975.63 | 1975 | 8 |
328.51 | 1975.71 | 1975 | 9 |
328.41 | 1975.79 | 1975 | 10 |
329.25 | 1975.88 | 1975 | 11 |
330.97 | 1975.96 | 1975 | 12 |
✅ Определите переменную, которая изменяется с течением времени в этом наборе данных.
Характеристики данных временных рядов, которые следует учитывать
При анализе данных временных рядов вы можете заметить, что они обладают определенными характеристиками, которые необходимо учитывать и устранять, чтобы лучше понять их паттерны. Если рассматривать данные временных рядов как потенциальный «сигнал», который вы хотите проанализировать, эти характеристики можно считать «шумом». Часто требуется уменьшить этот «шум», компенсируя некоторые из этих характеристик с помощью статистических методов.
Вот некоторые понятия, которые вам следует знать, чтобы работать с временными рядами:
🎓 Тренды
Тренды определяются как измеримые увеличения и уменьшения с течением времени. Узнайте больше. В контексте временных рядов речь идет о том, как использовать и, если необходимо, удалять тренды из временных рядов.
Сезонность определяется как периодические колебания, такие как всплески продаж в праздничные дни. Посмотрите, как различные типы графиков отображают сезонность в данных.
🎓 Выбросы
Выбросы — это точки данных, которые значительно отклоняются от стандартной дисперсии данных.
🎓 Долгосрочные циклы
Независимо от сезонности, данные могут демонстрировать долгосрочные циклы, такие как экономический спад, который длится более года.
🎓 Постоянная дисперсия
С течением времени некоторые данные демонстрируют постоянные колебания, например, использование энергии днем и ночью.
🎓 Резкие изменения
Данные могут демонстрировать резкое изменение, которое требует дальнейшего анализа. Например, внезапное закрытие бизнеса из-за COVID вызвало изменения в данных.
✅ Вот пример графика временных рядов, показывающий ежедневные расходы на внутриигровую валюту за несколько лет. Можете ли вы определить какие-либо из перечисленных выше характеристик в этих данных?
Упражнение — начало работы с данными о потреблении электроэнергии
Давайте начнем создавать модель временных рядов для прогнозирования будущего потребления электроэнергии на основе прошлых данных.
Данные в этом примере взяты из конкурса прогнозирования GEFCom2014. Они включают три года почасовых данных о потреблении электроэнергии и температуре с 2012 по 2014 год.
Tao Hong, Pierre Pinson, Shu Fan, Hamidreza Zareipour, Alberto Troccoli и Rob J. Hyndman, "Probabilistic energy forecasting: Global Energy Forecasting Competition 2014 and beyond", International Journal of Forecasting, vol.32, no.3, pp 896-913, July-September, 2016.
-
В папке
working
этого урока откройте файл notebook.ipynb. Начните с добавления библиотек, которые помогут вам загружать и визуализировать данные:import os import matplotlib.pyplot as plt from common.utils import load_data %matplotlib inline
Обратите внимание, что вы используете файлы из включенной папки
common
, которые настраивают вашу среду и обрабатывают загрузку данных. -
Далее, изучите данные в виде датафрейма, вызвав
load_data()
иhead()
:data_dir = './data' energy = load_data(data_dir)[['load']] energy.head()
Вы можете увидеть, что есть два столбца, представляющих дату и потребление:
load 2012-01-01 00:00:00 2698.0 2012-01-01 01:00:00 2558.0 2012-01-01 02:00:00 2444.0 2012-01-01 03:00:00 2402.0 2012-01-01 04:00:00 2403.0 -
Теперь постройте график данных, вызвав
plot()
:energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) plt.xlabel('timestamp', fontsize=12) plt.ylabel('load', fontsize=12) plt.show()
-
Теперь постройте график первой недели июля 2014 года, указав ее в качестве входных данных для
energy
в формате[с даты]: [по дату]
:energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) plt.xlabel('timestamp', fontsize=12) plt.ylabel('load', fontsize=12) plt.show()
Прекрасный график! Взгляните на эти графики и попробуйте определить какие-либо из перечисленных выше характеристик. Что можно заключить, визуализируя данные?
В следующем уроке вы создадите модель ARIMA для создания прогнозов.
🚀Задача
Составьте список всех отраслей и областей исследований, которые, по вашему мнению, могли бы извлечь выгоду из прогнозирования временных рядов. Можете ли вы придумать применение этих методов в искусстве? В эконометрике? Экологии? Розничной торговле? Промышленности? Финансах? Где еще?
Тест после лекции
Обзор и самостоятельное изучение
Хотя мы не будем рассматривать их здесь, нейронные сети иногда используются для улучшения классических методов прогнозирования временных рядов. Узнайте больше об этом в этой статье
Задание
Визуализируйте еще несколько временных рядов
Отказ от ответственности:
Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода.