Анализ временных рядов с использованием современных информационных технологий

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

Рубрика Экономика и экономическая теория
Вид дипломная работа
Язык русский
Дата добавления 23.09.2018
Размер файла 2,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Табл. 3. Результаты теста Грейнджера

Признак

Значимые лаги

US_rig_count

1-2

crude_oil_prod_Libya

1-4

petr_cons_other_OECD

1

Petr_stocks_OECD

2-5

Petr_stocks_US

2-5

US_crude_petr_import

1-5

MSCI_EM

1-3

CRB

3-5

US_ind_prod

1-4

futures_spread_1y

1-5

futures_spread_2y

1

futures_spread_3y

1-2

На основе проверки гипотез на статистически значимую причинно-следственную связь для каждого из прогнозов (на 1,2 и 3 месяца) были отобраны факторы, которые оказывают значимое влияние на нефтяные цены на соответствующем лаге, что потенциально может улучшить качество прогноза.

Алгоритм случайного леса для отбора признаков

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

1. Сгенерируем случайную подвыборку с повторением размером n из обучающей выборки. Таким образом, в сгенерированную выборку какие-то наблюдения могут войти несколько раз, а какие-то не войти вовсе.

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

3. Дерево строится до полного исчерпания подвыборки и не подвергается процедуре прунинга (англ. pruning -- отсечение ветвей)

4. Результирующим прогнозом всего ансамбля будет усреднённый прогноз по всем деревьям для каждого наблюдения.

Особенностью данного алгоритма является то, что каждое дерево из случайного леса обучается на бутстрапированной выборке, в которую попадают не все объекты, а только часть. Таким образом, всегда остается некоторая доля объектов выборки, которые не выборки не использовались при обучении этого дерева, а значит их можно использовать для оценки обобщающей способности случайного леса. Такой подход (выборка) носит название out-of-bag и позволяет оценивать качество леса без использования отложенной выборки или кросс-валидации. Формула для оценки качества случайного леса из N деревьев в рамках подхода out-of-bag имеет вид:

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

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

1. Вычислим ошибку (OOB) на out-of-bag выборке для дерева

2. Переставим местами значения j-го признака (превратим его в шумовой признак)

3. Вычислим ошибку на out-of-bag выборке с переставленными значениями признака

4. Вычислим информативность признака: -

5. Усредним полученный критерий информативности по всем деревьям

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

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

Табл. 4. Значимые признаки, выделенные с помощью алгоритма случайного леса

Период прогнозирования

Значимые признаки

1 месяц

US_crude_petr_import

US_rig_count

VIX

crude_oil_prod_USA

futures_spread_1y

futures_spread_3y

2 месяца

CRB

RUB

US_crude_petr_import

VIX

crude_oil_prod_USA

futures_spread_1y

futures_spread_2y

futures_spread_3y

3 месяца

CNY

CRB

RUB

US_crude_oil_stocks_excl_SPR

US_crude_petr_import

US_ind_prod

crude_oil_prod_USA

futures_spread_1y

Текстовые признаки

В качестве третьего блока признаков было решено использовать новостные признаки, полученные с помощью парсинга статей The New York Times по запросу «crude oil prices». Изначально данные представляли собой основную мысль статьи (abstract), выраженную в нескольких предложениях, а также дату публикации этой статьи. Всего было собрано и агрегировано более 5000 статей за период с 01/2000 по 12/2017.

Для извлечения признаков из данного набора текста, необходимо было провести ряд преобразований:

· Удаление ненужных символов (знаки препинания, цифры и пр.)

· Замена регистра всех слов на нижний

· Создание списка слов на основе текста статьи

· Стеммирование - выделение основы слова (с целью унификации)

· Удаление стоп-слов, которые не несут в себе никакой информации (предлоги, частицы, союзы)

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

bp, amoco, say, profit, doubl, fourth, quarter, rise, oil, price, cost, cut, profit, rose, billion, millin, year, earlier

Несмотря на изменение формы слов, не сложно понять, какой теме посвящена данная статья. После создания списка слов для каждой статьи необходимо было отнести данную статью к той или иной теме. Для решения данной задачи использовался алгоритм LDA (Latent Dirichlet Allocation), который предназначен для создания кластеров из слов, что равносильно определению тематик. LDA - это вероятностная модель темы, предполагающая, что документы представляют собой совокупность тем, и что каждое слово в документе связано с темами документа. Таким образом, зная распределение слов для каждой темы и распределение слов в документе, можно определить к какой теме относится тот или иной документ.

Рис. 21. Описание алгоритма LDA

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

Табл. 5. Вероятность принадлежности статей к различным темам

Тема 1

Тема 2

Тема 3

Статья 1

70%

65%

61%

Статья 2

49%

63%

59%

Статья 3

34%

86%

79%

Статья 4

18%

30%

52%

В данной работе опытным путем (с целью сохранения смысла) были подобраны следующие параметры:

· num_topics - число тем, выявленных алгоритмом

· alpha (document-topic density) - чем выше, тем к большему числу тем будет отнесена статья

· eta (topic-word density) - чем выше, тем больше слов будет включать в себя тема

В результате, было выделено 8 основных тем, которыми в целом можно охарактеризовать все статьи, посвященный нефти и нефтяным ценам:

Табл. 6. Ключевые слова для каждой из выделенных тем

Тема

Ключевые слова

1

Energy sources

gasoline, energy, fuel, nature

2

Trade

trade, import, good, deficit, sale

3

Investments

stock, market, wall street, investor, bank, interest rate, federal reserve rate

4

Oil as commodity

oil, price, crude, barrel, OPEC, product

5

Oil companies

company, profit, billion, ceo, bp, exxon, shell

6

World economy

world, country, Russia, China, Iran, Iran, export, Middle East

7

US Election and US Politics

president, elections

8

Market reaction

index, point, DJ, S&P500, percent, drop

Библиотека pyLDAvis в Python позволяет визуализировать полученные темы в виде окружностей. Как видно на рисунке, приведенном ниже, некоторые из тем пересекаются между собой, что подразумевает под собой смысловую схожесть тем. В частности, пересекаются такие темы, как «oil as commodity» и «investments», что вполне логично, так как финансовый рынок напрямую связан с и непосредственно реагирует на события, происходящие на рынке нефти. Аналогично связаны между собой темы «energy sources» и «world economy». Справа на столбчатой диаграмме для каждой из тем отображаются наиболее релевантные слова, отобранные на основе метрик distinctiveness и saliency.

Рис. 22. Распределение тем статей (слева) и топ-30 релевантных слов для темы «oil companies» (справа)

Distinctiveness (отчётливость) представляет собой расстояние Кульбака-Лейблера между условной вероятностью темы в зависимости от того или иного слова и предельной вероятностью темы. Иначе это можно представить, как вероятность, что любое случайное слово принадлежит теме k. Чем выше данный показатель для того или иного слова, тем выше меньше данное распределено по темам (тем оно более специфичное).

Saliency (заметное положение) слова w взвешивает его частоту на distinctiveness.

По сравнению с ранжированием по частоте p(w) ранжирование по показателю p(w)D(w) будет штрафовать слова, встречающиеся в сразу нескольких темах, поскольку они будут иметь низкую отчетливость. Одновременно с этим, слова, которые являются хорошими предикторами одной темы и, соответственно, имеют высокую отчётливость, будут получать больший вес для данной темы.

Так как в данной работе целью является долгосрочное прогнозирование цен, было решено использовать агрегированную информацию о новостном фоне на нефтяном рынке за весь месяц. Как было упомянуто ранее, каждая статья характеризовалась одной из 8 тем. После присвоения каждой из статей определенной темы, была произведена группировка по дате. В результате каждый из месяцев характеризовался числом совокупных упоминаний той или иной темы. На основании этого были посчитаны как абсолютные упоминания каждой из тем за каждый месяц, так и относительные.

3.2 Описание дизайна прогнозирования

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

3.2.1 Алгоритм прогнозирования

В первую очередь, стоит отметить, что прогнозирование на n месяцев вперед может быть осуществлено с помощью нескольких подходов. Первый подход заключается в том, что для каждого шага прогнозирования (1, 2 и 3 месяца) строится отдельная модель. В данном случае, если мы хотим построить модель, прогнозирующую значение нашей целевой переменной, например, на 1 месяц вперед в период t+1, мы обучаем ее на выборке, где значение зависимой переменной является ln(Yt+2/Yt+1), что есть не что иное как месячный темп прироста, сдвинутый назад на n периодов. В качестве независимых (экзогенных) переменных используется лаговое значение целевой переменной ln(Yt+1/Yt), а также значения других факторов, известных в период t+1. В данном случае прогноз на каждой итерации в общем виде будет выглядеть следующим образом:

prediction(t+1) = model(obs(t), obs(t-1), ..., obs(t-n))

prediction(t+2) = model(obs(t+1), obs(t), ..., obs(t-n+1))

Аналогично обстоит дело и с другими шагами прогнозирования (на 2 и 3 месяца вперед). Другой подход заключается в рекурсивном прогнозировании, когда мы обучаем модель делать прогноз на один шаг вперед, а полученный на каждой итерации прогноз используем для прогноза на следующем шаге. В таком случае, хорошо будет работать связка ARIMA+ XGBoost, когда экзогенные факторы, прогнозируются с помощью ARIMA и впоследствии используются для прогноза целевой переменной на следующем шаге с помощью бустинга.

prediction(t+1) = model(obs(t), obs(t-1), ..., obs(t-n))

prediction(t+2) = model(prediction(t+1), obs(t), ..., obs(t-n))

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

3.2.2 Кросс-валидация

Рис. 23. Процедура кросс-валидации

