2

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

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

+2

Возможно, вы можете попробовать использовать LOESS-сглаживание http://en.wikipedia.org/wiki/Local_regression – nico

+2

Не стоит спрашивать об этом на [сайте статистического анализа] (http://stats.stackexchange.com) - есть справедливая бит машинного обучения, анализ временных рядов и т. д. – walkytalky

+0

Определенно далеко. Вам необходимо создать движущееся окно наименьших квадратов регрессии, которое также генерирует значения p для статистической значимости для наклона. Если p-значение меньше произвольного значения альфа (скажем, 0,05), то наклон значителен, и вы можете сказать, что он «круто» положителен или отрицателен. Какую программу или язык программирования вы используете? Майкрософт Эксель? Рубин? Это поможет мне дать вам очень хороший ответ. – dpott197

ответ

0

Вы можете применить сверхмощное обучение машин.

Характеристики: значения последних n данные точки. Ярлыки: -1 descreasing +1 увеличение

Теперь вам нужно всего лишь несколько меченых образцов Это даст таблицу, как это (здесь п = 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.?. Ограниченный ?, ...).

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

0

Lawnmower's suggestion звучит хорошо, но есть несколько дополнительных очков вы должны рассмотреть следующие вопросы:

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

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

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

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

+0

Согласен. Я не уверен, нужна ли эта механическая турка, мне кажется, что все, что нужно, - это некоторые исторические данные сигналов. То, что я описываю в своем ответе, - это самый простой способ, о котором я мог думать. Одновременное изучение нескольких сигналов (многозадачное обучение), предварительная обработка данных и другие функции - это многообещающие улучшения. Но это не заканчивается. Можно написать книгу, полную возможных улучшений (многие из них). Вот почему я сохранил это как простое введение. Более того, читайте литературу. – Stefan

0

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

+0

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

0

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

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

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

Смежные вопросы