Классифицировать многомерный временной ряд

9

У меня есть набор данных, состоящий из временных рядов (8 точек) примерно с 40 измерениями (поэтому каждый временной ряд равен 8 на 40). Соответствующий результат (возможные результаты для категорий) равен 0 или 1.

Каков наилучший подход для разработки классификатора для временных рядов с несколькими измерениями?

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

Мои выводы следующие: классифицировать ряды для каждого измерения (используя алгоритм KNN и DWT), уменьшить размерность с помощью PCA и использовать окончательный классификатор по многомерным категориям. Будучи относительно новым для ML, я не знаю, полностью ли я ошибаюсь.

AugBar
источник
То, что вы делаете, это довольно хороший подход. Сколько образцов у вас есть в вашем наборе данных?
Касра Маншаи
У меня есть около 500 000 временных рядов (напоминая, что каждый временной ряд - это 8 временных
отметок
Вы пробовали использовать только 320 функций raw? 320 функций - это не много для 500 000 образцов
Ян ван дер Вегт
@Jan van der Vegt: я попробовал этот метод с использованием нейронной сети, но результаты не были настолько убедительными - я использовал необработанные данные без какой-либо предварительной обработки. Какие операции я должен применить заранее в моих сырых материалах с 320 функциями для подачи в классификатор?
Август
1
В случае нейронной сети нормализация вашего ввода важна, в зависимости от диапазона ваших функций, которые могут иметь значение. Но я бы просто вставил необработанные функции в RF и посмотрел бы, насколько хорошо это работает, нужно меньше настраивать, чтобы понять, сможете ли вы извлечь из этого что-нибудь легко
Ян ван дер Вегт

Ответы:

5

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

Попробуйте повысить классификатор дерева, например, xgboost или LightGBM. Они, как правило, легче настраивают гиперпараметры и обеспечивают хорошие результаты с параметрами по умолчанию. Классификаторы «Случайный лес» и «Повышенное дерево» могут возвращать важность функций, поэтому вы можете видеть, какие функции имеют отношение к проблеме. Вы также можете попробовать удалить функции, чтобы проверить наличие ковариации.

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

mpotma
источник
6

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

https://github.com/blue-yonder/tsfresh

https://github.com/rtavenar/tslearn

Доктор Дж
источник
2

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

  1. Вы можете попробовать пакет nolds, если ваши данные относятся к сильно нелинейному процессу.

  2. max, min, среднее значение, перекос, эксцесс, и, если возможно, некоторые скользящие характеристики.

Я работаю над чем-то похожим, и я задал соответствующий вопрос .

Анураг Упадхьяя
источник
1

Я согласен с Яном ван дер Вегтом, что стандартизация (например, [-1, 1]) или нормализация N (0, 1) в сочетании с функцией активации может быть очень важна для нейронных сетей. Я бы проверил диссертацию Pichaid Varoonchotikul: «Прогнозирование паводков с использованием искусственных нейронных сетей» для входов и выходов ANN. У этого есть очень интересные предостережения. Во всяком случае, я использую, чтобы сначала попробовать без, но когда результаты неудовлетворительные, я использую для испытаний с обоими. Не уверен, что это поможет, но я бы проверил пакет R TSclust и соответствующие документы. Авторы очень любезны, и они помогут вам найти конкретные модели для этого. Они эксперты по анализу временных рядов! Удачи!

Рафа М. Мас
источник