Второй особенностью данного исследования является подбор оптимальных параметров моделей. Как правило, если та или иная модель имеет ряд параметров, характеризующих архитектуру алгоритма и особенность обучения, всю выборку делят на 3 подвыборки: обучающую, валидационную и тестовую. На обучающей выборке тренируют n моделей, где n - число возможных значений всех параметров (в заранее установленных рамках). После этого на валидационной выборке находят оптимальные параметры модели: выбирается модель с такими параметрами, ошибка на валидационной выборке у которой минимальная. Далее у лучшей модели проверяется обобщающая спососбность. Это делается для того, чтобы исключить возможность переобучения модели (подгонка под обучающую выборку). Если качество модели устраивает, она используется в дальнейшем для предсказаний на других данных.

Тем не менее, данный подход обладает одним недостатком. В случае небольшого числа наблюдений, разбиение исходных данных на 3 подвыборки без потери качества невозможно - модели не будет хватать данных для поиска закономерностей в данных. Данную проблему позволяет решить так называемая k-fold кросс валидация. Суть данного подхода заключается разбиении выборки на обучающую и тестовую в соотношении 1/k-1. Таким образом, на каждой из k итераций часть выборки отводится на обучение, а на оставшейся выборке проверяется качество. После этого уже другая часть выборки становится обучающей и тестовой. Качество модели определяется путем усреднения метрики качества на каждой из итераций.

Рис. 24. Определение качества модели на кросс-валидации

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

Рис. 25. Некорректная процедура кросс-валидации для временных рядов

Решением является процесс кросс-валидации, учитывающий временную структуру ряда. При данном подходе обучение модели начинается на небольшом отрезке временного ряда, от начала до некоторого t, после чего делается прогноз на t+n шагов вперед и считается ошибка. Далее обучающая выборка увеличивается до t+n значения, и осуществляется прогноз с t+n до t+2?n. Так продолжается до тех пор, пока не будет достигнуто последнее доступное наблюдение.

Рис. 26. Корректная процедура кросс-валидации для временных рядов

Рис. 27. Оценка качества модели на кросс-валидации

3.2.3 Выбор метрики качества

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

1. Метрики, оценивающие абсолютный уровень ошибок. К таким метрикам относятся:

Каждая из метрик обладает рядом особенностей:

· R2: в основном используется для нестохастических рядов (не интерпретируема). [-?;1]

· MAE: придает одинаковый вес большим и малым ошибкам; используется для рядов со схожими значениями (интерпретируема). [0;+?]

· MSE: придает больший вес больших ошибкам (не интерпретируема). [0;+?]

· RMSE: квадратный корень из MSE (не интерпретируема). [0;+?]

· RMSLE: больше штрафует за ошибки на малых значениях ряда (не интерпретируема). [0;+?]

2. Метрики, оценивающие относительный уровень ошибок. К ним относятся:

Каждая из метрик также обладает рядом особенностей:

· MAPE: используется для рядов со схожими значениями (интерпретируема). [0;+?]

· RMSPE: гибрид метрик RMSE и MAPE; уделяет больше внимания больших ошибкам (не интерпретируема). [0;+?]

· RMSLPE: больше штрафует за ошибки на малых значениях ряда (не интерпретируема). [0;+?]

· SMAPE: подходит для рядов с широким диапазоном значений, меньше штрафует за over-forecasting (не интерпретируема). [0;200]

При выборе метрики качества, стоит учесть две особенности:

· Рассматриваемый ряд (цена нефти) имеет как маленькие значения, так и большие

· Очень важно предсказывать значительные изменения, то есть придавать большим ошибкам прогноза больший вес.

Ввиду данных особенностей было решено остановиться на метрике MSE.

3.3 Результаты прогнозирования

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

3.3.1 Эконометрические модели

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

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

Метод Хольта и Хольта-Винтерса ожидаемо показали очень хороший результат при прогнозировании на 1 шаг вперед. Однако при 2 и 3 месячном прогнозе, простое экспоненциальное сглаживание оказалось более предпочтительным подходом. Одной из причин данного результата является особенность реализации данных алгоритмов в языке программирования R. Так экспоненциальное сглаживание, представленное в R в виде функции ets() позволяет автоматизировать подбор параметров модели. В то же время модели двойного и тройного экспоненциального сглаживания в R требовали подбора оптимальных параметров вручную, что в конечном счете сказалось на качестве прогноза.

Табл. 7. Качество прогнозов эконометрических моделей

Модель

MSE_1

MSE_2

MSE_3

Хольта

31.22745

52.03547

84.80884

Хольта-Винтерса

35.891

69.9734

77.57461

Экспоненциальное сглаживание

38.25112

46.30478

59.69006

Случайное блуждание

37.98675

47.99622

62.28563

3.3.2 ARIMA

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

Рис. 28. Нестационарность во временных рядах

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

Стационарность можно определить, как графчески, так и с помощью различных тестов, самым популярным из которых является критерий Дики-Фуллера. Как видно на графике внизу, целевой ряд является нестационарным, поскольку:

