Как найти анамалию в

Найти пространственную аномалию — сюжетный квест «S.T.A.L.K.E.R.: Чистое Небо».

Получение квеста

Квест стартует, как только Шрам выходит к Тёмному яру. Там же можно взять побочный квест «Охранять сталкеров на пути к аномальной зоне», облегчающий прохождение первого задания.

Прохождение квеста

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

В любом случае Шраму необходимо пройти через тоннель, вход в который располагается неподалёку. Следует учесть, что в нём обитают снорки, поэтому необходимо иметь соответствующую экипировку. На выходе будет полянка, на которой обитает псевдогигант. Если игрок идёт со сталкерами, его нужно будет убить, в противном случае мутанта лучше обойти стороной. За полянкой начинается лихая тропа, населённая снорками и псевдособаками. Посреди неё стоит танк, над которым и висит та самая пространственная аномалия. Когда Шрам прыгнет в неё, он перенесётся к Леснику, а квест завершится.

Поиск аномалий во временных рядах

Время на прочтение
10 мин

Количество просмотров 13K

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

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

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

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

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

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

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

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

Для многих технологических систем результаты мониторинга можно представить в виде временных рядов [2]. Свойствами временного ряда являются:

  • привязка каждого измерения (сэмпла, дискрета) ко времени его возникновения,

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

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

Рис. 1. Временной ряд

Рис. 1. Временной ряд

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

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

Рис.2. Практические примеры временных рядов: электрокардиограмма, прогноз погоды.

Рис.2. Практические примеры временных рядов: электрокардиограмма, прогноз погоды.

У временных рядов есть типовые характеристики, которые достаточно точно описывают характер временного ряда:

  • период — временной отрезок постоянной для всего ряда длины, на концах которого ряд принимает близкие значения,

  • сезонность — свойство периодичности (сезон=период),

  • цикл — характерные изменения ряда, связанные с глобальными причинами (например, циклы в экономике), нет постоянного периода,

  • тренд — тенденция к долгосрочному увеличению или уменьшению значений ряда.

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

  • точечные аномалии, когда наблюдается отклонение в поведении в отдельных точках;

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

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

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

Рис.3. Несколько точечных аномалий.

Рис.3. Несколько точечных аномалий.

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

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

Рис.4. Групповая аномалия, изменение частоты.

Рис.4. Групповая аномалия, изменение частоты.

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

Поиск аномалий во временных рядах непрост (нечеткое определение аномалии, отсутствие разметки, неочевидная корреляция). До сих пор SOTA алгоритмы по поиску аномалий во временных рядах имеют высокий уровень False Positive.

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

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

Используемые для поиска аномалий во временных рядах методы принято разделять на группы [3]:

  • proximity-based: выявление аномалии на основе информации о близости параметров или последовательности параметров фиксированной длины, подходит для выявления точечных аномалий и выбросов, но не позволит выявить изменения в форме сигнала,

  • prediction-based: построение прогнозной модели и сравнение прогноза и фактической величины, лучше всего применимо ко временным рядам с выраженными периодами, циклами или сезонностью,

  • reconstruction-based: методы, основанные на реконструкции фрагментов данных, используют восстановление (реконструкцию) фрагмента данных, поэтому может выявлять как точечные аномалии, так и групповые аномалии, в том числе изменения в форме сигнала.

Proximity-based методы ориентированы на поиск значений, существенно отклоняющихся от поведения всех остальных точек. Самый простой и наглядный пример реализации такого метода – контроль превышения заданного порога значений.

В prediction-based методах основная задача – построить качественную модель процесса, чтобы смоделировать сигнал и сравнить полученные смоделированные значения с исходными (истинными). Если предсказанный и истинный сигнал близки, то поведение считается «нормальным», а если значения в модели сильно отличаются от истинных, то поведение системы на этом участке объявляется аномальным.

Рис.5. Моделирование временного ряда.

