Демонстрация возможностей ансамблевого обучения с помощью деревьев решений и моделей ARIMA

В этой статье я собираюсь продемонстрировать прогностическую силу ансамблевого обучения для прогнозирования временных рядов. Ансамблевое обучение приводит к моделям с более высокой точностью прогнозов, меньшей вероятностью переобучения и разнообразным набором прогнозов.

Я буду использовать набор данных, предоставленный ASHRAE (Американское общество инженеров по отоплению, охлаждению и кондиционированию воздуха), в котором есть почасовые данные учета электроэнергии, охлажденной воды, пара и горячей воды для различных зданий. Этот набор данных можно найти здесь (CC0: Public Domain). В следующем разделе мы импортируем необходимые пакеты Python и загрузим данные о метраже и здании.

Загрузка данных

На визуализации выше мы видим, что в многочисленных секторах имеется около 1400 уникальных зданий. Не все здания имеют точные данные, а данные счетчиков для некоторых зданий содержат больше пропущенных значений, чем для других. Давайте визуализируем выборку зданий с наименьшим количеством отсутствующих точек данных.

Мы видим, что большинство сюжетов сильно отличаются друг от друга. Например, даже для офисных зданий мы видим, что потребление воды в каждом здании сильно различается. Это говорит о том, что сектор здания может быть не очень полезен для каждого прогноза.

В оставшейся части статьи мы будем работать с данными об использовании горячей воды для здания 1266. Похоже, что в нем мало ошибок или длительных периодов неиспользования. Используя различные функции и внешние наборы данных, мы надеемся создать модель с высокой точностью прогнозирования. В следующей ячейке мы изолируем этот образец здания, разделяем образец на обучающий и проверочный набор и отображаем результат. Оливковые данные — это обучающие данные, а фиолетовая секция — проверочный набор.

Оказывается, в течение года наблюдается 8–10 всплесков потребления горячей воды. Это может быть связано с низкими температурами, особыми событиями или чем-то совершенно другим. Также есть 10–20 точек нулевого использования горячей воды для здания, что может указывать на праздничные дни, выходные или ошибки. Эти предварительные идеи нельзя подтвердить или опровергнуть, используя только визуализацию, и нам потребуется провести дальнейшее исследование при разработке модели.

Теперь мы рассмотрим потенциальную сезонность, используя временные характеристики данных. Мы можем создать подграфики в Matplotlib и взять среднее измеренное потребление горячей воды для каждого возможного значения функции.

Похоже, что в утренние часы (AM) потребление горячей воды больше, чем в дневные часы (PM). Интересно, что в воскресенье потребление горячей воды также выше, чем в любой другой день недели. День, день недели и другие признаки могут быть важны или могут быть просто шумом, но мы не можем определить это только по визуализации.

Базовая модель LGBM

Используя только эти функции, мы можем создать базовую модель LGBM. LGBM — это фреймворк повышения градиента, основанный на алгоритме дерева решений. Эта структура отличается от XGB тем, что ее древовидные модели растут по листам, а не по глубине. Это приводит к более быстрому обучению и сопоставимой точности. Подробнее о разнице между этими моделями читайте в этой статье.

Затем мы можем использовать обученную модель для прогнозирования потребления горячей воды на каждый час в проверочном наборе и построить прогнозы с истинными метками. Заголовок графика также показывает среднеквадратичную ошибку (RMSE) для прогнозов. Это даст нам конкретную метрику, которая будет использоваться для измерения точности модели. Обратите внимание, что мы еще не делаем предсказание на n шагов вперед, и мы просто используем функции, разработанные на основе функции метки времени.

Праздничные данные

В следующем разделе мы будем использовать внешний источник данных данных о праздниках США (CC0: Public Domain). Это может быть полезно для объяснения впадин спроса на горячую воду и потенциально может повысить точность модели. После объединения этих данных с обучающим набором мы обновим модель и сделаем новые прогнозы.

