Как стать автором
Обновить

Комментарии 11

А что будет, если во входные данные добавить шум? До какого уровня сигнал/шум оно будет работать?

Шум в анализируемом сигнале всегда ухудшает извлечение полезной информации.

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

Убедиться в нестационарности можно, например, с использованием критерия Дики-Фуллера.

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

Свойствами временного ряда являются ...возможность из данных предыдущего периода восстановить поведение процесса в текущем и последующих периодах.

Вообще-то нет. Такое свойство есть только у некоторых временных рядов. Простейший контрпример - белый шум.

...равное расстояние по времени между измерениями

И это тоже чрезмерное упрощение.

Во-первых, существуют неэквидистантные временные ряды. Например, перепись населения стараются проводить регулярно, но не всегда получается. При этом набор значений величины популяции, измеренных в определенные годы - это самый что ни на есть типичный "временной ряд". В экономике сплошь и рядом встречаются переменные, которые измеряются (существуют) только в рабочие дни. Для таких величин обычный шаг между измерениями - 1 сут, но в конце недели - 3 сут, а на каникулах и праздниках еще больше. И такие увеличенные интервалы не всегда можно просто выбросить, особенно если речь идет о непрерывных производствах или фиксированных временных лагах. Например, если для производства товара А нужен скоропортящийся товар Б, на доставку которого надо 3 дня, то рост производства Б в понедельник и вторник отобразится в товаре А на третий рабочий день, а рост производства Б в пятницу - уже в понедельник (а это следующая точка, если выходные отброшены).

А в некоторых предметных областях существует такое понятие, как "пропущенное" измерение. Когда сломался прибор, и значения тупо нет. Или была экстремальная ситуация (помеха), и измеренное значение надо забраковать. В науках о Земле это случается сплошь и рядом. По существу, в результате опять-таки получаются неэквидистантные временные ряды, обрабатывать которые гораздо сложнее. Многие алгоритмы (например, БПФ) такое просто не предусматривают. Поэтому пробелы в таких рядах чаще всего интерполируются (заполняются) какими-то правдоподобными (но по сути - вымышленными) значениями. Тем самым ряд загоняется в прокрустово ложе эквидистантности... Проблема в том, что для адекватного заполнения пропущенных измерений нужна достаточно точная модель ряда (это необходимо, но не достаточно), а измерения часто как раз и проводятся для того, чтобы такую модель построить. Получается замкнутый круг.

Альтернативный подход состоит в том, чтобы закодировать пропуски особым образом и модифицировать каждый вычислительный алгоритм так, чтобы он обрабатывал эти пробелы каким-то разумным способом. Мы даже об этом статью написали, а вот тут можно скачать программу, в которой эти идем реализованы. Правда, она ориентирована на данные геофизического мониторинга в основном (поэтому чуть ли не половина алгоритмов нацелены на первичную обработку данных, поиск и выбраковку всевозможных дефектов и пр.), и у нее довольно высокий

порог вхождения.

По сути, это не просто "считалка", а комплекс из специализированной СУБД и пакета программ анализа временных рядов. Поэтому чтобы просто "покрутить" там какой-то сигнал, надо сперва его импортировать в базу. Впрочем, если вы все же решите попробовать - welcome, я с удовольствием помогу и отвечу на возникающие вопросы. Если вы работаете с интересными временными рядами, то есть шанс, что у нас найдутся общие интересы. Пишите мне в личку или на почту adeshere; мой почтовый домен переводится, как ИФЗ.РУ ;-).

Но написать я хотел не об этом, а о поиске аномалий в сигналах. На самом деле подобных методов - вагон и маленькая тележка. Причем в каждой предметной области они разные, так как исходят из собственных представлений об "аномалиях". Например, в исследованиях по прогнозу землетрясений бум таких методов был во второй половине прошлого века, как только стал доступен достаточный объем данных геофизического мониторинга. Кто только не занимался тогда прогнозом землетрясений! Однако в большинстве своем это были геофизики и геологи, хорошо умеющие работать в поле и закапывать электроды, а иногда и варганить аппаратуру, но не слишком натасканные в математическом смысле. Удивительно, но примерно за 30 лет напряженной работы (многие сотни статей!) никто в мире так и не обратил внимание, что определить понятие "аномалия" невозможно, пока не определено понятие "норма", и наоборот. Все упорно искали в сигналах исключительно "аномалии" (желательно перед самым землетрясением), и не менее упорно игнорировали вопрос - что есть "норма"? Не буду скромничать, но среди геофизиков одними из первых этим вопросом озаботилась наша группа. Мы проводили многолетние наблюдения в высокосейсмичном районе Таджикистана (Гармская экспедиция ИФЗ РАН). Как только вопрос был развернут в нужную сторону, сразу же выяснилось, что все наши ряды - это фликкер-шум. Кажется, ерунда - но для фликкер-шумового сигнала подавляющее большинство "аномалий", которые с таким упорством искали (и находили!) трудолюбивые геофизики, аномалиями совсем не являются. Для наших сигналов и изменения среднего, и всевозможные бухты, и всякая прочая "классика прогноза землетрясений" - это вовсе не аномалия, а самая что ни на есть "норма". Мораль очень простая: чтобы искать аномалии, надо сперва понять - что же такое норма (в геофизике это еще называют "проблемой фона").

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

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

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

