Я хотел бы знать, существует ли код для обучения сверточной нейронной сети для классификации временных рядов.
Я видел несколько недавних работ ( http://www.fer.unizg.hr/_download/repository/KDI-Djalto.pdf ), но я не уверен, существует ли что-то или я должен написать это самостоятельно.
Ответы:
Если вам нужно решение черного ящика с открытым исходным кодом, попробуйте взглянуть на Weka , библиотеку Java алгоритмов ML. Этот парень также использовал Covolutional Layers в Weka, и вы можете редактировать его классификационный код в соответствии с задачей классификации временных рядов.
Что касается собственного кодирования ... Я работаю над той же проблемой, используя библиотеку python, theano (я отредактирую этот пост со ссылкой на мой код, если я скоро его взломаю ). Вот полный список всех статей, которые я буду использовать, чтобы помочь мне после хорошего поиска в Интернете:
В качестве отправной точки вы можете отредактировать найденный здесь код, чтобы классифицировать его по разному количеству категорий, или отредактировать его от классификации к регрессии - я сделал это, удалив последний слой softmax и сделав только один выходной узел. Я обучил его на части функции, как
y=sin(x)
в качестве теста.источник
Вполне возможно использовать CNN для прогнозирования временных рядов, будь то регрессия или классификация. CNN хороши в поиске локальных шаблонов, и на самом деле CNN работают с предположением, что локальные шаблоны актуальны везде. Также свертка является хорошо известной операцией во временных рядах и обработке сигналов. Другое преимущество по сравнению с RNN состоит в том, что они могут быть очень быстрыми для вычисления, поскольку они могут быть распараллелены, в отличие от последовательной природы RNN.
В приведенном ниже коде я продемонстрирую пример, в котором можно предсказать спрос на электроэнергию в R с помощью керас. Обратите внимание, что это не проблема классификации (у меня не было удобного примера), но нетрудно изменить код для решения проблемы классификации (используйте вывод softmax вместо линейного вывода и перекрестную потерю энтропии).
Набор данных доступен в библиотеке fpp2:
Далее мы создаем генератор данных. Это используется для создания пакетов данных обучения и проверки, которые будут использоваться в процессе обучения. Обратите внимание, что этот код является более простой версией генератора данных, найденного в книге «Глубокое обучение с R» (и видеоверсия «Глубокое обучение с R в движении») из публикаций Мэннинга.
Далее мы указываем некоторые параметры, которые должны быть переданы в наши генераторы данных (мы создаем два генератора, один для обучения и один для проверки).
Параметр обратного просмотра - это то, как далеко в прошлом мы хотим посмотреть, и прогноз того, как далеко в будущем мы хотим предсказать.
Затем мы разбиваем наш набор данных и создаем два генератора:
train_dm <- dm [1: 15000,]
Далее мы создаем нейронную сеть со сверточным слоем и обучаем модель:
Наконец, мы можем создать некоторый код для прогнозирования последовательности из 24 точек данных, используя простую процедуру, объясненную в комментариях R.
и вуаля:
Не так уж плохо.
источник