Эта модель улучшила предыдущую RMSE на 0,0041. Это довольно незначительное улучшение, но пока мы сохраним эту функцию на тот случай, если она окажется полезной в сочетании с другими функциями, которые мы добавим в следующем разделе.

Данные о погоде

Второй источник данных, который я добавлю, — это данные о погоде из набора данных ASHRAE (CC0: Public Domain). Это обеспечивает исторические измерения погоды в реальном времени с вышек, ближайших к зданиям в наборе данных.

Мы должны быть осторожны здесь, поскольку данные, которые у нас есть, получены в результате измерений в реальном времени, а не прогноза на 10 часов вперед. Если бы мы просто использовали эту информацию о погоде как функцию, мы бы совершили утечку данных! Поэтому мы будем моделировать ошибку в данных о погоде, добавляя небольшое количество гауссовского шума в каждый столбец. Это должно сделать модель менее зависимой от данных о погоде и менее склонной к переоснащению.

Затем мы можем подобрать модель LGBM с добавленными функциями, оценить среднеквадратичную ошибку новых прогнозов и построить прогнозы в сравнении с их истинными значениями.

Ух ты! Это значительное увеличение RMSE примерно на 20 пунктов по сравнению с предыдущей итерацией. Поскольку мы добавили 7 функций в эту итерацию модели, непросто увидеть, какие из них в наибольшей степени способствовали повышению точности. К счастью, модели LGBM имеют важность функций, встроенную в сами модели. На следующем графике мы визуализируем важность каждой функции. Мы видим, что все 7 характеристик важны для модели, но наибольшее влияние оказывают давление на уровне моря, температура воздуха и направление ветра.

Модель АРИМА

Наконец, мы включим модель ARIMA в наши прогнозы. В реальном мире нет смысла делать прогноз на следующие 750 часов в один момент времени. Более вероятно, что вы предскажете одну точку данных на n часов вперед. Чем дальше прогноз вы делаете, тем менее точным он, вероятно, будет.

Одним из преимуществ прогнозирования на n шагов вперед является то, что вы можете включить в свою модель более локализованную информацию. Мы сделаем это, объединив модель LGBM с моделью SARIMA (сезонная авторегрессионная интегрированная скользящая средняя). SARIMA основана на архитектуре модели ARIMA, но включает сезонный компонент. Модели на основе ARIMA являются золотым стандартом прогнозирования временных рядов и дают точные прогнозы.

В следующей ячейке мы итеративно делаем прогнозы на 10 шагов вперед для всего набора данных проверки, а затем смотрим, насколько хорошо SARIMA работает сама по себе.

Золотой стандарт прогнозирования временных рядов снова наносит удар! Модель достигает RMSE ~ 38, что превосходит модель LGBM почти на 3 балла.

Можно подумать, что отказ от модели LGBM — это путь, но мы, вероятно, можем добиться еще большей точности модели, объединив две модели. Ансамблирование — это когда вы берете средние прогнозы нескольких моделей, чтобы сделать окончательный прогноз. Это часто повышает точность модели и уменьшает переоснащение.

Ух ты! Мы улучшили RMSE модели SARIMA на ~7 баллов и модели LGBM на ~9 баллов. Это значительное улучшение, демонстрирующее возможности ансамблевого обучения.

Последние мысли

Ансамблевое обучение так же эффективно в AI/ML, как и в реальном мире. В реальном мире, когда вы решаете проблему с разнородной группой людей, вы, вероятно, создаете более эффективные решения. Это связано с уникальным опытом и разнообразными навыками каждого члена группы. Это ничем не отличается от ансамблевого обучения. Комбинируя различные архитектуры моделей и комбинации функций, вы создаете разнообразный набор прогнозов.

Если вам нужна дополнительная информация, я включил некоторые дополнительные ресурсы ниже. Код этой статьи можно найти здесь.

Ресурсы

  1. Обучение ансамблю вики
  2. Прогнозирование временных рядов с ARIMA, SARIMA и SARIMAX
  3. Документация ЛГБМ
  4. Документация StatsModels