Рис.5. Моделирование временного ряда.

Наиболее распространенные методы для моделирования временных рядов – SARIMA [4] и рекуррентные нейронные сети [5].

Оригинальный подход используется в reconstruction-based моделях – сначала модель обучают кодировать и декодировать сигналы из имеющейся выборки, при этом закодированный сигнал имеет гораздо меньшую размерность, чем исходный, поэтому модели приходится учиться «сжимать» информацию. Вот пример такого сжатия для картинок 32 на 32 пикселя в матрицу из 32 чисел.

Рис.6. Схема работы автокодировщика

Рис.6. Схема работы автокодировщика

После обучения модели дают на вход сигналы, являющиеся отрезками исследуемого временного ряда, и если кодирование-декодирование проходит успешно, то поведение процесса считается «нормальным», в противном случае поведение объявляется аномальным.

Одним из недавно разработанных reconstruction-based методов, показывающих хорошие результаты в обнаружении аномалий, является TadGAN [3], разработанный исследователями из MIT в конце 2020 года. Архитектура метода TadGAN содержит в себе элементы автокодировщика и генеративных состязательных сетей.

Рис.7. Архитектура TadGAN (из статьи [3])

Рис.7. Архитектура TadGAN (из статьи [3])

Ɛ действует как кодировщик, переводящий отрезки временных рядов x в векторы скрытого пространства z, а G – декодер, восстанавливающий из скрытого представления z отрезки временных рядов. Cx – критик, оценивающий качество восстановления G(Ɛ(х)), а Cz – критик, оценивающий похожесть скрытого представления z = Ɛ(х) на белый шум. Кроме того, действует контроль «похожести» исходного и восстановленного сэмплов с использованием L2 — меры по идеологии «Cycle consistency loss» (обеспечивает общую похожесть сгенерированных образцов на исходные сэмплы в GAN) [6]. Итоговая целевая функция — объединение всех метрик для оценки качества работы критиков CxCz и меры похожести исходного и восстановленного сигнала.

Для создания и обучения нейронной сети могут быть использованы различные стандартные пакеты (например, TensorFlow или PyTorch), имеющие высокоуровневое API. Пример реализации архитектуры, аналогичной TadGAN, с использованием пакета TensorFlow для обучения весов можно посмотреть в репозитории [7]. При обучении этой модели оптимизировались пять метрик:

  • aeLoss – среднеквадратичное отклонение между исходным и восстановленным временным рядом, т.е. разница между x и G(Ɛ(х)),

  • cxLoss – бинарная кросс-энтропия критика Cx, определяющего разницу между истинным отрезком временного ряда и искусственно сгенерированным,

  • cx_g_Loss – бинарная кросс-энтропия, ошибка генератора G(Ɛ(х)), характеризующая его неспособность «обманывать» критика Cx,

  • czLoss — бинарная кросс-энтропия критика Cz, определяющего разницу между скрытым вектором, который сгенерировал кодировщик Ɛ и белым шумом, обеспечивает похожесть скрытого вектора Ɛ(х) на случайный вектор, не давая модели «заучивать» отдельные паттерны в исходных данных,

  • cz_g_Loss – бинарная кросс-энтропия, ошибка генератора Ɛ(х), характеризующая его неспособность создавать скрытые векторы, похожие на случайные, и тем самым «обманывать» критика Cz.

  Рис.8. График обучения модели TadGAN для 500 эпох.

Рис.8. График обучения модели TadGAN для 500 эпох.

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

  • поточечное сравнение;

  • сравнение площадей кривых в заданной области вокруг каждого сэмпла (длина области — гиперпараметр);

  • Dynamic Time Warping [9].

Качество оценивается по F1-метрике для задачи бинарной классификации, «positive» (нулевая гипотеза) — есть аномалия, «negative» (альтернативная гипотеза) — нет аномалии.

Аномалия предсказана моделью, y_hat = 1

Модель предсказала отсутствие аномалии

