Ищете хороший пакет для обнаружения аномалий во временных рядах

17

Существует ли комплексный пакет с открытым исходным кодом (предпочтительно на python или R), который можно использовать для обнаружения аномалий во временных рядах?

В scikit-learn есть один класс SVM-пакета, но он не предназначен для данных временных рядов. Я ищу более сложные пакеты, которые, например, используют байесовские сети для обнаружения аномалий.

pythinker
источник
нам нужно написать один, братан !! : P
Arpit Sisodia

Ответы:

19

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

Он все еще находится на ранней стадии разработки на github и скоро будет опубликован в JMLR.

Пакет написан на языке Python, а имя пакета - pyod ( https://github.com/yzhao062/Pyod ).

Он имеет несколько алгоритмов для следующих индивидуальных подходов:

  1. Линейные модели для обнаружения выбросов ( PCA, vMCD, vOne-Class и SVM )
  2. Модели обнаружения выбросов на основе близости ( LOF, CBLOF, HBOS, KNN, AverageKNN и MedianKNN )
  3. Вероятностные модели для обнаружения выбросов ( ABOD и FastABOD )
  4. Выпадающие ансамбли и комбинированные структуры ( IsolationForest и FeatureBagging )
  5. Нейронные сети и модели глубокого обучения ( авто-кодер с полностью подключенной нейронной сетью )

Наконец, если вы ищите временные ряды как таковые, эта ссылка на github будет полезна.

Имеется следующий список пакетов для обнаружения выбросов временных рядов:

datastream.io

линия горизонта

banpei

AnomalyDetection

Шанкар Чаван
источник
какой-либо способ работать с контекстом аномалии?
Арпит Сизодия
Вы говорите об обнаружении аномалий или обнаружении выбросов? Есть разница.
Арпит Сизодия
6

Есть несколько способов справиться с нарушениями временных рядов

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

2) Если аномалии неизвестны, то , что мы сделали в нашей организации - это комбинация кластеризации и классификации -

Сначала используйте расстояние LOF / K-means / Cook для определения выбросов. Конвертируйте все данные в задачу классификации, так как у нас есть 2 класса: выбросы и нормалы. Теперь создайте модель классификации и получите правила (модель классификации) для выявления отклонений во время выполнения (данные временных рядов).

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

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

некоторые полезные ссылки

https://machinelearningstories.blogspot.com/2018/12/easiest-way-of-detection-abnormality.html

https://machinelearningstories.blogspot.com/2018/07/anomaly-detection-anomaly-detection-by.html

Arpit Sisodia
источник
2

Попробуйте Пророк Библиотека

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

Больше на: Обнаружение аномалий во временных рядах с библиотекой Пророка

Кришна
источник