Обнаружение редких происшествий из многомерных интервалов временных рядов

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

Обновление: Я нашел этот документ (PDF) на Горные последовательности временных интервалов , в котором рассматривается аналогичная проблема. В другой статье (Google Docs) Mining Hierarchical Temporal Temporal Patterns in Multivariate Time Series используется новый подход, но речь идет об иерархических данных.

Пример обучающих данных

Следующие данные представляют собой обучающий пример для инцидента, представленный в виде графика во времени, где / ¯¯¯ \ представляет собой истинный интервал состояния. и \ ___ / ложный интервал состояния для датчика.

 Sensor   |  Sensor State over time
          |  0....5....10...15...20...25...  // timestamp
 ---------|--------------------------------
 A        |  ¯¯¯¯¯¯¯¯¯¯¯¯\________/¯¯¯¯¯¯¯¯
 B        |  ¯¯¯¯¯\___________________/¯¯¯¯
 C        |  ______________________________  // no state change
 D        |  /¯\_/¯\_/¯\_/¯\_/¯\_/¯\_/¯\_/¯
 E        |  _________________/¯¯¯¯¯¯¯¯\___

Обнаружение инцидентов против маркировки последовательностей против классификации

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

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

Возможные алгоритмы

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

Байесовский вероятностный подход

Активность сенсора будет значительно варьироваться в зависимости от времени суток (занятость утром, тихая ночь). Мой первоначальный подход заключался в измерении нормального состояния датчика в течение нескольких дней и вычислении вероятности состояния по времени суток (часу). Суммарная вероятность превышения «порога маловероятности» состояний датчиков в маловероятный час указывает на инцидент. Но казалось, что это вызовет ложную тревогу, если датчики будут зашумлены. Я еще не реализовал это, но считаю, что у такого подхода есть свои достоинства.

Извлечение признаков

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

struct StateInterval
{
    int sensorID;
    bool state;
    DateTime timeStamp;
    TimeSpan duration; 
}

например. Некоторые интервалы состояний из таблицы процессов:

[ {D, true, 0, 3} ]; [ {D, false, 4, 1} ]; ...
[ {A, true, 0, 12} ]; [ {B, true, 0, 6} ]; [ {D, true, 0, 3} ]; etc.

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

Редактировать: Некоторые идеи после сна о том, как извлечь особенности из данных сигналов тревоги нескольких датчиков и как сравнить их с предыдущими данными ...

Начните с вычисления следующих данных для каждого датчика за каждый час дня:

  • Средняя длина интервала состояния (для состояний истина и ложь )
  • Среднее время между изменениями состояния
  • Количество изменений состояния с течением времени

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

  • Среднее время, необходимое датчику B для перехода в истинное состояние после того, как датчик A сделал. Если среднее значение составляет 60 секунд, то 1-секундное ожидание было бы более интересным, чем 120-секундное ожидание.
  • Среднее количество изменений состояния, которые претерпел датчик B, пока датчик A находился в одном состоянии

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

Является ли это разумным подходом и какой алгоритм будет хорошим для сравнения этих характеристик?


Изменить: направление изменения состояния ( ложь-> истина vs истина-ложь ) имеет большое значение, поэтому любые функции должны учитывать это.

13
задан 24 revs 5 October 2010 в 00:13
поделиться