Классификация последовательных данных

Вопрос или проблема

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

Настройка следующая:
Фактический объект заполнен различными свойствами, но для разделения объектов и назначения их к классу необходимо смотреть на закономерность появления в течение года.
Поэтому я конвертирую объекты в массив из 0 и 1 с фиксированной длиной 366.

Пример:
Если объекты появляются 1-го и 3-го января, первые элементы последовательности будут выглядеть так:
[1, 0, 1, … ]

Таким образом, данные для каждого объекта будут последовательностью фиксированной длины 366 и могут выглядеть так:

1 2 3 5 6 365 366 Метка
0 1 1 0 1 0 1 A
1 1 1 0 0 0 1 A
1 1 1 0 1 0 1 B
0 1 0 0 0 0 1 C
0 0 0 0 1 0 1 A

Таким образом, цель состоит в том, чтобы ввести последовательности в модель для классификации их класса.

Первый вопрос:
Я пробовал классификацию по паттернам с помощью CNN и достиг точности до 80%. Но есть ли другие подходы к решению этой проблемы? Это кажется простой задачей, поэтому я бы ожидал простое решение.

Второй вопрос:
Допустим, я хотел бы определить только один из этих классов. Как должна выглядеть настройка? Просто входные данные этого класса?

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

По определению временных рядов, такие объекты могут варьироваться по длине, то есть по количеству точек. Так, например, в вашем сценарии могут быть годы, в которых 366 дней или 365, что усложняет моделирование.

Простое, но эффективное решение вашей проблемы, которое я заметил, выглядит следующим образом.$^\dagger$ Вы можете использовать $k$-ближайших соседей с мерой сходства выравнивания много к одному, такой как динамическое выравнивание по времени (DTW), для классификации нового объекта временного ряда, используя такую метрику. Классификатор очень прост для понимания: время обучения не требуется, новый экземпляр классифицируется путем обращения к вашим тренировочным данным для $k$ наиболее похожих временных рядов, а класс – это голосование большинства между $k$ классами найденных объектов (по алгоритму DTW).

Вышеупомянутое (одномерное) решение обсуждается в этой статье. Если вас интересуют подходы для многомерного случая, вы можете обратиться к этой ст статье, авторами которой являются те же авторы, что и в первой.

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


$^\dagger$ Я предполагаю, что у вас есть базовое понимание $k$-ближайших соседей.

Ответ или решение

Классификация последовательных данных: подходы и рекомендации

Введение

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

Классификация временных рядов

Как вы правильно заметили, ваша задача относится к категории одномерной классификации временных рядов. Это связано с тем, что ваши данные представляют собой одну переменную (наличие или отсутствие объекта) на временной оси.

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

  1. Сложные нейронные сети (CNN): Как вы уже опробовали, сверточные нейронные сети показывают хорошие результаты для классификации последовательных данных. Однако, существует множество других подходов, которые могут помочь вам улучшить точность.

  2. Методы на основе расстояний:

    • k-ближайших соседей (k-NN) с использованием Динамического Временного Извращения (DTW). Этот подход позволяет эффективно определять сходство между временными рядами, обеспечивая возможность классического голосования для определения класса нового объекта.
  3. Рекуррентные Нейронные Сети (RNN): Хотя CNN хорошо работают с пространственными аспектами данных, RNN лучше подходят дляcapturing временные зависимости. Используйте LSTM (Долгосрочную Краткосрочную Память) или GRU (Упрощенную Рекуррентную Сеть) для моделирования сложных динамических паттернов в ваших данных.

  4. Традиционные алгоритмы машинного обучения: Такие методы, как Деревья решений, Случайные леса или энсембл-методы (например, AdaBoost) также могут быть протестированы для классификации на основе заранее полученных признаков.

Подход для выбора одного класса

Если ваша цель — идентификация только одного класса, вы можете рассмотреть:

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

  • Метод One-Class SVM: Подход, который может быть использован для идентификации объектов, принадлежащих только одному классу. Он обучается на данных единственного класса, разделяя его от аномалий (других классов).

Заключение

Классификация последовательных данных — это область с множеством доступных методов и подходов. Ваши текущие эксперименты с CNN показывают хорошие результаты, однако стоит рассмотреть использование других методов, таких как k-NN с DTW или рекуррентные нейронные сети. Выбор подхода зависит как от ваших данных, так и от целей, которые вы хотите достичь. Помните, что важно протестировать несколько моделей и сравнить их результаты по метрикам производительности.

Оцените материал
Добавить комментарий

Капча загружается...