Только в одной геофизике существует немеряное количество подобных "элементарных", но отлично работающих методов поиска аномалий в сигналах. Можно не одну монографию написать... Даже, пожалуй, не можно - а нужно: сейчас потыркался в памяти, а ссылок-то и нет на подхвате! Если вдруг кто-то за это возьмется - пишите, ваш труд, несомненно, будет оценен!! Я же пока ограничусь лишь ссылкой на нашу работу, к тому же не совсем тематическую. Но поскольку это лишь комментарий, а не самостоятельная статья, то надеюсь, что мне простят такое нахальство ;-)

Итого в заключение:

1) При поиске аномалий в сигналах начинать всегда надо с определения - что мы подразумеваем под аномалией, что мы ищем. Чем именно отличаются "норма" и "аномалия"? Даже если задача сформулирована максимально общо ("Найдите хоть что-нибудь!"), базой для поиска все равно будут два эти понятия. Без них никуда.

2) Если понятия "нормы" и "аномалии" введены, то для классификации состояния ряда в некоторый момент стоит прежде всего применять прямые (элементарные) алгоритмы, которые непосредственно вытекают из этих определений. Например, если "аномалия" - это выброс - то самый прямолинейный алгоритм будет основан на сравнении текущего значения ряда с локальным средним или же медианой. Если аномалия - это изменение персистентности, то элементарный прямой алгоритм может основываться на вычислении показателя Херста (или фрактальной размерности) в локальных окрестностях точки. И т.д. и т.п.

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

3) Ну и последний совет - это обработка в скользящем окне. Это особенно интересно для существенно нестационарных сигналов (нестационарных не только по среднему, но и по другим показателям), но вполне эффективно и для обычных рядов.

Алексей, большое спасибо за столь развернутый комментарий, который сам достоин отдельной статьи на хабре! 😊

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

Неэквидистантные ряды конечно существуют, но многие практические методы (автокорреляция, сглаживание, SARIMA методы и упомянутое Вами БПФ) к ним применять невозможно.

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

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

Модель скользящего среднего неявно фигурирует среди описанных в статье методов.

Мы обязательно посмотрим рекомендованную Вами статью и попробуем программу.

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

Руководитель исследовательского центра ООО «Сайберлимфа» Чернышов Юрий свяжется с Вами по указанной электронной почте, и будем рады сотрудничеству!

Модель скользящего среднего неявно фигурирует среди описанных в статье методов.

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

Например, одна из типичных задач в самых разных прикладных областях - это построение модели сигнала с сезонной периодичностью, нелинейным трендом и "остаточной компонентой" (которая может быть квазислучайной, либо, наоборот, содержать все самое интересное). Экономисты придумали стопятьсот вариаций моделей типа АРСС, чтобы описывать такие ряды. Но по моему убеждению, гораздо более качественное и наглядное описание подобных сигналов можно построить, используя декомпозиционный подход. А именно, ряд сначала раскладывается на "элементарные составляющие" с очень простыми свойствами. Настолько простыми, что они превосходно описываются с помощью "элементарных моделей" типа среднесезонной функции. Которые, в отличие от АРСС, абсолютно индифферентны к пропущенным наблюдениям и другим дефектам сигнала. Затем каждая из таких составляющих изучается и, при необходимости, экстраполируется для прогноза. После чего остается только собрать сигнал из этих деталек. Такая схема работает очень стабильно, ведь параметры "элементарных моделей" оцениваются намного устойчивее, а в целом модель получается намного интерпретабельнее любых "черных ящиков", в которых скрыта самая продвинутая математика. Настолько продвинутая, что даже сам автор модели не всегда понимает, почему получилось именно так.

Вообще, основная проблема комплексных моделей, описывающих сразу весь сигнал в целом, состоит в том, что их оптимальность обычно доказана лишь для сигналов определенного вида. Однако (за редчайшими исключениями) ни один реальный сигнал нужными свойствами обычно не обладает. Но в таком случае о математической строгости можно забыть. Как писал один классик, некритическое использование таких моделей очень часто приводит к ошибочным выводам, которые особенно опасны потому, что имеют видимость математи­ческой точности и строгости [Урбах, 1963, с.7].

