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

Мы начнем с импорта NumPy для научных вычислений, Matplotlib для построения графиков и Pandas для помощи в загрузке и работе с нашими наборами данных.

Глубокое обучение - для экспертов, экспертами. Мы используем наш многолетний опыт, чтобы еженедельно доставлять в ваш почтовый ящик лучшие ресурсы для глубокого обучения.

Загрузка набора данных

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

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

Столбец Open - это начальная цена, а столбец Close - окончательная цена акции в определенный торговый день. Столбцы High и Low представляют самые высокие и самые низкие цены за определенный день.

Масштабирование функций

Из предыдущего опыта работы с моделями глубокого обучения мы знаем, что нам необходимо масштабировать наши данные для достижения оптимальной производительности. В нашем случае мы воспользуемся Scikit- Learn MinMaxScaler и масштабируем наш набор данных до чисел от нуля до единицы.

Создание данных с временными шагами

LSTM ожидают, что наши данные будут в определенном формате, обычно в виде трехмерного массива. Мы начинаем с создания данных за 60 временных шагов и преобразования их в массив с помощью NumPy. Затем мы конвертируем данные в массив трехмерных измерений с X_train выборками, 60 отметками времени и одной функцией на каждом этапе.

Сборка LSTM

Для сборки LSTM нам нужно импортировать пару модулей из Keras:

  1. Sequential для инициализации нейронной сети
  2. Dense для добавления плотно связанного слоя нейронной сети
  3. LSTM для добавления слоя долгосрочной краткосрочной памяти
  4. Dropout для добавления выпадающих слоев, предотвращающих переоснащение

Мы добавляем слой LSTM, а позже добавляем несколько Dropout слоев, чтобы избежать переобучения. Мы добавляем слой LSTM со следующими аргументами:

  1. 50 units, который является размерностью выходного пространства
  2. return_sequences=True , который определяет, следует ли возвращать последний вывод в выходной последовательности или полную последовательность.
  3. input_shape как форма нашего тренировочного набора.

При определении Dropout слоев мы указываем 0,2, что означает, что 20% слоев будут отброшены. После этого мы добавляем слой Dense, который определяет выход 1 единицы. После этого мы компилируем нашу модель с помощью популярного Adam optimizer и устанавливаем потери как mean_squarred_error. Это позволит вычислить среднее квадратов ошибок. Затем мы настраиваем модель для работы в 100 эпох с размером пакета 32. Имейте в виду, что в зависимости от характеристик вашего компьютера это может занять несколько минут.

Прогнозирование будущих запасов с помощью тестового набора

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

Чтобы предсказать будущие цены на акции, нам нужно сделать несколько вещей после загрузки в тестовый набор:

  1. Объедините обучающий набор и тестовый набор на оси 0.
  2. Установите временной шаг как 60 (как показано ранее).
  3. Используйте MinMaxScaler для преобразования нового набора данных
  4. Измените форму набора данных, как это было сделано ранее

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

Построение результатов

Наконец, мы используем Matplotlib для визуализации результата прогнозируемой цены акции и реальной цены акции.

Из графика мы видим, что реальная цена акции выросла, в то время как наша модель также предсказывала, что цена акции вырастет. Это ясно показывает, насколько мощны LSTM для анализа временных рядов и последовательных данных.

Заключение

Есть несколько других методов прогнозирования цен на акции, такие как скользящие средние, линейная регрессия, K-ближайшие соседи, ARIMA и Prophet. Это методы, которые можно протестировать самостоятельно и сравнить их производительность с Keras LSTM. Если вы хотите узнать больше о Keras и глубоком обучении, вы можете найти мои статьи об этом здесь и здесь.



Обсудите этот пост на Reddit и Hacker News.

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

Независимая редакция, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по обработке данных и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить лучшие модели машинного обучения.