Как я могу найти коллективные аномалии для данных? - PullRequest
0 голосов
/ 25 сентября 2019

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

#   DD  MM  YYYY    HH  mm  VALUE
0   14  02  2014    14  27  51.846
1   14  02  2014    14  32  44.508
2   14  02  2014    14  37  41.244
3   14  02  2014    14  42  48.568
4   14  02  2014    14  47  46.714
5   14  02  2014    14  52  44.986
6   14  02  2014    14  57  49.108
7   14  02  2014    15  02  40.470
8   14  02  2014    15  07  53.404
9   14  02  2014    15  12  45.400
10  14  02  2014    15  17  43.216
11  14  02  2014    15  22  49.720
12  14  02  2014    15  27  46.370
13  14  02  2014    15  32  43.756
14  14  02  2014    15  37  47.582
15  14  02  2014    15  42  40.738
16  14  02  2014    15  47  51.216

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

1 Ответ

0 голосов
/ 25 сентября 2019

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

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

https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average

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

enter image description here

ЧтоЯ бы сделал:

  • отсортировать ваши данные по отметке времени
  • применить экспоненциально скользящее среднее, чтобы получить непрерывную аппроксимацию вашей кривой
  • , когда новый /проверяется следующее значение, сравнивайте его с EMA
  • , если значение выходит за пределы [EMA - std_dev, EMA + std_dev], тогда вы можете классифицировать его как аномальные

параметровдля настройки:

  • альфа (используется в EMA)
  • использовать std_dev?или, возможно, сначала умножьте std_dev на некоторый коэффициент?
...