Анализ и прогнозирование временных рядов


Источник информации: http://www.spellabs.ru/DivisionProducts/OLAP/prediction.aspx


    Spellabs time series использует весь доступный набор исторических данных для выработки параметров модели. Используя обученную модель, система формирует прогноз на заданный пользователем период. Входными данными для прогноза служит набор значений ряда за некоторые (определенные системой) предыдущие периоды. Модель учитывает глобальный тренд, периодические составляющие, периоды влияния исторических данных на прогнозируемое значение, а также использует оригинальный алгоритм составления групп однородных исторических данных, для каждой из которых вычисляется собственная функция прогнозирования.

Алгоритм анализа и прогнозирования временных рядов

    Предварительная обработка
    - Фильтрация ряда на "выбросы": замена больших и малых значений ряда, вероятность появления которых мала (меньше заданного значения), на среднее значение ряда.
    - Сглаживание ряда: методом скользящего среднего значения ряда в каждой точке усредняются по предыдущим значениям.

    Приведение ряда к стационарному виду
    - Выделение линейного тренда методом наименьших квадратов.
    - Спектральный анализ ряда методом дискретного преобразования Фурье и последующее выделение наиболее ярко выраженных периодических составляющих.

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

    Регрессионный анализ ряда
    Основой для регрессионного анализа служат значения смещений, соответствующих максимальным значениям корреляции исходного и смещенных рядов. Строится зависимость значений ряда в каждой точке от прошлых значений ряда, соответствующих полученным смещениям. Регрессионный анализ ряда производится одним из следующих способов:
    - Алгоритм spellabs regression clustering, построенный на регрессионном анализе с последующей кластеризацией: зависимость каждого прогнозируемого значения от прошлых значений ряда аппроксимируется одной из K линейных функций. Для каждого значения выбирается та функция из множества, которая аппроксимирует значение лучше других. Численным итерационным (градиентным или Ньютона) методом значение функции ошибки аппроксимации минимизируется на множестве всех семейств, состоящих из K линейных функций. Каждому вектору прошлых значений, используемому для прогнозирования последующего значения, приписывается кластер, соответствующей номеру функции из множества K, которая наилучшим образом аппроксимирует прогнозируемое значение. При прогнозировании значения ряда сначала составляется вектор прошлых значений для которого определяется ближайший вектор прошлых значений с известным кластером. Номеру этого кластера соответствует одна из K функций от прошлых значений, которая выбирается для прогнозирования. Алгоритм spellabs regression clustering является оригинальным.
    - Кластеризация с последующим регрессионным анализом: методом K-средних определяются центры "плотности" векторов исторических данных (по которым строится регрессия). Для каждого полученного кластера определяются значения коэффициентов линейной регрессии, наилучшим образом аппроксимирующей предсказываемое значение. При прогнозировании значения ряда сначала определяется к какому кластеру принадлежит вектор прошлых данных, а затем, на основании этого, вычисляется прогнозируемое значение как результат функции регрессии, соответствующей данному кластеру. Можно использовать одну из реализаций описанного алгоритма:
        - Центры кластеров нормируются по евклидовой норме, т.е. кластеры находятся на границе окружности единичной длины.
        - Кластеры произвольно распределены в пространстве.
    - Регрессионный анализ с последующей кластеризацией: зависимость каждого прогнозируемого значения от прошлых значений ряда аппроксимируется одной из K линейных функций. Для каждого значения выбирается та функция из множества, которая аппроксимирует значение лучше других. Численным итерационным (градиентным или Ньютона) методом значение функции ошибки аппроксимации минимизируется на множестве всех семейств, состоящих из K линейных функций. Каждому вектору прошлых значений, используемому для прогнозирования последующего значения, приписывается кластер, соответствующей номеру функции из множества K, которая наилучшим образом аппроксимирует прогнозируемое значение. При прогнозировании значения ряда сначала составляется вектор прошлых значений для которого определяется ближайший вектор прошлых значений с известным кластером. Номеру этого кластера соответствует одна из K функций от прошлых значений, которая выбирается для прогнозирования. Алгоритм spellabs regression clustering является оригинальной разработкой компании spellabs.

    Тестирование
    Тестирование алгоритма spellabs regression clustering на реальных данных продаж книг через интернет-магазин дало следующий результаты ежедневного прогнозирования на месяц вперед.
    - Суммарная ошибка прогноза на месяц - менее 5% от месячного объема продаж.
    - Средняя ежедневная ошибка прогноза за месячный период - менее 30%.