Интересные результаты от LSTM RNN: запаздывающие результаты для данных поезда и проверки - PullRequest
0 голосов
/ 08 ноября 2018

В качестве введения в RNN / LSTM (без сохранения состояния) я тренирую модель с последовательностями из 200 дней предыдущих данных (X), включая такие вещи, как ежедневное изменение цены, ежедневное изменение объема и т. Д., А также для меток / Y изменение цены в% от текущей цены к цене за 4 месяца. В основном я хочу оценить направление рынка, а не быть на 100% точным. Но я получаю странные результаты ...

Когда я тестирую свою модель с данными обучения, я замечаю, что выходные данные модели идеально подходят по сравнению с фактическими данными, они просто отстают на точно 4 месяца:

enter image description here

Когда я сдвигаю данные на 4 месяца, вы видите, что они идеально подходят.

enter image description here

Я, конечно, могу понять, почему данные тренировок были бы очень близки, поскольку они видели все это во время тренировок - но почему 4-месячная задержка?

То же самое происходит с данными проверки (обратите внимание на область, которую я выделил красной рамкой для дальнейшего использования):

enter image description here

Время смещенное:

enter image description here

Это не так близко, как тренировочные данные, как вы ожидаете, но все же слишком близко на мой вкус - я просто не думаю, что это может быть настолько точным (см. Небольшую подсказку в красном прямоугольнике в качестве примера). Я думаю, что модель действует как наивный предсказатель, я просто не могу понять, как / почему она это делает.

Чтобы сгенерировать эти выходные данные из данных проверки, я ввел последовательность из 200 временных шагов, но в последовательности данных нет ничего, что указывало бы, что будет изменение цены в% через 4 месяца - оно полностью отсоединено, поэтому как оно так точно? 4-месячное отставание, очевидно, является еще одним показателем того, что что-то здесь не так, я не знаю, как это объяснить, но я подозреваю, что эти два взаимосвязаны.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Я пытался объяснить наблюдение, основываясь на некоторой общей базовой концепции:

  1. Если вы не предоставите набор входных данных X с задержкой по времени (tg с задержкой, где k - временные шаги), то в основном вы будете кормить LSTM такой же, как сегодняшняя цена закрытия, чтобы предсказать такую ​​же сегодняшнюю цену закрытия. ... на этапе обучения. Модель будет (слишком подходящей) и будет вести себя точно так, как ответ уже известен (утечка данных)

  2. Если Y - это прогнозируемое процентное изменение (т. Е. X * (1 + Y%) = будущая цена за 4 месяца), прогнозируемая текущая стоимость Yvalue действительно является будущим дисконтированным на Y% поэтому прогнозируемое значение будет иметь 4-месячный сдвиг

0 голосов
/ 09 ноября 2018

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

Учитывая, что рынки обычно движутся в пределах маржи 0-3% (плюс или минус) в течение 4-месячного периода, это означало бы, что мои прогнозы всегда будут близко отражать текущую цену, только с 4-месячным лагом.

Таким образом, на каждой дате прогнозируемый результат пересматривался, поэтому модельный ряд никогда не отклонялся бы далеко от фактического; это было бы то же самое, но в пределах 0-3% (плюс или минус).

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

...