Введение

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

Обнаружение аномалий и контролируемое обучение

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

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

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

Контролируемое обучение

  • Набор данных содержит большое количество аномалий (положительные примеры) и примерно такое же количество нормальных данных (отрицательные примеры).
  • В наборе данных достаточно аномалий одного типа, чтобы модель могла получить представление о характеристиках, определяющих аномалии.
  • Будущие аномалии будут иметь характеристики, аналогичные тем, с которыми мы столкнулись и использовали в наборе обучающих данных [1].

Различные методы обнаружения аномалий

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

1. Уменьшение размера

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

Анализ главных компонентов (PCA)

PCA создает линейное отображение данных в пространство более низкого измерения путем максимизации данных дисперсии в пространстве более низкого измерения. Это достигается путем вычисления собственных векторов и собственных значений данных и выбора желаемого количества собственных векторов в порядке убывания их собственных значений [2]. Собственные значения являются мерой распространения вдоль их соответствующего собственного вектора. Следовательно, когда выбираются собственные векторы с более высокими собственными значениями, дисперсия пространства с более низкой размерностью максимизируется. Таким образом, новое пространство страдает некоторой потерей данных, однако содержит наиболее важную дисперсию исходных данных [2].

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

Примечание. Исходный набор данных должен содержать только обычные точки данных. Если он содержит аномалии, то их должно быть очень мало по сравнению с количеством нормальных точек данных.

Шаги

  1. Вычислите распределение вероятностей (p(x)) точек данных в новом многомерном пространстве.
  2. Когда в систему поступает новая точка данных, скажем, 'z' вычислить p(z)
  3. Определите пороговое значение 'r'
  4. Если p(z) ‹ r, то z — аномалия, в противном случае — нет.

Автоэнкодеры

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

Другой способ использования автоэнкодеров заключается в построении вероятностного распределения значений потерь при реконструкции [2]. Всякий раз, когда нейронные сети обучаются какой-либо задаче, мы определяем функцию потерь, и предполагается, что нейронная сеть использует методы оптимизации, такие как градиентный спуск, для получения локального минимума. Функция потерь, используемая в автоэнкодерах, называется потерями при реконструкции. Идея состоит в том, что автоэнкодер обучается на нормальных данных, и значения потерь при реконструкции для них ниже, тогда как значения реконструкции аномалий больше [2].

Шаги

  1. Обучить автоэнкодер на нормальных точках данных
  2. Когда в систему поступает новая точка данных 'z', вычислить значение потерь при реконструкции.
  3. Определите пороговое значение 'r'
  4. Если значение потерь при реконструкции › r, то z является аномалией, в противном случае это не так.

2. Кластеризация

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

  1. Набор данных содержит нормальные точки данных с очень небольшим количеством зашумленных точек того же типа
  2. Набор данных содержит обычные точки данных и несколько типов зашумленных точек

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

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

3. Прогнозирование временных рядов

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

Сезонная декомпозиция и прогнозирование могут выполняться несколькими способами. Одним из быстрых способов является использование преобразования Фурье для разложения сигнала временного ряда на несколько синусоидальных и косинусоидальных волн, а затем выполнение прогноза для отдельных волн [3]. В конце мы объединяем все прогнозы, чтобы получить прогноз временного ряда. Важно отметить, что этот метод работает, только если сигнал временного ряда несколько непрерывен и периодичен (свойство преобразования Фурье). Одним из преимуществ этого метода является высокая степень параллелизма, поскольку прогнозы могут выполняться независимо для каждой синусоидальной или косинусоидальной волны [3].

Этапы декомпозиции и прогнозирования

  1. Разложите сигнал входного временного ряда с помощью быстрого преобразования Фурье (БПФ)
  2. Отфильтруйте волны высокой частоты и низкой амплитуды (шум)
  3. Прогноз на каждой волне
  4. Запустите обратное БПФ для прогнозов, чтобы получить окончательный прогноз

Этапы обнаружения аномалий

  1. Предсказать функцию временного ряда на будущее
  2. По мере поступления фактических будущих данных вычисляйте разницу между прогнозом и фактическими данными.
  3. Определите пороговое значение 'r'
  4. Если разница › r, то эта точка является аномалией

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

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

Если вы обнаружите какие-либо ошибки или проблемы в этом сообщении, свяжитесь со мной по адресу [email protected], и я их исправлю.

использованная литература

[1] https://www.youtube.com/watch?v=086OcT-5DYI

[2] https://towardsdatascience.com/how-to-use-machine-learning-for-anomaly-detection-and-condition-monitoring-6742f82900d7

[3] https://www.youtube.com/watch?v=VYpAodcdFfA