Обнаружение аномалий должно быть простой концепцией. Однако, если вы начнете читать литературу, вы можете столкнуться с различными терминологиями, которые могут облегчить ваши исследования или даже помешать вам их проводить. Моя цель — объяснить их простым способом, чтобы вы могли определить, какой из них лучше всего подходит для вашей текущей проблемы. К концу статьи вы должны понимать основные различия между обнаружением выбросов, классификацией одного класса, обнаружением известных аномалий и обнаружением открытых наборов.

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

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

Краткое резюме/предыстория

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

Несколько важных слов:

  • Номинальный/нормальный: образцы, связанные с безопасными данными, т. е. не являющиеся аномалиями.
  • Ненормальный/выброс/аномалия: образцы, связанные с аномалиями.

1. Обнаружение выбросов

Как следует из самого слова, выбросы — это часть ваших данных, которые находятся за пределами диапазона наиболее распространенных значений. Вы когда-нибудь видели боксплоты? Если нет, вы можете проверить их здесь. Основная идея заключается в том, что вы можете определить максимальное и минимальное значение для каждой переменной x, используя распределение значений x; затем вы помечаете все, что находится за пределами этого диапазона, как выброс. Хорошо, тогдавсе кончено? Нет. В области обнаружения аномалий обнаружение выбросов выходит за рамки анализа распределения по переменной. Давайте углубимся в проблему.

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

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

Преимущества обнаружения выбросов:

  • Может обнаруживать неизвестные аномалии.
  • Не надо ярлыков.

Недостатки:

  • Набор из N новых экземпляров может изменить кластеры (в общем, он может изменить то, что считается выбросом). Для какого значения N данные должны быть повторно кластеризованы?

2. Одноклассовая классификация

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

Как и в случае обнаружения выбросов, вы можете просто создать один кластер со своими данными. Тогда для нового экземпляра все, что рядом с скоплением, — это кошка, а если далеко, то еще что-то. Однако у этой стратегии есть два больших недостатка: 1) что является хорошей мерой расстояния? 2) достаточно ли разнообразны ваши данные, чтобы новые изображения кошек были рядом с вашим кластером? Второй вопрос зависит от размера и распределения вашего набора данных, и ответ обычно не является утвердительным для сложных данных, таких как изображения.

Стандартный способ решения этой проблемы для данных изображений — использование выбросов экспозиции (OE). Это простой, но эффективный метод, при котором вы обобщаете понятие все остальное в виде набора случайных изображений, извлеченных из Интернета. Уже есть несколько наборов данных, которые вы можете использовать для представления аномальных данных. Погуглите, если вы думаете, что это способ решить вашу проблему, или вы можете проверить эту бумагу.

Преимущества:

  • Может обнаруживать неизвестные аномалии.
  • Не надо ярлыков.
  • Могут быть применены методы контролируемого обучения. В таких случаях после этапа обучения нет необходимости снова просматривать данные для классификации нового экземпляра.

Недостатки:

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

3. Известные аномалии

Когда аномалии известны, обычно задача выполняется с помеченным набором данных. В этом случае нам нужен надежный алгоритм для известных классов, поэтому в большинстве случаев с этим можно справиться с помощью стандартных контролируемых методов. Однако есть один важный аспект, о котором следует помнить: аномалии — это редкие события! Если вы решаете задачу с этой конфигурацией, вам следует изучить некоторые из существующих методов (и, возможно, разработать некоторые из них самостоятельно) для работы с несбалансированными наборами данных.

Я собираюсь упомянуть некоторые из них. Вы можете проверить imblearn для получения более подробной информации, особенно если вы привыкли работать с python и sklearn.

  • Random Under Sampling: случайным образом отбрасывать некоторые выборки большинства классов. Эта идея лучше работает в сочетании с ансамблями (набором учащихся).
  • Передискретизация: дублируйте или создавайте виртуальные данные для меньшинства, например, с помощью SMOTE или генеративно-состязательных сетей.
  • Использование функции потерь, учитывающей дисбаланс классов. Наиболее распространенными являются: взвешенная перекрестная энтропия и очаговая потеря. Вы можете найти их реализованными в популярных библиотеках глубокого обучения, таких как pytorch и tensorflow.

Преимущества:

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

Недостатки:

  • Невозможно обнаружить неизвестные аномалии.
  • Нужны этикетки.
  • Набор данных дисбаланса.

4. Обнаружение открытых наборов

Обнаружение открытых наборов (OSD) является расширением задачи классификации одного класса. В этом случае вместо того, чтобы рассматривать задачу как бинарную задачу, алгоритм должен классифицировать N классов (N > 1), а также дополнительно обнаруживать, когда данная выборка не принадлежит ни к одному из N классов (преобразовывая задачу в N +1 класс).

Как и в случае с проблемой одного класса, вы можете включить Outlier Expoxure в свой конвейер обучения. Однако, если у вас уже есть обученная нейронная сеть в N известных классах, нужно ли вам начинать с нуля? Удивительно, но нет. Есть некоторые интересные результаты о весах в последнем слое классификатора и о том, как, возможно, использование нормы может помочь вам различать в некоторых случаях. Ознакомьтесь с этой бумагой для получения дополнительной информации. Тем не менее, рекомендуется включить в свой процесс обучения некоторые стратегии, ориентированные на конкретные задачи. Поэтому, если вы заранее знаете, что столкнетесь с OSD, вам следует немного глубже изучить существующие методы для ее решения.

Преимущества:

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

Недостатки:

  • Нужны этикетки.

Финальная викторина…

Можете ли вы определить, к какому типу проблем относятся примеры в 1, 2 и 3? Обратите внимание, что каждый набор изображений, соответствующих одной и той же проблеме, выделен черными линиями.