Аномалия есть

y = 1

TP

правильно предсказанная аномалия

FN

аномалия есть, но ее не нашли

Аномалии нет

y = 0

FP

предсказали аномалию там, где ее нет

TN

аномалии нет и модель ее не видит

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

 График этого ряда:

Рис.9. График синтетического ряда.

Рис.9. График синтетического ряда.

Восстановленный ряд с использованием TadGAN для разного количества эпох (4 и 80) выглядит так:

Рис.10. Моделирование ряда с помощью TadGAN для разного количества эпох (4 и 80)

Рис.10. Моделирование ряда с помощью TadGAN для разного количества эпох (4 и 80)

Видно, что модель достаточно точно научилась предсказывать основные закономерности в данных. Попробуем добавить различные аномалии в данных и затем обнаружить их с помощью модели TadGAN. Сначала добавим несколько точечных аномалий.

Рис.11. Обнаружение точечной аномалии с помощью TadGAN
Рис.11. Обнаружение точечной аномалии с помощью TadGAN

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

Теперь рассмотрим сигнал с другим типом аномалии — периодический сигнал с аномальным изменением частоты. В этом случае нет превышения порога – с точки зрения амплитуды все элементы ряда являются «нормальными» значениями, и аномалия выявляется только в групповом поведении нескольких точек. В этом случае TadGAN также не может восстановить сигнал (как это видно на рисунке) и это может быть использовано в качестве признака наличия групповой аномалии.

     Рис.12. Результат работы TadGAN на датасете с аномальным изменением частоты.

Рис.12. Результат работы TadGAN на датасете с аномальным изменением частоты.

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

Более сложные примеры датасетов можно найти в статье авторов метода TadGAN [3]. Там же приведена ссылка на библиотеку Orion, являющуюся разработкой специалистов MIT, которая с использованием машинного обучения распознает редкие аномалии во временных рядах, используя подход обучения без учителя (unsupervised learning).

В заключении отметим, что методов, использующих реконструирование сигнала (reconstruction-based) для обнаружения аномалии сейчас очень много, например в ресурсе arxiv.org десятки статей, описывающих различные модификации подхода с использованием автокодировщиков и генеративных состязательных сетей. Для каждой конкретной задачи целесообразно подбирать свою модель, с учетом требований задачи и знаний о предметной области.

Ссылки

  1. «Что такое аналитика данных?», https://www.intel.ru/content/www/ru/ru/analytics/what-is-data-analytics.html

  2. В.В. Домбровский. Эконометрика. http://sun.tsu.ru/mminfo/2016/Dombrovski/start.htm

  3. “TadGAN: Time Series Anomaly Detection Using Generative Adversarial Networks”, https://arxiv.org/abs/2009.07769

  4. “An Introductory Study on Time Series Modeling and Forecasting”, описание SARIMA https://arxiv.org/ftp/arxiv/papers/1302/1302.6613.pdf

  5. Fundamentals of RNN, https://arxiv.org/abs/1808.03314

  6. Cycle Consistency Loss, https://paperswithcode.com/method/cycle-consistency-loss

  7. https://github.com/CyberLympha/Examples/tree/main/Разбор статей/TadGAN

  8. Библиотека для распознавания аномалий в сигналах, https://github.com/signals-dev/Orion

  9. Алгоритм Dynamic Time Warping, https://towardsdatascience.com/dynamic-time-warping-3933f25fcdd

  10. https://medium.com/mit-data-to-ai-lab/time-series-anomaly-detection-in-the-era-of-deep-learning-dccb2fb58fd

  11. https://medium.com/mit-data-to-ai-lab/time-series-anomaly-detection-in-the-era-of-deep-learning-f0237902224a

Обнаружение аномалий для чайников


  Перевод


  Ссылка на автора

