Вопрос или проблема
Я часто слышал, что классификация временных рядов выполняется с использованием объединенных TCN и CNN с LSTM, утверждая, что CNN предоставляют информацию как о будущем, так и о прошлом, поскольку у вас уже есть вся информация за этот временной период. Для моего приложения существует отчетливая форма, и я хотел бы классифицировать, существует ли она или нет. Например, я хочу обнаружить, выглядит ли данные так или так
Конечно, в данных будет шум, и признак будет менее очевидным, что делает задачу достойной применения машинного обучения. Есть ли способ использовать это знание о том, что существует одна важная особенность (эта выпуклость), чтобы использовать другую архитектуру или делать что-то иначе?
Эта конкретная задача рассматривает паттерн по всем данным, т.е. паттерн не появится в пределах времени < -3 или времени > 3 для заданной кривизны.
Вы можете попробовать две модели :
- Простая сеть прямого распространения с числом входов = числу временных шагов (возможно, масштабируйте/сдвигайте данные так, чтобы всегда было одинаковое число временных шагов)
Это должно позволить обнаружить некоторые паттерны для классификации (например, f(0) должно быть меньше f(4))
- Одномерная LSTM с различными размерами временных шагов в каждом образце
Это должно научиться тому, что f(x) должна оставаться близкой к постоянной, уменьшаться, а затем увеличиваться и возвращаться к постоянной
Обе сети будут иметь сигмоид в выходном слое, поскольку это задача бинарной классификации.
Пример кода для LSTM: https://machinelearningmastery.com/sequence-classification-lstm-recurrent-neural-networks-python-keras/
Ответ или решение
Чтобы решить задачу классификации временных рядов с явными признаками, предлагаю рассмотреть несколько подходов, учитывающих вашу специфическую ситуацию, где необходимо обнаружить особую форму игрушечного сигнала, как представленное в ваших примерах.
Подход 1: Простая многослойная нейронная сеть (MLP)
-
Подготовка данных: Прежде всего, вам нужно будет собрать ваши временные ряды и предварительно обработать их. Это может включать нормализацию и сдвиг данных, чтобы они имели одинаковую длину и масштаб.
-
Архитектура сети:
- Используйте простую многослойную нейронную сеть с
n
входами, гдеn
— это количество временных шагов. Архитектура может состоять из одного скрытого слоя с достаточным количеством нейронов для обучения необходимых признаков. - Не забудьте добавить функцию активации, например, ReLU, на скрытых слоях и сигмоидную функцию активации на выходном слое для бинарной классификации.
- Используйте простую многослойную нейронную сеть с
-
Обучение модели: Разделите данные на тренировочную и тестовую выборки, а затем обучите модель, используя подходящий алгоритм, например Adam или SGD.
Этот подход позволит вам выявить некоторые паттерны в данных, такие как неравенство между значениями на разных временных шагах.
Подход 2: LSTM (долгая краткосрочная память)
-
Подготовка данных: Используйте разные размеры временных шагов в каждом образце, так как это позволяет LSTM лучше уловить зависимости во временных рядах.
-
Архитектура сети:
- Создайте однослойный LSTM, который принимает временной ряд в качестве входных данных. Рекомендуется использовать слои Batch Normalization и Dropout для регуляризации.
- В зависимости от сложности задачи можно добавлять дополнительные слои LSTM, чтобы улучшить извлечение характеристик.
-
Обучение модели: Как и в первом случае, необходимо разбить данные на наборы и обучить модель с использованием подходящего оптимизатора. Следите за переобучением и используйте метод досрочной остановки.
Дополнительные рекомендации:
-
Учитывайте шум: Для улучшения устойчивости модели к шуму вы можете применить методы очистки данных, такие как фильтрация или преобразование Фурье.
-
Выбор метрик: Убедитесь, что вы выбираете подходящие метрики для оценки качества модели, такие как точность, полнота и F1-мера.
-
Гиперпараметры: Экспериментируйте с количеством скрытых нейронов, количеством слоев, размером пакета и скоростью обучения.
-
Аугментация данных: Если ваши данные ограничены, можно рассмотреть возможность аугментации — создание небольших вариаций ваших временных рядов, чтобы увеличить объем обучающего набора.
-
Визуализация результатов: После обучения модели важно визуализировать предсказания на тестовых данных, чтобы лучше понять, где модель работает хорошо, а где — не очень.
Заключение
Оба предложенных подхода могут быть адаптированы в зависимости от ваших данных и требований. Выбор между MLP и LSTM будет зависеть от сложности ваших временных рядов и потребностей в памяти (долгосрочные зависимости). Учитывая явные признаки в ваших данных, оба метода могут быть эффективными, и рекомендуется провести эксперименты с каждым из них, чтобы определить, какой из них работает лучше для вашей конкретной задачи.
С учетом вашего случая, вам может быть полезно использовать доступные примеры кода, такие как тот, который предоставлен в вашем сообщении. Удачи в реализации вашей модели классификации!