Вопрос о LSTM, использующем python для прогнозирования цен на акции

#python #tensorflow #keras #lstm

#python #tensorflow #keras #lstm

Вопрос:

Я успешно скопировал код из учебника и реализовал базовую сеть LSTM для прогнозирования цен на акции. Руководство здесь: https://www.thepythoncode.com/article/stock-price-prediction-in-python-using-tensorflow-2-and-keras

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

Предположим, что столбцы функций [«дата», «цена», «объем»] Затем я добавил дополнительный столбец функций «nextDayPrice» с данными из «следующей строки».

Очевидно, что эти данные не будут доступны с «моделью прогнозирования цен на акции», но я хотел протестировать ее, чтобы увидеть, приблизилась ли точность модели к 100% (как я и ожидал)

Учитывая, что одним из входных данных является точная цена на следующий день (непрактично), не должна ли точность модели приближаться к 100%?

Модель, похоже, не улучшается. Я что-то здесь упускаю?

Ответ №1:

Вам нужно добавить еще один ввод в вашу модель. Недостаточно просто добавить функцию в dataset.

Если ваши метки совпадают с входными данными — точность должна составлять 100%.

Комментарии:

1. Спасибо за ваш отзыв. Я считаю, что я добавил эту функцию к входным данным, но буду тестировать дальше. В другой попытке проверить этот вопрос я добавил фиктивные данные, увеличивая цену на 1 доллар в день. Итак, день 1 = 1 доллар, день 300 = 300 долларов и т. Д… Интересно, что модель иногда приближается к 100% точности, но не достигает ее. После 50 эпох модель фактически начинает ухудшаться, а затем возвращается к 100%, но по-прежнему не предсказывает «цену» следующего дня на 100% точно. Это функция LTSM, предназначенная для того, чтобы не перегружать? Очевидно, что большинство моделей не пытаются предсказать базовую линейную функцию.

2. LSTM не предназначен для предотвращения переобучения. Как вы думаете, почему большинство моделей не пытаются предсказать линейную функцию? Если вы не добавите нелинейную активацию — все модели будут линейными

3. В том, как я его построил, есть уровень отсева с коэффициентом отсева 0,4. Похоже, это объясняет неспособность модели достичь 100% точности в моем примере, где train_y (target) включен в качестве входных данных. Это звучит правильно?

4. Да, отсев в некоторой степени предотвращает переоснащение

5. Спасибо! Для других, читающих это, я прочитал о регуляризации и использовании dropout с входными и скрытыми слоями здесь: machinelearningmastery.com /…