Auto arima python пример

Linux и Android

Представьте себе, что вам предложили спрогнозировать цену следующего iPhone, и вам предоставили исторические данные. Они включает в себя квартальные продажи, ежемесячные расходы и целый ряд вещей, которые входят в баланс Apple. Как data scientist, как бы вы классифицировали такую проблему? Конечно, это моделирование временных рядов.

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

Сначала мы разберем концепцию ARIMA, которая приведет нас к нашей главной теме — Auto ARIMA. Чтобы укрепить наши знания, мы возьмем набор данных и реализуем его анализ как в Python, так и в R.

Если вы знакомы с временными рядами и методами их анализа (такими как скользящее среднее, экспоненциальное сглаживание и ARIMA), вы можете сразу перейти к разделу 4. Для начинающих начните с приведенного ниже раздела, который представляет собой краткое введение во временные ряды и различные методы прогнозирования.

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

Читайте также:  Sql connection code php

Предположим, у вас есть набор данных по людям, которые взяли кредит у конкретной компании (как показано в таблице ниже). Как вы думаете, каждая строка будет связана с предыдущими строками? Конечно, нет! Кредит, взятый человеком, будет зависеть от его финансовых условий и потребностей (могут быть и другие факторы, такие как размер семьи и т. д., но для простоты мы рассматриваем только доход и тип кредита). Кроме того, данные не были собраны для конкретного интервал времени. Это зависит от того, когда компания получила запрос на кредит.

Давайте возьмем другой пример. Предположим, у вас есть набор данных, который содержит уровень CO2 в воздухе за день (скриншот ниже). Сможете ли вы предсказать приблизительное количество CO2 на следующий день, посмотрев на значения за последние несколько дней? Да, конечно. Если вы посмотрите внимательно, вы увидите, что данные фиксировались на ежедневной основе, то есть интервал времени является постоянным (24 часа).

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

Существует несколько методов прогнозирования временных рядов, и мы кратко рассмотрим их в этом разделе. Подробное объяснение и коды Python для всех перечисленных ниже методов можно найти в этой статье: 7 techniques for time series forecasting (with python codes).

1. Наивный подход: в этой методике прогнозирования значение новой точки данных прогнозируется равным предыдущей точке данных. Результатом будет плоская линия, поскольку все новые значения принимают предыдущие значения.

2. Простое среднее: следующее значение берется как среднее из всех предыдущих значений. Предсказания здесь лучше, чем «Наивный подход», поскольку этот метод не приводит к плоской линии, но здесь учитываются все прошлые значения, которые не всегда могут быть полезны. Например, когда вас попросят предсказать сегодняшнюю температуру, вы будете учитывать температуру за последние 7 дней, а не температуру месяца назад.

3. Скользящее среднее: это улучшение по сравнению с предыдущей техникой. Вместо того, чтобы брать среднее значение по всем предыдущим точкам, в качестве прогнозируемой величины принимается среднее значение «n» предыдущих баллов.

4. Взвешенное скользящее среднее. Взвешенное скользящее среднее — это скользящее среднее, в котором прошлым значениям n присваиваются разные веса.

5. Простое экспоненциальное сглаживание: в этом методе большие веса присваиваются более поздним наблюдениям, чем наблюдениям из далекого прошлого.

6. Модель линейного тренда Холта: этот метод учитывает тренд набора данных. Под трендом мы подразумеваем возрастание или убывание ряда. Предположим, что количество бронирований в отеле увеличивается с каждым годом, тогда мы можем сказать, что количество бронирований имеет тенденцию к увеличению. Функция прогноза в этом методе является функцией уровня и тренда.

Метод Холта-Уинтерса: этот алгоритм учитывает как тренд, так и сезонность ряда. Например — количество бронирований в отеле высокое в выходные дни и низкое в будние дни и увеличивается с каждым годом; существует еженедельная сезонность и возрастающая тенденция.

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

В этом разделе мы сделаем краткое введение в ARIMA, которое поможет нам понять Auto Arima. Подробное описание Arima, параметров (p, q, d), графиков (ACF PACF) и реализации включено в эту статью: Complete tutorial to Time Series.

ARIMA — очень популярный статистический метод для прогнозирования временных рядов. ARIMA — это сокращение «Auto-Regressive Integrated Moving Averages». Модели ARIMA работают на следующих предположениях:

1. Ряд данных является стационарным, что означает, что среднее значение и дисперсия не должны изменяться со временем. Ряд может быть сделан стационарным взятием разностей некоторого порядка от исходного временного ряда.

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

ARIMA состоит из трех компонентов — AR (авторегрессия), I (разность) и MA (скользящая средняя). Давайте разберемся с каждым из этих компонентов:

1. Термин AR относится к прошлым значениям, используемым для прогнозирования следующего значения. Термин AR определяется параметром «p» в arima. Значение «p» определяется с использованием графика ACF.

2. Термин MA используется для определения количества прошлых ошибок прогноза, используемых для прогнозирования будущих значений. Параметр «q» в ариме представляет собой МА. График PACF используется для определения правильного значения q.

3. Порядок взятия разностей определяет, сколько раз операция взятия разностей выполняется на ряде, чтобы сделать его стационарным. Такие тесты, как ADF и KPSS, могут использоваться для определения того, является ли ряд стационарным, и помогают определить значение d.

2. Предварительная обработка: в зависимости от набора данных будут определены этапы предварительной обработки. Они могут включать создание временных отметок, преобразование dtype столбца даты/времени, превращение ряда в одномерный и т. д.

3. Преобразование ряда в стационарный. Чтобы удовлетворить требованиям алгоритма, необходимо сделать ряд стационарным. Этот этап будет включать проверку стационарности ряда и выполнение необходимых преобразований.

4. Определение значения d: для того, чтобы сделать ряд стационарным, количество выполнений операций взятия разности будет приниматься как значение d.

5. Создание графиков ACF и PACF: это самый важный шаг в реализации ARIMA. Графики ACF и PACF используются для определения входных параметров для нашей модели ARIMA.

7. Подгонка модели ARIMA: используя обработанные данные и значения параметров, которые мы рассчитали из предыдущих шагов, подгоняем модель ARIMA.

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

Хотя ARIMA является очень мощной моделью для прогнозирования данных временных рядов, процессы подготовки и настройки параметров в конечном итоге отнимают много времени. Перед реализацией ARIMA необходимо сделать ряд стационарным и определить значения p и q, используя графики, которые мы обсуждали выше. Auto ARIMA делает эту задачу очень простой, поскольку она устраняет шаги с 3 по 6. Ниже приведены шаги, которые вы должны выполнить для реализации Auto ARIMA:

2. Предварительная обработка данных: ввод должен быть одномерным, поэтому отбрасываем остальные столбцы.

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

Мы полностью обошли выбор p и q, как вы можете видеть. В следующем разделе мы будем реализовывать автоматическую ARIMA, используя тестовый набор данных.

Мы будем использовать набор данных International-Air-Passenger. Этот набор данных содержит ежемесячное общее количество пассажиров (в тысячах). Имеет две колонки — месяц и количество пассажиров. Вы можете скачать набор данных по этой ссылке.

Источник

Оцените статью