2016-10-06 2 views
7

Я пытаюсь поиграть с простыми предсказаниями временных рядов. Учитывая количество входов (1Min ticks), Net должен попытаться предсказать следующий. Я тренировался 3 сеть с различными настройками, чтобы проиллюстрировать мою проблему:Простой тренинг по временным рядам MLP дает результаты неопределенной средней линии

enter image description here

Справа вы можете увидеть 3 тренера МЛП - случайно названа и цвета, с некоторыми учебными статами. Слева - график прогнозов, сделанных этими сетями, и фактические данные валидации в белом. Этот сюжет был сделан путем прохождения каждого тика данных валидации (белый), подачи 30 | 4 | 60 (Nancy | Kathy | Wayne) предыдущих тиков в сеть и построения прогноза, который он будет прогнозировать на месте текущего тика.

настройки

многослойный перцептрон (в Нанси | настройки Wayne | Kathy):

Геометрия: 2x30 | 4 | 60 входных узлов -> 30 | 4 | 60 узлов скрытого слоя -> 2 выхода
Количество эпох: 10 | 5 | 10
курс обучения: 0,01
Momentum: 0,5 | 0,9 | 0,5
Нелинейность: Устраните
Loss: Squared Error

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

Быстрые ссылки на наиболее важных (на мой взгляд) кодовых частей:

А вот полные, более или менее, источники:

  • Data used for training в формате - дата; открытой, высокий, низкий, близко, объем - только дата, высокие и низкие используются
  • MLP module
  • Gui модуль релевантные MLP interaction parts

ответ

2

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

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

Другая часть рекомендации, я предлагаю изменить то, что вы кормите в NN. В общем, я рекомендую применять масштабирование и нормализацию.Например, не кормите NN сырой ценой. Измените его одним из следующих способов (эти предложения не написаны на камне): 1. подать в NN процентах от изменения цены. 2. Если вы загружаете значения NN 30 и хотите предсказать два значения, то вычесть из 30 + 2 значений минимум из всех 32 значений и попытаться предсказать 2 значения, но исходя из 30. Затем просто добавьте к результату минимум из 32 значений.

Не кормите только даты в NN. Он говорит NN ничего о предсказании. Вместо этого укажите дату и время NN как категориальное значение. Категорически означает, что вы преобразовываете дату и время в более чем одну запись. Например, вместо предоставления NN 2016/09/10 вы можете рассмотреть некоторые из следующих.

  1. год продажи, скорее всего, не даст никакой полезной информации. Таким образом, вы можете опустить год торговли.
  2. 09 обозначает количество месяцев или около сентября. У вас есть выбор: подавать в NN число месяца, но я настоятельно рекомендую вам сделать 12 входов в NN, а в случае янвского - дать сначала вход NN 1 и нули для остальных одиннадцати. Таким образом, вы будете тренировать свою сеть, чтобы отделить торговый период в январе с торгового периода в июне или декабре. Также я предлагаю сделать категорический ввод дня недели таким же образом. Потому что торговля в понедельник отличается от торговли в пятницу, особенно в день NFP.
  3. В течение нескольких часов я предлагаю использовать кодировку с периодами 6-8 часов. Это поможет вам обучить сеть принимать во внимание различные торговые сессии: Азия, Франкфурт, Лондон, Нью-Йорк.
  4. Если вы решили подавать в NN некоторые индикаторы, то для некоторых индикаторов учитывайте термометрическое кодирование. Как правило, для таких индикаторов, как ADX, требуется кодирование термометра.

Согласно вашему вопросу в комментариях о том, как использовать минимум, я приведу упрощенный пример. Предположим, вы хотите использовать для обучения NN следующие цены закрытия для eur/usd:
1.1122, 1.1132, 1.1152, 1.1156, 1.1166, 1.1173, 1.1153, 1.1150, 1.1152, 1.1159. Вместо размера окна для обучения 30 Я продемонстрирую обучение с размером окна 3 (просто для простоты) и размером окна прогноза 2.
В общей сложности данные, используемые для прогнозирования, равны 3. Вывод будет равен 2. Для обучения мы будем использовать первые 5 значений, или:
1,1122, 1,1132, 1,1152, 1,1156, 1,1166
затем еще 5 значений или:
1,1132, 1,1152, 1,1156, 1,1166, 1,1173
В первом окне минимальное значение составляет: 1,1122.
Затем вычитаете из каждого значения значение 1.1122:
0, 0.002, 0.003, 0.0033, 0.0034. В качестве входных данных вы подаете в NN 0, 0,002, 0,003. В качестве вывода из NN вы ожидаете 0,0033, 0,0034. Если вы хотите, чтобы он учился намного быстрее, подайте NN нормализованные и масштабированные значения. Затем каждый раз вам нужно выполнить де-нормализацию и де-масштабирование входов.

Другой способ, подать в NN процент изменений цены. Дайте мне знать, если вам нужен образец.

И еще один важный совет. Не используйте только NN для совершения торговли. Никогда!!! Лучший способ сделать это - придумать какую-то систему с некоторым процентом успеха. Например, 30%. Затем используйте NN, чтобы увеличить успешный процент успеха до 60%.

Я также хочу предоставить вам также пример кодирования термометра для некоторых индикаторов.Рассмотрим индикатор ADX и следующие примеры:.

а> 10> 20> 30> 40
б. > 10> 20> 30> 40
Пример обеспечивает ввод в NN с ADX более 10. Затем Пример B обеспечивает ввод в NN с ADX более 20. Затем
Вы можете изменить кодировку термометр для обеспечивая входы для стохастичности. Как правило, стохастическое значение имеет значения в диапазонах 0-20 и 80-100 и в редких случаях в диапазоне 20 - 80. Но, как всегда, вы можете попробовать и посмотреть.

+0

Спасибо :) Да, у меня многократное красное время, когда я использую повторяющийся, но я решил попробовать что-то более «базовое» для начала. Итак, из вашего ответа кажется, что MLP ведет себя так, как ожидалось, с этой средней линией, учитывая данные, которые я кормлю? 2. Не могу понять, что вы подразумеваете под этим вычитанием минимума ... munimum чего? Может быть, это просто формулировка, но можете ли вы объяснить это немного подробнее? 3. На самом деле я не кормлю любые даты в NN, только серию цен. И данные тренировки были только 1M клещей сентября. Я не уверен, что есть время в годы подачи данных. –

+0

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

+0

Макс Яри, пожалуйста, взгляните на обновленный ответ –

Смежные вопросы