Многомерные временные ряды, обнаружение аномалий, керас - PullRequest
0 голосов
/ 25 октября 2018

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

В частности, это ситуация:

  • каждый экземпляр характеризуется 10 разсерия
  • для данного экземпляра каждый временной ряд описывает один и тот же интервал времени (обычно 8-10 часов)
  • все экземпляры характеризуются одним и тем же видом 10 временных рядов
  • каждый временной ряд имеет частоту дискретизации (количество наблюдений в секунду)
  • метки классов очень несбалансированы: аномалии могут охватывать около 5% всего интервала времени, описанного серией, если он присутствует вообще
  • наконец, для каждого случая, У меня есть ручная маркировка, сообщающая мне, какие временные интервалы являются «аномальными»

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

Первый подход, который я попробовал, основан наОконное управление: учитывая обучающий экземпляр, я просто применяю «движущееся окно» к каждому временному ряду (например, длиной 10 секунд) и вычисляю некоторые показатели для значений, принадлежащих окну (например, среднее, минимальное, максимальное, дисперсия,энтропия, энергия, ... я использую библиотеку ЦФреш для такой задачи).Затем я отмечаю каждое окно как «аномальное» или нет, основываясь на ручной маркировке (в частности, если есть аномалия, которая перекрывает 95% окна, то я отмечаю его как аномальное).

В результате обучающий набор составляется из экземпляров формы, например: [average_ts_1, min_ts_1, max_ts_1, ..., average_ts_10, min_ts_10, max_ts_10, LABEL]

Хотя этот подход дает мне некоторыеобнадеживающие результаты, Я бы хотел иметь дело с данными временных рядов напрямую , чтобы не потерять какую-либо потенциальную информацию.В таком случае, я думаю, что задача станет такой: учитывая 10 временных рядов в качестве входных данных, предсказать другой временной ряд, сделанный только на 1 с и 0 с.Такие прогнозируемые временные ряды будут охватывать тот же период времени, что и временные ряды, заданные в качестве входных данных, и сообщать мне, в каких интервалах присутствует аномалия или нет (например, с зернистостью в 1 секунду).

Теперь,наконец, вопрос: есть ли какая-либо (глубокая) архитектура обучения, которую я мог бы использовать для такой задачи?

В настоящее время я работаю с Python, опираясь на XGBoost с техникой работы с окнами.У меня также есть некоторый опыт работы с Keras, но я открыт для любых предложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...