Обнаружение аномалий это процесс выявления неожиданных предметов или событий в наборах данных, которые отличаются от нормы. А обнаружение аномалий часто применяется к немаркированным данным, которые известны как обнаружение аномалий без контроля. Обнаружение аномалии имеет два основных предположения:

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

Обнаружение одномерной аномалии

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

Мы используем Набор данных Super Store Sales которые можно скачать с Вот и мы собираемся найти в Sales and Profit шаблоны отдельно, которые не соответствуют ожидаемому поведению. То есть выявлять выбросы по одной переменной за раз.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib
from sklearn.ensemble import IsolationForest

Распределение продаж

df = pd.read_excel("Superstore.xls")
df['Sales'].describe()

Рисунок 1
plt.scatter(range(df.shape[0]), np.sort(df['Sales'].values))
plt.xlabel('index')
plt.ylabel('Sales')
plt.title("Sales distribution")
sns.despine()

фигура 2
sns.distplot(df['Sales'])
plt.title("Distribution of Sales")
sns.despine()

Рисунок 3
print("Skewness: %f" % df['Sales'].skew())
print("Kurtosis: %f" % df['Sales'].kurt())

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

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

Распределение прибыли

df['Profit'].describe()

Рисунок 4
plt.scatter(range(df.shape[0]), np.sort(df['Profit'].values))
plt.xlabel('index')
plt.ylabel('Profit')
plt.title("Profit distribution")
sns.despine()

Рисунок 5
sns.distplot(df['Profit'])
plt.title("Distribution of Profit")
sns.despine()

Рисунок 6
print("Skewness: %f" % df['Profit'].skew())
print("Kurtosis: %f" % df['Profit'].kurt())

Распределение прибыли в супермаркете имеет как положительный, так и отрицательный хвост. Однако положительный хвост длиннее отрицательного. Таким образом, распределение положительно искажено, и данные являются «хвостатыми» или множеством выбросов.

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

Обнаружение одномерной аномалии в продажах

Лес изоляциипредставляет собой алгоритм для обнаружения выбросов, который возвращает оценку аномалий каждого образца с использованием алгоритма IsolationForest, который основан на том факте, что аномалии представляют собой точки данных, которые являются небольшими и разными. Isolation Forest — это древовидная модель. В этих деревьях создаются сначала путем случайного выбора объекта, а затем выбора случайного значения разделения между минимальным и максимальным значением выбранного объекта.

Следующий процесс показывает, как IsolationForest ведет себя в случае продаж в Susperstore. Алгоритм был реализован в Sklearn, и код был в основном заимствован из этого. руководство

  • Обученный IsolationForest с использованием данных о продажах.
  • Храните продажи в NumPyмассив для использования в наших моделях позже.
  • Вычислили балл аномалии для каждого наблюдения. Оценка аномалии входной выборки рассчитывается как средняя оценка аномалии деревьев в лесу.
  • Классифицируйте каждое наблюдение как выброс или не выброс.
  • Визуализация выделяет области, в которых выпадают выбросы.
sales_IsolationForest.py
Рисунок 7

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

Визуально исследовать одну аномалию

df.iloc[10]

Рисунок 8

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

Обнаружение одномерной аномалии по прибыли

  • Обученный IsolationForest с использованием переменной Profit.
  • Храните прибыль в NumPyмассив для использования в наших моделях позже.
  • Вычислили балл аномалии для каждого наблюдения. Оценка аномалии входной выборки рассчитывается как средняя оценка аномалии деревьев в лесу.
  • Классифицируйте каждое наблюдение как выброс или не выброс.
  • Визуализация выделяет области, в которых выпадают выбросы.
profit_IsolationForest.py
Рисунок 9

Визуально исследовать некоторые из аномалий

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

df.iloc[3]

Рисунок 10

Любая отрицательная прибыль была бы аномалией и должна быть дополнительно исследована, само собой разумеется

df.iloc[1]

Рисунок 11

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

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

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

Обнаружение многомерных аномалий

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

Итак, используя переменные Sales и Profit, мы собираемся построить без присмотрамногомерное обнаружение аномалийМетод основан на нескольких моделях.

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

Продажи и прибыль

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

sns.regplot(x="Sales", y="Profit", data=df)
sns.despine();

Рисунок 12

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

Кластерный локальный коэффициент выбросов (CBLOF)

CBLOF вычисляет показатель выбросов на основе кластерного локального коэффициента выбросов. Оценка аномалии рассчитывается по расстоянию каждого экземпляра до его центра кластера, умноженному на экземпляры, принадлежащие его кластеру. Библиотека PyOD включает реализация CBLOF,

Следующий код заимствован из PyOD учебник в сочетании с Эта статья,

  • Масштабирование продаж и прибыли до нуля.
  • Произвольно установил долю выбросов как 1%, основываясь на пробах и наилучших предположениях.
  • Подгоните данные к модели CBLOF и прогнозируйте результаты.
  • Используйте пороговое значение, чтобы считать, что точка данных является внутренней или внешней.
  • Используйте функцию принятия решения, чтобы вычислить оценку аномалии для каждой точки.
CBLOF.py
Рисунок 13

Обнаружение выбросов на основе гистограммы (HBOS)

HBOS предполагает независимость функции и рассчитывает степень аномалий, создавая гистограммы. При многомерном обнаружении аномалий гистограмма для каждого отдельного объекта может быть рассчитана, оценена по отдельности и объединена в конце. При использовании библиотеки PyOD код очень похож на CBLOF.

HBOS.py
Рисунок 14

Лес изоляции

Isolation Forest в принципе похож на Random Forest и построен на основе деревьев решений. Лес изоляции изолирует наблюдения путем случайного выбора объекта, а затем случайным образом выбирает значение разделения между максимальным и минимальным значениями этого выбранного объекта.

Модуль PyOD Isolation Forest — это оболочка Scikit-учить лес изоляции с большим количеством функций.

IsolationForest.Py
Рисунок 15

K — Ближайшие соседи (KNN)

KNN является одним из самых простых методов обнаружения аномалий. Для точки данных ее расстояние до k-го ближайшего соседа можно рассматривать как показатель выбросов.

KNN.py
Рисунок 16

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

Визуально исследовать некоторые из аномалий

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

df.iloc[1995]

Рисунок 17

Для этого конкретного заказа клиент купил 5 продуктов с общей ценой 294,62 и прибылью ниже -766 со скидкой 80%. Это похоже на оформление. Мы должны знать о потере каждого продукта, который мы продаем.

df.iloc[9649]

Рисунок 18

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

df.iloc[9270]

Рисунок 19

Для вышеуказанного заказа клиент приобрел 6 товаров по общей цене 4305, после 20% скидки мы все равно получаем более 33% прибыли. Мы хотели бы иметь больше таких аномалий.

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

В этом посте поговорим об одной важной проблеме обучения без учителя (Unsupervised Learning) – задаче поиска аномалий (Anomaly Detection). Интересно, что в русскоязычных учебных курсах об этой задаче часто забывают. Даже в русской версии страницы обучение без учителя нет упоминания об этой задаче, в английской, конечно же, есть.

outlier_detection2

Строго говоря, в анализе данных есть два направления, которые занимаются поиском аномалий: детектирование выбросов (Outlier Detection) и «новизны» (Novelty Detection). Как и выброс «новый объект» — это объект, который отличается по своим свойствам от объектов (обучающей) выборки.  Но  в отличие от выброса, его в самой выборке пока нет (он появится через некоторое время, и задача как раз и заключается в том, чтобы обнаружить его при появлении). Например, если вы анализируете замеры температуры и отбрасываете аномально большие или маленькие, то Вы боретесь с выбросами. А если Вы создаёте алгоритм, который для каждого нового замера оценивает, насколько он похож на прошлые, и выбрасывает аномальные — Вы «боретесь с новизной».

Выбросы являются следствием:

  • ошибок в данных (неточности измерения, округления, неверной записи и т.п.)
  • наличия шумовых объектов (неверно классифицированных объектов)
  • присутствия объектов «других» выборок (например, показаниями сломавшегося датчика).

fig_softoutlier

Рис. 1. Модельная задача с двумя признаками

На рис. 1 видно, что шум (noise) — это выброс «в слабом смысле» (он может немного размывать границы класса/кластера). Нас же интересуют, прежде всего, выбросы «в сильном смысле», которые искажают эти границы.

Новизна, как правило, появляется в результате принципиально нового поведения объекта. Скажем, если наши объекты – описания работы системы, то после проникновения в неё вируса объекты становятся «новизной». Ещё пример – описания работы двигателя после поломки. Здесь важно понимать, что «новизна» называется новизной по той причине, что такие описания для нас абсолютно новые, а новые они потому, что мы не можем в обучающей выборке иметь информацию о всевозможных заражениях вирусами или всевозможных поломках. Формирование такой обучающей выборки трудозатратно и часто не имеет смысла. Зато можно набрать достаточно большую выборку примеров нормальной (штатной) работы системы или механизма.

Приложений здесь море:

  • Обнаружение подозрительных банковских операций (Credit-card Fraud)
  • Обнаружение вторжений (Intrusion Detection)
  • Обнаружение нестандартных игроков на бирже (инсайдеров)
  • Обнаружение неполадок в механизмах по показаниям датчиков
  • Медицинская диагностика (Medical Diagnosis)
  • Сейсмология

Стоит отметить, что возможных постановок задач здесь тоже много. Например, задача Positive-Unlabeled Classification (PU learning) – это когда часть выбросов обозначена (класс 1), но в остальных объектах  обучения (класс 0) также могут содержаться выбросы. Например, нам эксперт сказал, что оборудование давало сбой в такие-то моменты времени, но он мог заметить не все сбои.

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

Аномалии бывают не только в табличных данных, они могут быть в графах, временных рядах и т.д.

fig4_poly

Рис. 2. Пример выбросов во временном ряде.
graphs
Рис. 3. Пример выбросов в графах и последовательностях.

Функционалы качества в задачах детектирования аномалий используют примерно такие же, как и в задачах классификации: PR AUC, AUROC, здесь всё определяется контекстом задачи (заказчиком).

Методы обнаружения выбросов

1. Статистические тесты

Как правило, применяют для отдельных признаков и отлавливают экстремальные значения (Extreme-Value Analysis). Для этого используют, например, Z-value или Kurtosis measure.

kurtosis

Рис. 4. Пример выбросов.

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

Важно понимать, что экстремальное значение и аномалия это разные понятия. Например, в небольшой выборке

[1, 39, 2, 1, 101, 2, 1, 100, 1, 3, 101, 1, 3, 100, 101, 100, 100]

значение 39 можно считать аномалией, хотя оно не является максимальным или минимальным. Также стоит отметить, что аномалия характеризуется, как правило, не только экстремальными значениями отдельных признаков (см. рис. 5)

fig2_feats2.png

Рис. 5. Пример выбросов в задаче с двумя признаками.

2. Модельные тесты

Идея очень простая – мы строим модель, которая описывает данные. Точки которые сильно отклоняются от модели (на которых модель сильно ошибается) и есть аномалии (см. рис. 2). При выборе модели мы можем учесть природу задачи, функционал качества и т.п.

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

fig_svd.png

Рис. 6. Применение SVD для нахождение выбросов в матрице

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

3. Итерационные методы

Методы, которые состоят из итераций, на каждой из которых удаляется группа «особо подозрительных объектов». Например, в n-мерном признаковом пространстве можно удалять выпуклую оболочку наших точек-объектов, считая её представителей выбросами. Как правило, методы этой группы достаточно трудоёмки.

fig4_vypukl.png

Рис. 7. Выпуклые оболочки множества точек.

4. Метрические методы

Судя по числу публикаций, это самые популярные методы среди исследователей. В них постулируется существование некоторой метрики в пространстве объектов, которая и помогает найти аномалии. Интуитивно понятно, что у выброса мало соседей, а у типичной точки много. Поэтому хорошей мерой аномальности может служить, например «расстояние до k-го соседа» (см. метод Local Outlier Factor). Здесь используются специфические метрики, например расстояние Махаланобиса.

fig2_nns

Рис. 8. Соседи нескольких элементов выборки, связь с 5м показана красным

5. Методы подмены задачи

Когда возникает новая задача, есть большой соблазн решить её старыми методами (ориентированными на уже известные задачи). Например, можно сделать кластеризацию, тогда маленькие кластеры, скорее всего, состоят из аномалий. Если у нас есть частичная информация об аномалиях (как в задаче PUC), то можно решить её как задачу классификации с классами 1 (размеченные аномалии) и 0 (все остальные объекты). Если бы класс 0 состоял только из нормальных объектов, то такое решение было бы совсем законным, иначе остаётся надеяться, что недетектированных аномалий в нём немного.

fig2_cluster.png

Рис. 9. Пример кластеризации на малый (красный) и большой (синий) кластер.

6. Методы машинного обучения

А что если воспринять задачу нахождения аномалий как новую задачу машинного обучения (отличную от классификации и кластеризации)?!

Самые популярные алгоритмы (есть реализация даже в scikit-learn) здесь:

  • Метод опорных векторов для одного класса (OneClassSVM)
  • Изолирующий лес (IsolationForest)
  • Эллипсоидальная аппроксимация данных (EllipticEnvelope)

fig_all.png

Рис. 10. Визуализация работы разных алгоритмов поиска аномалий.

Первый метод — это обычный SVM, который отделяет выборку от начала координат. Идея немного сомнительна, но оказалась довольно работоспособной (см. рис. 10). Здесь правда не так много разнообразия в выборе параметров, как при решении задач классификации, поскольку в качестве ядра подойдёт лишь rbf (радиальные базисные функции), все остальные ядра показывают феноменально отвратительный результат. Интересно , что многие годы задачи детектирования поломок сложных механизмов решались именно с помощью OneClassSVM, почему-то без рассмотрения альтернатив (на нашей кафедре также защищались дипломы на эту тему). Полезно помнить, что OneClassSVM это скорее алгоритм поиска новизны, а не выбросов, т.к. «затачивается» под обучающую выборку.

Важные параметры реализации sklearn.svm.OneClassSVM:

  • kernel – ядро (линейное: linear, полиномиальное: poly, радиальные базисные функции: rbf, сигмоидальное: sigmoid, своё заданное)
  • nu – верхняя граница на %ошибок и нижняя на % опорных векторов (0.5 по умолчанию)
  • degree – степень для полиномиального ядра
  • gamma – коэффициент для функции ядра (1/n_features по умолчанию)
  • coef0 – параметр в функции полиномиального или сигмоидального ядра

Изолирующий лес  (Isolation Forest) – это одна из вариаций идеи случайного леса. Как всегда: простая и надёжная.

  • Состоит из деревьев
  • Каждое дерево строится до исчерпании выборки
  • Для построения ветвления в дереве: выбирается случайный признак и случайное расщепление
  • Для каждого объекта мера его нормальности – среднее арифметическое глубин листьев, в которые он попал (изолировался)

fig_forest.png

Рис. 11. Вычисление оценки аномальности в изолирующем лесе.

Логика алгоритма простая: при описанном «случайном» способе построения деревьев выбросы будут попадать в листья на ранних этапах (на небольшой глубине дерева), т.е. выбросы проще «изолировать» (напомним, что дерево строится до тех пор, пока каждый объект не окажется в отдельном листе). Алгоритм хорошо отлавливает именно выбросы (см. рис. 12).

fig_if.png

Рис. 12. Оценки изолирующего леса для одномерной выборки.

Важные параметры реализации sklearn.ensemble.IsolationForest

  • n_estimators – число деревьев
  • max_samples – объём выборки для построения одного дерева (если вещественное число, то процент всей выборки)
  • contamination – доля выбросов в выборке (для выбора порога)
  • max_features – число (или %) признаков, которые используются при построении одного дерева (пока работает только со значением 1.0)
  • bootstrap – включение режима бутстрепа при формировании подвыборки

Эллипсоидальная аппроксимация данных — из названия понятно, что облако точек моделируется как внутренность эллипсоида. Метод хорошо работает только на одномодальных данных, а совсем хорошо – на нормально распределённых. Степень новизны здесь фактически определяется по расстоянию Махаланобиса.

7. Ансамбли алгоритмов

В методы решения задач обнаружения аномалий также проникла идея «один алгоритм хорошо, а сто лучше», поэтому часто строят много разных алгоритмов. Каждый из них даёт оценку аномальности и эти оценки потом «усредняют».

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

  • Feature Bagging (не очень удачное название) – для каждого алгоритма берут случайное признаковое подпространство,
  • Rotated Bagging – в выбранном случайном признаковом подпространстве совершают случайный поворот.

Кстати, здесь «усреднение» не обязательно означает среднее арифметическое всех оценок, интуитивно понятно, что часто может сработать максимум (если какой-то алгоритм уверен в аномальности объекта, то скорее всего так оно и есть).

История из практики

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

П.С. Код для получения рис.10 можно взять здесь.

Чем опасны аномальные зоны и как их определить?

 аномальные места в России

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

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

Что известно о существовании аномальных зон?

Большинство учёных разделились во мнениях о природе возникновения аномальных зон, существует много определений этого термина. Один из самых популярных определений термина « Аномальная зона» или  зоны аномальных мест, представляют из себя области участков поверхности земли природного или рукотворного происхождения, в которых происходят необъяснимые явления, выходящие за рамки современных законов физики и не поддающиеся логическому осмыслению.

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

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

Аномальные зоны в пространстве и времени проявляют себя по-разному.  В зависимости от времени года или от магнитных полей каменных пород,  могут наблюдаться различные физические явления, такие как остановка часов, поломки механизмом или пропажа людей. Как это ни странно самые аномальные места в России встречаются в удалённых местностях от больших городов и селений.

По каким причинам появляются аномальные зоны?

аномальные явления лес

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

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

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

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

Как определить опасность и как правильно вести себя в подобных местах?

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

 Признаки зон аномальных мест в лесу;

  • Кости животных не растащены, признак болотного газа или резких выбросов отрицательной энергии.

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

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

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

  • Резкие перепады температур и погодных условий, явственно присутствует запах озона. Велика вероятность появления шаровых молний.

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

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

  • Выходят приборы из строя, техника ломается, чувствуется резкое недомогание и слабость. Первый признак разлома горных пород или что-то  аномальнорукотворное делами людей. Уходите немедленно из таких мест не оглядываясь!

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

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

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

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

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

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

Как правильно подготовиться к подобному путешествию?

зоны повышенного риска

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

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

  • Прокладывайте маршрут до точки исследования туда и обратно в нескольких вариантах.

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

  • Отряд должен состоять как минимум из трёх, четырёх человек, один из которых обязательно должен быть медиком.

  • Берите с собой как можно меньше электроники, запас пищи и чистой воды тоже не помешает.

  • Берите с собой что-нибудь более серьёзное, чем пару ножей или топоров. В дороге бывает всякое.

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

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

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

Понравилась статья? Поделить с друзьями:
  • Как найти сколько квадратных сантиметров в фигуре
  • Как составить монолог повествование
  • Как найти облако на электронной почте
  • Как найти коэффициент полноты ватерлинии
  • Как найти дельта модуль