В качестве примера - альтернативы могу привести работу, в которой проводится декомпозиция рядов концентрации атмосферного CO2 на сезонный эффект, нестационарный тренд и квазистационарный остаток. (Ее текст в открытом доступе скоро появится на Researchgate либо могу выслать в личку). Да, у использованных в ней алгоритмов нет строгой теории. Но как замечено выше, добиться математической строгости при работе с такими сигналами в принципе невозможно.То есть это не баг исключительно предложенного подхода, а свойство почти любых технологий работы с экспериментальными временными рядами. Поэтому нет смысла на нем не зацикливаться, лучше взглянуть на плюсы. В данном примере я вижу ситуацию так: совершенно тривиальные процедуры вполне эффективно решают задачу, хотя на первый взгляд ряды имеют достаточно сложное поведение.

Неэквидистантные ряды конечно существуют, но многие практические методы (автокорреляция, сглаживание, SARIMA методы и упомянутое Вами БПФ) к ним применять невозможно.

Вот как раз корреляционные методы для некоторых неэквидистантных рядов прекрасно работают. А именно, если у нас есть эквидистантный временной ряд, из которого выброшена некоторая часть значений (т.н. пропусков наблюдений), то по оставшимся наблюдениям корреляционная функция строится без каких-то проблем. Ведь такая функция - это по сути матожидание от некоторой величины f(T), где T - это временной лаг между значениями сигналов X и Y. Обобщенную формулу для вычисления f(T) можно поэтому записать,как f(T)=fun( X(t), Y (t+T)), где fun - это некоторая функция, а время t пробегает все возможные значения в пределах некоторого интервала.

Очевидно, что при наличии пропусков данных в рядах X и Y некоторые пары значений {X(t), Y (t+T)} будут неполными - с одним или даже с двумя пропусками наблюдений. Однако для остальных моментов времени t оба значения X(t) и Y (t+T) будут известны. И мы вполне можем вычислить fun(T) хотя бы для таких пар.

Ну и теперь последний "философский" шаг. Вводя функцию fun (это не обязательно корреляция), мы изначально предположили, что нужное нам матожидание существует. Но в таком случае можно ожидать, что оценка этого матожидания по некоторому подмножеству наблюдений - это вполне осмысленная процедура. Просто мы используем для расчетов не всю генеральную совокупность, а только некоторую ее часть - ту, которая оказалась доступной.

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

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

Например, для своих геофизических рядов мы прекрасно вычисляем и корреляции, и регрессии, и спектры (правда, не "быстрые") по данным с пропусками. И практически всегда получаем вполне осмысленный результат. Строго проверить такой результат невозможно, однако какие-то тесты все же имеются. Например, можно добавить в реальный сигнал дополнительные пропуски, а затем проанализировать зависимость целевой статистики от их количества. Да, это нестрогая процедура, но вполне рабочая и полезная. Вообще, на практике мне еще не встречались сигналы, в которых доля пропусков была бы относительно низкой (10-20%), и тем не менее, этот подход не работал бы. Хотя искусственные ряды с пропусками, "опровергающие" этот подход, строятся с полпинка, но вероятность встретить такую ситуацию при геофизическом мониторинге близка к нулю. Для этого надо, чтобы отказы прибора зависели от значения данных (например, не измеряются отрицательные значения). Если же моменты пропусков и измеряемая величина независимы, то все прекрасно работает.

Как я уже написал, у нас есть целый пакет программ, построенный на описанной парадигме. Кому интересно - можно посмотреть подробности в справке (конкретнее - раздел 3-I1). Конечно, использование такого подхода влечет определенные накладные расходы. Так, при вычислении функции fun надо для каждой пары значений {X(t), Y (t+T)} проверить - а нет ли среди них пропуска данных. И т.д. и т.п. Однако при долговременном мониторинге ряды данных чаще всего получаются не очень большие. Многие параметры до сих пор измеряются с частотой всего несколько раз в сутки. Даже если ряд имеет минутный опрос, это всего лишь полмиллиона значений в год. даже с учетом описанных "накладных расходов" обработка таких сигналов на современных персональных компьютерах выполняется за вполне разумное время.

В сухом остатке: понятно, что идеала нет и у любого подхода есть свои недостатки. Понятно, что выбрасывать ценные данные из-за нескольких пропущенных наблюдений - это ее дело. Я всего лишь хочу подчеркнуть, так называемое "обязательное заполнение пропусков" вовсе не является обязательным. Почти всегда существует альтернатива, и часто - не просто рабочая, но и имеющая свои преимущества.

А пробовали вы применять методы анализа рядов из финансов? По предсказанию котировок очень много литературы

И очень мало толку, ИМХО

Частично согласны) Тем не менее, алгоритмы-роботы, использующие различные методы анализа временных рядов, а также обучение с подкреплением (Reinforcement Learning) давно и эффективно работают в финансовом анализе, в том числе - торговле акциями.

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

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

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

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

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

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

Плюс по сравнению с нейросетевыми подходами: во-первых скорость и простота реализации. Во-вторых интерпретируемость и возможность очень чётко понять в какой из систем что пошло не так.

Все что можно сделать без машинного обучения – надо делать без машинного обучения )

Описанный Вами подход понятен и наверняка эффективен. Было бы интересно узнать метрики качества за какой-то продолжительный период.

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории