Как рассчитать наклон данных зашумленных временных рядов - PullRequest
2 голосов
/ 15 августа 2010

У меня есть процесс, который использует несколько источников данных о ценах в реальном времени с рынка форекс и выдает 2 потока данных временных рядов в качестве выходных данных. Выходные данные являются шумными (то есть не гладкими, как sin или cos), и оба потока связаны между значениями от 0 до 100.

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

Ответы [ 4 ]

0 голосов
/ 26 января 2017

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

Для каждой точки данных мы взяли среднее и стандартное отклонение 5 предыдущих (в максимальном диапазоне дат - 21 день, я думаю).Затем мы измерили расстояние от текущего значения со средним за предыдущие 5, выраженное в стандартных отклонениях.Если точка была более чем на 2 стандартного отклонения выше или ниже среднего, мы использовали среднее значение вместо фактического значения при расчете линии тренда.

Если произошел большой скачок или падение, которое оказалось постоянным, шаг уменьшения пика со временем корректировался бы и начинал рассматривать аномальные значения как «новый нормальный».

0 голосов
/ 17 августа 2010

Предложение газонокосилки звучит неплохо, но есть несколько дополнительных моментов, которые вы должны рассмотреть:

  • Во-первых, насколько я понимаю вопрос, есть болеедве возможные метки:

    • сигнал 1 вверх;сигнал 2 вниз
    • сигнал 2 вверх;сигнал 1 вниз
    • и т. д.
  • Во-вторых, ручная маркировка данных будет очень утомительной, поскольку, скорее всего, вам потребуется много данных для обучения, тестированияи подтвердите ваши модели. Механический турок может помочь вам с этой задачей

  • Даже если вы воспользуетесь советами газонокосилки, я немного сгладлю данные перед тренировкой

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

0 голосов
/ 08 октября 2010

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

0 голосов
/ 15 августа 2010

Вы могли бы применить супервизированное машинное обучение.

Особенности: значения последних n точек данных. Метки: -1 уменьшается +1 увеличивается

Теперь вам нужно только несколько помеченных образцов. Это даст следующую таблицу (здесь n = 5):

# t-4, t-3, t-2, t-1, t, label
#-----------------------------
54, 43, 98, 1, 45, +1
21, 12,  5, 98, 4, +1
 6, 78, 45, 65, 37 -1
...

теперь возьмите несколько готовых к использованию библиотек машинного обучения (например, WEKA) и обучите их этому. В зависимости от алгоритма вы также получите измерение достоверности результата. Сколько маркированных учебных образцов вам понадобится предсказать сложно. Для начала попробуйте 100, но их также может быть больше 1000. В возможностях есть и большой потенциал. Может быть, это работает лучше, если вы используете не абсолютные значения, а различия.

Обозначенные тренировочные данные могут быть помечены вручную. Но для прогнозирования рынка часто можно сделать это автоматически на основе исторических данных.

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


Другим подходом будет подгонка кривой к вашим данным и ее производная. Чем больше вы знаете о данных, тем сильнее будет этот подход. Например, если у вас есть хорошее представление о вероятностной модели, производящей шум, вы можете получить «оптимальное» соответствие (максимальная вероятность и т. Д.). Если вы знаете что-то о вашем базовом сигнале (тот, который вы пытаетесь измерить), это тоже помогает (линейно ли? Квадратично ?, libschiz cont.?. Bounded ?, ...).

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

...