01.12.2022

BERT для анализа настроений — прогнозирование новостей для тенденций фондового рынка

1 min read

Одним из наиболее важных факторов, влияющих на тренд фондового рынка, являются новости. Положительные и отрицательные новости могут стать спусковым крючком для прогнозирования цен на фондовом рынке. Для построения автоматической торговой системы требуется сигнал от новостей для входа в систему. Эта информация нужна не только торговой системе, но и отдельным трейдерам для анализа.
В этом проекте используется модель BERT — одна из самых современных моделей глубокого обучения в обработке естественного языка для разработки инструмента для анализа новостей. Он анализирует новости и выдает их по двум классам — позитивные / нейтральные и негативные новости.
Этот проект покажет, как разработать модель NLP для понимания новостей, касающихся тренда фондового рынка (положительный / нейтральный тренд и отрицательный тренд).
Набор данных
Набор данных этого проекта ссылается на «Sun, J. (2016, август). Daily News for Stock Market Prediction, Version 1. Получено из Kaggle. Набор данных, который объединяет новости из 25 источников и тенденции цен на фондовых рынках за каждый день.
Исследование данных
1. Данные за период с 2018-08-08 по 2016-07-01.
2. Имеется 1 989 выборок данных.
3. Источником данных является 25 источников (топиков).
4. Данные разделены на 2 группы (0 и 1), где 0 означает, что цена на фондовом рынке на момент закрытия выросла или осталась неизменной, а 1 — цена на фондовом рынке на момент закрытия торгов снизилась.
Предварительная обработка данных
Исходный набор данных — это файл .csv. Pandas (фреймворк для обработки данных) рассматривается как инструмент для предварительной обработки данных. Он используется для извлечения данных CSV, удаления неожиданного слова и сортировки / разделения данных в формате, который модели машинного обучения могут быть интерпретированы (входные данные и данные меток).
Для предварительной обработки текста модель BERT уже содержит процесс встраивания слов. Это означает, что нам не нужно заниматься фичингом данных. Итак, мы можем напрямую передавать текстовые данные в предтренировочную модель.
Алгоритм
В этом проекте предполагается использовать модель BERT (ссылка). Предварительно подготовленная модель вызывается из TensorFlow Dev (ссылка). Однако мы добавляем один уровень в конце модели BERT в качестве уровня классификации.

На раннем этапе разработки модель испытывала две проблемы (1) низкая оценка точности и (2) чрезмерная подгонка (разрыв в точности обучающих и тестовых данных составляет около 50%).
Модель была улучшена за счет добавления слоя пакетной нормализации для повышения точности модели и добавления исключения для решения проблемы чрезмерной подгонки.
Результат и обсуждение
Во время обучения модели точность обучающих данных увеличивается, тогда как для тестовых данных точность немного колеблется. Однако в целом точность тестовых данных осталась прежней. В конечном состоянии (эпоха 30) точность модели обучающих данных составляет 87,30%, а невидимых данных (тестовых данных) — 51,51%.

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

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