· в ряде присутствует тренд;

· величина изменений ряда меняется со временем (гетероскедастичность);

· критерий Дики-Фуллера свидетельствует о нестационарности ряда (нулевая гипотеза о наличии единичного корня не отвергается).

Рис. 29. Разложение временного ряда на основные компоненты

Сезонная компонента свидетельствует о наличии сезонности в ряде. Однако построение графика типа «box plot» по каждому месяцу и кварталу говорит о том, что сезонность не является значимой.

Рис. 30. Анализ наличия сезонности во временном ряде

Для приведения ряда к стационарному существует ряд методов:

· Преобразование Бокса-Кокса

Для рядов с меняющейся во вермени дисперсией можно использовать стабилизирующие преобразования, такие как преобразования Бокса-Кокса:

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

· Дифференцирование ряда

Дифференцирование ряда подразумевает под собой преход к попарным разностям его средних значений:

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

После взятия первых разностей и трансформации Бокса-Кокса можно сделать вывод, что ряд стал стационарным. Таким образом, мы можем использовать данный ряд для дальнейшего прогноза.

Рис. 31. Приведение временного ряда к стационарному

Далее стоял выбор оптимальных параметров модели. Ранее нами был определен параметр d, который равен 1, поскольку мы брали первые разности (дифференцирование первого порядка). Для определения p и q (AR и MA компоненты, соответственно) обычно используются два диагностических графика:

· Функция автокорреляции (ACF): График показывает корреляции наблюдений с их собственными лагами.

· Частичная функция автокорреляции (PACF): График показывает корреляции для данных со значениями лагов, которые не учитываются за предыдущими запаздывающими значениями наблюдений.

Рис. 32. Коррелограммы ACF и PACF

По выше приведенным графикам удалось подобрать начальные приближения параметров модели:

· p = 1

· q = 1

· d = 1

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

В результате была подобрана модель с параметрами (1, 1, 0), показывающая минимальный критерий Акаике.

Рис. 33. Статистика итоговой модели ARIMA

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

Рис. 34. Анализ остатков итоговой модели

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

Рис. 35. Алгоритм построения модели ARIMA вручную (слева) и автоматически на языке R (справа)

Как и для всех моделей было построено 3 прогноза: на 1, 2 и 3 месяца вперед. В результате были получены следующие значения метрики MSE:

Табл. 8. Прогнозное качество модели ARIMA

Прогноз на n месяцев вперед

MSE

1

28.68795

2

38.37668

3

49.42612

3.3.3 XGBoost

Итоговая реализация данного алгоритма была осуществлена с помощью Python: данный язык имеет как библиотеку для работы с XGBoost, так и библиотеку для поиска оптимальных параметров. В результате были получены следующие результаты прогноза:

Табл. 9. Прогнозное качество XGBoost

Алгоритм (признаки)

MSE_1

MSE_2

MSE_3

xgb (лаги)

27.9838

78.5828

138.3555

xgb (факторы Granger + их лаги)

22.3248

41.0597

109.9390

xgb (факторы RF + их лаги)

23.8431

61.7765

113.9452

xgb (лаги + новостные факторы)

25.7619

67.8310

138.2000

Результаты получились весьма противоречивыми. С одной стороны, алгоритм хорошо справляется с прогнозом на 1 месяц вперед, демонстрируя минимальную ошибку среди всех алгоритмов. С другой стороны, ошибка при прогнозе на 2 и 3 месяца вперед возрастает в несколько раз. Это можно объяснить тем, что ввиду особенностей построения обучающей выборки алгоритм никак не использует прогнозное значение на 1 шаге для прогноза на 2 и 3 шагах. Значения независимой переменной также не экстраполируются на последующие периоды.

3.3.4 LSTM

Алгоритм LSTM в данной работе был реализован с помощью библиотеки keras (Python). В отличие от алгоритма XGBoost, построение LSTM предполагает ряд особенностей. В первую очередь, на вход данной сети должны подаваться нормализованные (отмасштабированные) признаки, т.к. от этого очень зависит качество алгоритма. Во-вторых, в данной библиотеке не предусмотрен поиск по сетке, в следствие чего определение оптимальной архитектуры сети происходит вручную. В качестве параметров модели использовались следующие характеристики сети:

· Количество слоев

· Количество нейронов в каждой сети

· Функция активации

· Функция потерь

· Алгоритм оптимизации

· Dropout

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

Табл. 10. Прогнозное качество LSTM

Алгоритм (признаки)

MSE_1

MSE_2

MSE_3

LSTM (лаги)

31.2409

88.7058

191.0504

LSTM (факторы Granger)

26.8312

63.1463

117.7987

LSTM (факторы RF)

30.1258

71.9953

139.0506

LSTM (лаги + новостные факторы)

27.7797

63.2044

111.3856

3.3.5 Ансамбль XGBoost и ARIMA

В результате применения алгоритмов градиентного бустинга и нейронных сетей оказалось, что они обладают относительно слабой предсказательной силой на 2-х и 3-х месячном интервале. Исключением стала модель XGBoost, прогнозирующая на 2 месяца вперед и использующая факторы, отобранные в соответствии с тестом Грейнджера. Ввиду данного факта было решено изменить подход к прогнозированию, используя тандем ARIMA+XGBoost. Опишем суть данного подхода. Для прогнозирования на 2 месяца вперед на 1-м шаге делается прогноз на 1 месяц вперед с помощью XGBoost, который показал наилучший результат среди всех моделей при прогнозировании с шагом в 1 месяц. Далее значения независимых факторов экстраполируются с помощью модели ARIMA. После этого на следующем шаге используются полученные прогнозы целевой переменной и независимых факторов, на основе которых вновь делается прогноз на 1 месяц. В результате получается прогноз на 2 месяца.

Табл. 11. Прогнозное качество ансамбля XGBoost+ARIMA

Алгоритм

MSE_1

MSE_2

MSE_3

xgb (факторы Granger + их лаги) + ARIMA

-

36.3635

83.3841

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

Табл. 12. Прогнозное качество лучших моделей

Алгоритм

MSE_1

MSE_2

MSE_3

xgb (факторы Granger + их лаги)

22.3248

xgb (факторы Granger + их лаги) + ARIMA

36.3635

ARIMA

49.42612

Заключение

В данной работе были рассмотрены основные подходы к прогнозированию нефтяных цен. Для этого был проведен анализ предметной области и определены факторы, оказывающие значимое влияние на нефтяные цены с помощью различных подходов. На основе обзора литературы часть наиболее перспективных методов была реализована на практике с помощью языков программирования Python и R.

Данная работа отличается от предыдущих тем, что в нем использовались современные алгоритмы, такие как градиентные бустинг (XGBoost) и нейронная сеть с долгой краткосрочной памятью (LSTM), которые пока что не нашли широкого применения в академической среде и до сих пор не были достаточно протестированы на качество прогнозирования временных рядов. Также в данной работе был проведен текстовый анализ с целью получения дополнительного блока информации. В ряде ситуаций данная информация помогла значительно улучшить качество прогноза. В итоге, наилучшие результаты показали такие методы как ARIMA, XGBoost, а также их комбинация.

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

Список используемой литературы

1. Abramson, B., & Finizza, A. (1991). Using belief networks to forecast oil prices. International Journal of Forecasting, 7(3), 299-315.

2. Abramson, B., & Finizza, A. J. (1991). A belief network implementation of target capacity utilization. In Energy Disruptions: Lessons, Opportunities & Prospects, 13th IAEE North American Conference, 1991. International Association for Energy Economics.

3. Abramson, B. (1993). A belief network-based system that forecasts the oil market by constructing producer behavior. In Energy & the Environment, 15th IAEE North American Conference, 1993. International Association for Energy Economics.

4. Alizadeh, A., & Mafinezhad, K. (2010, August). Monthly Brent oil price forecasting using artificial neural networks and a crisis index. In Electronics and Information Engineering (ICEIE), 2010 International Conference On (Vol. 2, pp. V2-465). IEEE.

5. Aloui, C., & Jammazi, R. (2009). The effects of crude oil shocks on stock market shifts behaviour: A regime switching approach. Energy Economics, 31(5), 789-799.

