У меня есть набор данных, состоящий из временных рядов (8 точек) примерно с 40 измерениями (поэтому каждый временной ряд равен 8 на 40). Соответствующий результат (возможные результаты для категорий) равен 0 или 1.
Каков наилучший подход для разработки классификатора для временных рядов с несколькими измерениями?
Моя первоначальная стратегия состояла в том, чтобы извлечь элементы из этих временных рядов: среднее, стандартное, максимальное изменение для каждого измерения. Я получил набор данных, который использовал для обучения RandomTreeForest. Зная об общей наивности этого, и после получения плохих результатов я сейчас ищу более совершенную модель.
Мои выводы следующие: классифицировать ряды для каждого измерения (используя алгоритм KNN и DWT), уменьшить размерность с помощью PCA и использовать окончательный классификатор по многомерным категориям. Будучи относительно новым для ML, я не знаю, полностью ли я ошибаюсь.
источник
Ответы:
Вы на правильном пути. Посмотрите на расчет еще нескольких функций, как во временной, так и в частотной области. До тех пор, пока количество образцов >> количество функций, вы вряд ли оденете. Есть ли литература по подобной проблеме? Если так, то это всегда обеспечивает отличную отправную точку.
Попробуйте повысить классификатор дерева, например, xgboost или LightGBM. Они, как правило, легче настраивают гиперпараметры и обеспечивают хорошие результаты с параметрами по умолчанию. Классификаторы «Случайный лес» и «Повышенное дерево» могут возвращать важность функций, поэтому вы можете видеть, какие функции имеют отношение к проблеме. Вы также можете попробовать удалить функции, чтобы проверить наличие ковариации.
Самое главное, что если ваши результаты неожиданно плохие, убедитесь, что ваша проблема правильно определена. Проверьте вручную результаты, чтобы убедиться, что в вашем конвейере нет ошибок.
источник
Если вы находитесь в Python, есть пара пакетов, которые могут автоматически извлекать сотни или тысячи функций из ваших временных рядов, соотносить их с вашими метками, выбирать наиболее важные и обучать модели для вас.
https://github.com/blue-yonder/tsfresh
https://github.com/rtavenar/tslearn
источник
Вы можете добавить больше функций в свой набор данных, как показано ниже.
Вы можете попробовать пакет nolds, если ваши данные относятся к сильно нелинейному процессу.
max, min, среднее значение, перекос, эксцесс, и, если возможно, некоторые скользящие характеристики.
Я работаю над чем-то похожим, и я задал соответствующий вопрос .
источник
Я согласен с Яном ван дер Вегтом, что стандартизация (например, [-1, 1]) или нормализация N (0, 1) в сочетании с функцией активации может быть очень важна для нейронных сетей. Я бы проверил диссертацию Pichaid Varoonchotikul: «Прогнозирование паводков с использованием искусственных нейронных сетей» для входов и выходов ANN. У этого есть очень интересные предостережения. Во всяком случае, я использую, чтобы сначала попробовать без, но когда результаты неудовлетворительные, я использую для испытаний с обоими. Не уверен, что это поможет, но я бы проверил пакет R TSclust и соответствующие документы. Авторы очень любезны, и они помогут вам найти конкретные модели для этого. Они эксперты по анализу временных рядов! Удачи!
источник