6. Cabedo, J. D., & Moya, I. (2003). Estimating oil price `Value at Risk'using the historical simulation approach. Energy Economics, 25(3), 239-253.

7. Chiroma, H., Abdulkareem, S., & Herawan, T. (2015). Evolutionary Neural Network model for West Texas Intermediate crude oil price prediction. Applied Energy, 142, 266-273.

8. Doрrul, H. G., & Soytas, U. (2010). Relationship between oil prices, interest rate, and unemployment: Evidence from an emerging market. Energy Economics, 32(6), 1523-1528.

9. Fattouh, B. (2011). An anatomy of the crude oil pricing system.

10. Friedman, J. H. (2001). Greedy function approximation: a gradient boosting machine. Annals of statistics, 1189-1232.

11. Gumus, M., & Kiran, M. S. (2017, October). Crude oil price forecasting using XGBoost. In Computer Science and Engineering (UBMK), 2017 International Conference on (pp. 1100-1103). IEEE.

12. Haidar, I., Kulkarni, S., & Pan, H. (2008, December). Forecasting model for crude oil prices based on artificial neural networks. In Intelligent Sensors, Sensor Networks and Information Processing, 2008. ISSNIP 2008. International Conference on (pp. 103-108). IEEE.

13. He, K., Xie, C., Chen, S., & Lai, K. K. (2009). Estimating VaR in crude oil market: A novel multi-scale non-linear ensemble approach incorporating wavelet analysis and neural network. Neurocomputing, 72(16-18), 3428-3438.

14. Jain, A., & Ghosh, S. (2013). Dynamics of global oil prices, exchange rate and precious metal prices in India. Resources Policy, 38(1), 88-93.

15. Khashman, A., & Nwulu, N. I. (2011, January). Intelligent prediction of crude oil price using Support Vector Machines. In Applied Machine Intelligence and Informatics (SAMI), 2011 IEEE 9th International Symposium on (pp. 165-169). IEEE.

16. Lai KK, He K, Yen J. Modeling VaR in crude oil market: a multi scale nonlinear ensemble approach incorporating wavelet analysis and ANN. Lect Notes Comput Sci 2007;4487:554-61.

17. Lizardo, R. A., & Mollick, A. V. (2010). Oil price fluctuations and US dollar exchange rates. Energy Economics, 32(2), 399-408.

18. Malliaris, A. G., & Malliaris, M. (2009, June). Time series and neural networks comparison on gold, oil and the euro. In Neural Networks, 2009. IJCNN 2009. International Joint Conference on(pp. 1961-1967). IEEE.

19. Morana, C. (2013). Oil price dynamics, macro-finance interactions and the role of financial speculation. Journal of banking & finance, 37(1), 206-226.

20. Morana, C. (2001). A semiparametric approach to short-term oil price forecasting. Energy Economics, 23(3), 325-338.

21. Mirmirani, S., & Cheng Li, H. (2004). A comparison of VAR and neural networks with genetic algorithm in forecasting price of oil. In Applications of Artificial Intelligence in Finance and Economics (pp. 203-223). Emerald Group Publishing Limited.

22. Park, J., & Ratti, R. A. (2008). Oil price shocks and stock markets in the US and 13 European countries. Energy economics, 30(5), 2587-2608.

23. Pan, H., Haidar, I., & Kulkarni, S. (2009). Daily prediction of short-term trends of crude oil prices using neural networks exploiting multimarket dynamics. Frontiers of Computer Science in China, 3(2), 177-191.

24. Pearson, K. (1905). The problem of the random walk. Nature, 72(1867), 342.

25. Sims, C. A. (1986). Are forecasting models usable for policy analysis?. Quarterly Review, (Win), 2-16.

26. Wang, J., Xu, W., Zhang, X., Bao, Y., Pang, Y., & Wang, S. (2010). Data mining methods for crude oil market analysis and forecast. Data Mining in Public and Private Sectors: Organizational and Government Applications: Organizational and Government Applications, 184.

27. Yu, L., Wang, S., & Lai, K. K. (2008). Forecasting crude oil price with an EMD-based neural network ensemble learning paradigm. Energy Economics, 30(5), 2623-2635.

Электронные ресурсы:

1. Моделирование тем новостных статей с помощью LDA [URL]

http://shichaoji.com/tag/topic-modeling-python-lda-visualization-gensim-pyldavis-nltk/

2. Визуализация тем новостных статей на языке Python [URL]

http://nbviewer.jupyter.org/github/bmabey/pyLDAvis/blob/master/notebooks/pyLDAvis_overview.ipynb

3. LSTM - сети долгой краткосрочной памяти [URL]

https://habr.com/company/wunderfund/blog/331310/

4. Визуализация тем новостных статей на языке Python [URL]

https://www.oreilly.com/ideas/introduction-to-lstms-with-tensorflow

5. Introduction to LSTMs with TensorFlow [URL]

/https://www.oreilly.com/ideas/introduction-to-lstms-with-tensorflow

6. Сайт The New York Times [URL]

https://www.nytimes.com/

7. Методы отбора признаков [URL]

http://www.machinelearning.ru/wiki/images/9/96/RysmyatovaCourseFile.pdf

8. Подходы к прогнозированию временных рядов [URL]

https://machinelearningmastery.com/multi-step-time-series-forecasting/

Приложение № 1. Изначальные факторы

Обозначение

Фактор

brent

Среднемесячная цена на нефть марки Brent

US_rig_count

Число буровых установок в США

nonOPEC_liq_sup

Предложение жидкостных видов топлива странами не-ОПЕК

OPEC_petr_sup

Предложение нефтепродуктов со стороны ОПЕК

Europe_liq_sup

Предложение жидкостных видов топлива странами Европой

US_liq_sup

Предложение жидкостных видов топлива странами США

crude_oil_prod_Iran

Добыча сырой нефти в Иране

crude_oil_prod_Iraq

Добыча сырой нефти в Ираке

crude_oil_prod_Libya

Добыча сырой нефти в Ливии

crude_oil_prod_Nigeria

Добыча сырой нефти в Нигерии

crude_oil_prod_SA

Добыча сырой нефти в Саудовской Аравии

crude_oil_prod_Ven

Добыча сырой нефти в Венесуэле

crude_oil_prod_OPEC

Добыча сырой нефти ОПЕК

crude_oil_prod_USA

Добыча сырой нефти в США

OPEC_crude_oil_prod_capacity

Производственный мощности добычи нефти ОПЕК

World_liq_fuels_cons

Потребление жидкостных видов топлива в мире

China_liq_fuels_cons

Потребление жидкостных видов топлива в Китае

India_liq_fuels_cons

Потребление жидкостных видов топлива в Индии

US_liq_fuels_cons

Потребление жидкостных видов топлива в США

OECD_liq_fuels_cons

Потребление жидкостных видов топлива странами ОЭСР

non_OECD_liq_fuels_cons

Потребление жидкостных видов топлива странами не-ОЭСР

petr_cons_US

Потребление нефтепродуктов США

petr_cons_other_OECD

Потребление нефтепродуктов не-ОЭСР

petr_cons_OECD

Потребление нефтепродуктов ОЭСР

Total_D

Мировой спрос на нефть

Total_S

Мировое предложение нефти

net_inv_withdrawals_world

Чистое изъятие нефтяных запасов в мире

net_inv_withdrawals_US50

Чистое изъятие нефтяных запасов в США

net_inv_withdrawals_other_OECD

Чистое изъятие нефтяных запасов в странах ОЭСР

net_inv_withdrawals_non_OECD

Чистое изъятие нефтяных запасов в странах не-ОЭСР

US_crude_oil_stocks_excl_SPR

Запасы сырой нефти в США за исключением стратегических запасов

US_crude_oil_stocks_and_petr_products_excl_SPR

Запасы сырой нефти и нефтепродуктов в США за исключением стратегических запасов

US_SPR

Стратегические запасы нефти США

Petr_stocks_OECD

Запасы нефтепродуктов в странах ОЭСР

Petr_stocks_US

Запасы нефтепродуктов в США

Petr_stocks_other_OECD

Запасы нефтепродуктов в странах помимо ОЭСР

US_crude_petr_import

Импорт сырой нефти и нефтепродуктов США

China_crude_import

Импорт сырой нефти Китаем

India_crude_import

Импорт сырой нефти Индией

SP_500

Индекс S&P 500

DXY

Индекс доллара

EUR

Курс евро/доллар

RUB

Курс рубль/доллар

CNY

Курс юань/доллар

Gold

Индекс золота

VIX

Индекс волатильности

MSCI_EM

Индекс MSCI для развивающихся рынков

MSCI_World

Индекс мирового MSCI

MSCI_ACWI

Индекс MSCI для мира и развивающихся рынков

US_10YT

Казначейские облигации США (10 лет)

EU_10YT

Казначейские облигации Евпропы (10 лет)

FED_Funds_Rate

Ставка ФРС

CRB

Индекс CRB

US_ind_prod

Промышленное производство в США

China_ind_prod

Промышленное производство в Китае

Euruzone_ind_prod

Промышленное производство в Евозоне

futures_spread_1y

Однолетний спред нефтяных фьючерсов

futures_spread_2y

Двухлетний спред нефтяных фьючерсов

futures_spread_3y

Трехлетний спред нефтяных фьючерсов

is_worldwide_event

Индикатор общемирового события

topic_1

Число упоминаний новостной темы №1

topic_2

Число упоминаний новостной темы №2

topic_3

Число упоминаний новостной темы №3

topic_4

Число упоминаний новостной темы №4

topic_5

Число упоминаний новостной темы №5

topic_6

Число упоминаний новостной темы №6

topic_7

Число упоминаний новостной темы №7

topic_8

Число упоминаний новостной темы №8

topic_sum

Совкупное число новостей за месяц

topic_1_rel

Относительная частота новостной темы №1

topic_2_rel

Относительная частота новостной темы №2

topic_3_rel

Относительная частота новостной темы №3

topic_4_rel

Относительная частота новостной темы №4

topic_5_rel

Относительная частота новостной темы №5

topic_6_rel

Относительная частота новостной темы №6

topic_7_rel

Относительная частота новостной темы №7

topic_8_rel

Относительная частота новостной темы №8

year

Год наблюдения

month

Месяц наблюдения

quarter

Квартал наблюдения

brent_1m_log

Темп прироста нефтяных цен

brent_1m_log_lag1

Лаг одномесячного темпа прироста нефтяных цен (1 месяц)

brent_1m_log_lag2

Лаг одномесячного темпа прироста нефтяных цен (2 месяца)

brent_2m_log

Двухмесячный темп прироста нефтяных цен

brent_2m_log_lag

Лаг двухмесячного темпа прироста нефтяных цен

Приложение №2. Значимость признаков в соответствии с алгоритмом случайного леса

Рис. 36. Значимость признаков для прогноза цен на 1 месяц вперед согласно алгоритма Random Forest

Рис. 37. Значимость признаков для прогноза цен на 2 месяца вперед согласно алгоритма Random Forest

Рис. 38. Значимость признаков для прогноза цен на 3 месяца вперед согласно алгоритма Random Forest

Приложение № 3. Значимость признаков в текстовом анализе

Рис. 39. Наиболее характерные наборы слов для каждой из новостных тем Размещено на Allbest.ru

...

Подобные документы

  • Анализ, расчет и построение исходных динамических рядов признака-функции и признака-фактора. Расчет показателей вариации динамических рядов. Количественное измерение тесноты связи признака-функции и признаков-факторов методом парной корреляции.

    курсовая работа [92,7 K], добавлен 24.09.2014

  • Экономико-статистический анализ временных рядов развития строительства Тюменской области. Выявление и измерение сезонных колебаний. Корреляция рядов динамики и проведение регрессионного анализа показателей. Экстраполяция по мультипликативной схеме.

    курсовая работа [521,5 K], добавлен 20.01.2016

  • Инвестиционная деятельность как объект исследования. Состав и роль инвестиции в основной капитал. Первичный, корреляционный и регрессионный анализ данных. Статистический анализ временных рядов. Методика построения диаграмм рассеивания между переменными.

    курсовая работа [790,9 K], добавлен 03.11.2014

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

    контрольная работа [45,4 K], добавлен 12.10.2013

  • Характеристика состояния экономики РФ. Альтернативы инвестиционной политики РФ. Экономико-статистический анализ инвестиций РФ. Индексный анализ прямых инвестиций в РФ. Анализ динамики инвестиций с использованием временных рядов.

    курсовая работа [586,7 K], добавлен 12.09.2006

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

    курсовая работа [659,4 K], добавлен 13.09.2015

  • Оценка совокупности на предмет её однородности. Построение ранжированного и интервального рядов распределения. Анализ рядов динамики методами укрупнения интервалов и скользящей средней, аналитическое выравнивание по уравнению прямой и параболы.

    курсовая работа [99,8 K], добавлен 10.09.2014

  • Факторный анализ прибыли от продаж продукции (работ). Оценка экономических результатов предприятия, выявление факторов, влияющих на конечный результат. Предложения по совершенствованию экономических результатов на примере ООО "Бройлер ЭМ" г. Москва.

    курсовая работа [71,5 K], добавлен 07.03.2011

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

    контрольная работа [16,7 K], добавлен 13.08.2010

  • Понятие и основные этапы разработки прогноза. Задачи анализа временных рядов. Оценка состояния и тенденций развития прогнозирования на основе анализа временных рядов СУ-167 ОАО "Мозырьпромстрой", практические рекомендации по его совершенствованию.

    курсовая работа [378,6 K], добавлен 01.07.2013

  • Характеристика факторов, влияющих на уровень цен на информационные продукты. Взаимосвязь динамики спроса и предложения. Оценка экономической эффективности использования информационных технологий. Классификация продукции и услуг в сетевой экономике.

    контрольная работа [431,4 K], добавлен 23.01.2012

  • Статистический анализ рядов динамики. Показатели изменения уровней ряда динамики. Связный анализ рядов динамики. Корреляционный анализ рядов динамики. Элементы интерполяции и экстраполяции. Встроенные функции MS Excel для анализа рядов динамики.

    курсовая работа [1,0 M], добавлен 17.12.2015

  • Использование эконометрических моделей, построенных на основе временных рядов, для прогнозирования перспектив бизнеса и экономики. Общий вид модели авторегрессии первого порядка. Характеристика модели скользящего среднего. Идентификация модели ARMA.

    курсовая работа [2,0 M], добавлен 13.09.2015

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

    курсовая работа [644,0 K], добавлен 13.01.2014

  • Анализ экономических и социальных показателей целлюлозно-бумажной отрасли России. Исследование состояния экспорта и импорта продукции в отрасли. Определение факторов, влияющих на развитие целлюлозно-бумажной промышленности в мире и перспектив развития.

    курсовая работа [232,1 K], добавлен 30.03.2018

  • Предмет, объект, цель, содержание и задачи анализа хозяйственной деятельности в современных условиях. Построение логических и математических моделей факторных систем. Построение факторной модели прибыли и расчет общего прироста результативного показателя.

    контрольная работа [14,8 K], добавлен 28.01.2010

  • Аспекты развития рынка информационных услуг, его современное состояние на примере России. Становление и развитие информационных технологий экономики. Анализ основных факторов воздействия на рынок информационных услуг. Расчет многофакторной модели.

    дипломная работа [484,5 K], добавлен 22.12.2010

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

    контрольная работа [33,8 K], добавлен 19.03.2012

  • Основные показатели численности населения и его размещения по Калужской области. Построение ранжированного и интервального рядов распределения по одному группировочному факторному признаку. Анализ типических групп по показателям в среднем по совокупности.

    курсовая работа [73,6 K], добавлен 11.10.2010

  • Анализ влияния показателей экстенсивности и интенсивности на изменение объема продукции. Определение выполнения плана и влияния изменения количества и цены продукции с использованием индексного метода. Анализ динамики основных производственных фондов.

    контрольная работа [111,0 K], добавлен 16.12.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.