machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Обнаружение аномалий с помощью автоэнкодеров Made Easy

Дата публикации Oct 26, 2019

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

Я писал статьи на тему обнаружения аномалий, начиная от разработки функций и заканчивая алгоритмами обнаружения. В области разработки функций я поделился с вами лучшими практиками виндустрия кредитных картииндустрия здравоохранения, При обнаружении алгоритмов я поделился с вамикак использовать Python Outlier Detection (PyOD)модуль. В этой статье я расскажу вам, как использовать авто-кодеры для обнаружения выбросов.

Автоэнкодеры приходят из искусственной нейронной сети

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

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

Рисунок (A): Искусственная Нейронная Сеть

Автоэнкодер - это особый тип нейронной сети, который копирует входные значения в выходные значения, как показано на рисунке (B). Он не требует целевой переменной, такой как обычный Y, поэтому классифицируется как неконтролируемое обучение. Вы можете спросить, почему мы обучаем модель, если выходные значения равны входным значениям. Действительно, нас не очень интересует выходной слой. Нас интересует скрытый основной слой.Если количество нейронов в скрытых слоях меньше, чем во входных слоях,скрытые слои будут извлекать важную информацию из входных значений. Это условие заставляет скрытые слои изучать большинство шаблонов данных и игнорировать «шумы». Таким образом, в модели автоэнкодера скрытые слои должны иметь меньшие размеры, чем у входного или выходного слоев. Если число нейронов в скрытых слоях больше, чем у входных слоев, нейронной сети будет предоставлена ​​слишком большая емкость для изучения данных. В крайнем случае он может просто скопировать входные данные в выходные значения, включая шумы, без извлечения какой-либо важной информации.

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

Рисунок (B): Автоэнкодеры

Каковы применения автоэнкодеров?

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

Почему мы применяем уменьшение размерности, чтобы найти выбросы?

Разве мы не теряем некоторую информацию, включая выбросы, если мы уменьшаем размерность? Ответ заключается в том, что после определения основных закономерностей выявляются выбросы. Многие основанные на расстоянии методы (например, KNN) подвергаются проклятию размерности, когда они вычисляют расстояния каждой точки данных в полном пространстве признаков. Высокая размерность должна быть уменьшена.Интересно, что в процессе уменьшения размерности выделяются выбросы. Можно сказать, что обнаружение выброса является побочным продуктом уменьшения размеров

Почему автоэнкодеры?

Уже есть много полезных инструментов, таких как Анализ основных компонентов (PCA), для обнаружения выбросов. Зачем нам нужны автоэнкодеры? Напомним, что PCA использует линейную алгебру для преобразования (см. Эту статью «Методы сокращения размеров с Python«). Напротив, методы автоэнкодера могут выполнять нелинейные преобразования с их нелинейной функцией активации и несколькими слоями. Более эффективно тренировать несколько слоев с помощью автоматического кодера, а не тренировать одно огромное преобразование с помощью PCA. Таким образом, методы автоэнкодера показывают свои достоинства, когда проблемы с данными являются сложными и нелинейными по своей природе.

Я надеюсь, что приведенный выше инструктаж побудит вас применить алгоритм автоматического кодирования для обнаружения выбросов. Давайте построим модель сейчас. Если вы хотите узнать больше об искусственных нейронных сетях (ANN), посмотрите видеоролик ниже. Если вы знакомы с ANN, вы можете перейти к коду Python.

Шаг 1–2–3. Руководство по обнаружению аномалий.

Эта статья является родственной статьейОбнаружение аномалий с помощью PyOD». Эта статья предлагает руководство по шагам 1-2, чтобы напомнить вам, что моделирование - не единственная задача. После моделирования вы определите разумную границу и выполните сводную статистику, чтобы показать данные, свидетельствующие о том, почему эти точки данных рассматриваются как выбросы. Эти важные задачи кратко изложены в шаге 1–2–3 на этой блок-схеме:

Удобный инструмент для обнаружения аномалий - модуль PyOD

PyOD - удобный инструмент для обнаружения аномалий. В "Обнаружение аномалий с помощью PyOD«Я покажу вам, как построить модель KNN с PyOD. Здесь я остановлюсь на автоэнкодере. Просто для вашего удобства я перечислю алгоритмы, которые в настоящее время поддерживаются PyOD в этой таблице:

Построить модель

Позвольте мне использовать функцию полезностиgenerate_data()PyOD для генерации 25 переменных, 500 наблюдений и десятипроцентных выбросов. Вы можете удивиться, почему я генерирую до 25 переменных. Напомним, что в модели автоэнкодера количество нейронов входного и выходного слоев соответствует количеству переменных, а количество нейронов скрытых слоев всегда меньше, чем у внешних слоев. Пример с большим количеством переменных позволит мне показать вам различное количество скрытых слоев в нейронных сетях.

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

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

Фиолетовые точки, сгруппированные вместе, являются «нормальными» наблюдениями, а желтые точки - выбросами.

Спецификация модели:Гиперпараметрическое тестирование в модели нейронной сети заслуживает отдельной статьи. Поскольку цель этой статьи - провести вас через весь процесс, я просто построю три простые ванильные модели с разным количеством слоев:

  • Модель 1: [25, 2, 2, 25]. Входной слой и выходной слой имеют 25 нейронов каждый. Есть два скрытых слоя, каждый из которых имеет два нейрона.
  • Модель 2: [25, 10, 2, 10, 25]. Помимо входного слоя и выходного слоя, есть три скрытых слоя с 10, 2 и 10 нейронами соответственно.
  • Модель 3: [25, 15, 10, 2, 10, 15, 25]. Есть пять скрытых слоев с 15, 10, 2, 10, 15 нейронами соответственно.

Я намеренно повторю ту же процедуру для моделей 1, 2 и 3. Не стесняйтесь пролистывать модели 2 и 3, если вы хорошо разбираетесь в модели 1.

Модель 1 -Шаг 1 - Создайте свою модель

Модель 1 -Шаг 2 - Определить точку среза

Давайте применим обученную модельClf1прогнозировать оценку аномалии для каждого наблюдения в данных испытаний. Как мы определяем выброс? Выброс - это точка, удаленная от других точек, поэтому показатель выброса определяется расстоянием. Функция PyOD.decision_function()вычисляет расстояние или оценку аномалии для каждой точки данных.

Если мы используем гистограмму для подсчета частоты по шкале аномалий, мы увидим, что высокие оценки соответствуют низкой частоте - свидетельство выбросов. Мы выбираем 4.0, чтобы быть точкой среза, а те> = 4.0, чтобы быть выбросами.

Модель 1 -Шаг 3 - Получить сводную статистику по кластеру

Давайте присвоим эти наблюдения с оценками аномалий менее 4,0 кластеру 0 и кластеру 1 для тех, кто выше 4.0 (см., Как я используюnp.where()в коде). Я рассчитываю сводную статистику по кластерам, используя.groupby(), Эта модель идентифицировала 50 выбросов (не показаны).

Следующий вывод показывает средние значения переменных в каждом кластере. Значения кластера «1» (ненормальный кластер) довольно сильно отличаются от значений кластера «0» (нормальный кластер). Значения «баллов» показывают среднее расстояние этих наблюдений до других. Высокий «балл» означает, что наблюдение далеко от нормы.

Разве вы не любите инструкцию Шаг 1–2–3, чтобы найти аномалии? Если вам нравится трехэтапный процесс, вы можете просмотреть модели 2 и 3

Модель 2—Шаг 1, 2 - Построить модель и определить точку среза

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

Модель 2—Шаг 3 - Получить сводную статистику по кластеру

Я присваиваю эти наблюдения с оценками аномалий менее 4,0 кластеру 0 и кластеру 1 для тех, кто выше 4.0. Модель 2 также идентифицировала 50 выбросов (не показаны).

Сводная статистика кластера «1» (аномальный кластер) отличается от статистики кластера «0» (нормальный кластер). Наблюдения в кластере 1 являются выбросами.

Позвольте мне повторить тот же трехэтапный процесс для Модели 3.

Модель 3—Шаг 1,2,3

Модель 3 также идентифицирует 50 выбросов, а точка среза - 4,0.

Как и в модулях 1 и 2, сводная статистика кластера «1» (аномальный кластер) отличается от статистики кластера «0» (нормальный кластер). Наблюдения в кластере 1 являются выбросами.

Совокупность для достижения стабильности модели

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

Существует четыре способа агрегирования результатов, как показано ниже.

  • Средний: средний балл всех детекторов.
  • Максимум Максимума (МОМ)
  • Среднее из максимума (AOM)
  • Максимум среднего (МОА)

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

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

Средний метод

Шаг 2 - Определить точку среза

average()Функция вычисляет среднее значение выбросов за несколько моделей (см.Справочник по PyOD API).

Похоже, мы можем идентифицировать эти> = 0.0 как выбросы. Наш пример идентифицирует 50 выбросов (не показаны).

Шаг 3 - Получить сводную статистику по кластеру

Следующий код и результаты показывают, что сводная статистика кластера «1» (аномальный кластер) отличается от статистики кластера «0» (нормальный кластер). Наблюдения в кластере 1 являются выбросами.

df_test.groupby('y_by_maximization_cluster').mean()

Метод Максимума Максимума

Прежде чем вам надоест повторения, позвольте мне сделать еще один.

Шаг 2 - Определить точку среза

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

Точно так же, похоже, мы можем идентифицировать эти> = 0.0 как выбросы. Есть 50 выбросов (не показаны).

Шаг 3 - Получить сводную статистику по кластеру

df_test.groupby('y_by_maximization_cluster').mean()

Последнее напоминание

Процедура применения алгоритмов кажется очень выполнимой, не так ли? Еще раз, позвольте мне напомнить вам, что тщательно продуманные, проницательные переменные являются основой для успеха модели обнаружения аномалий. Многие промышленные приложения требуют сложных функций проектирования. Сердечно приглашаем вас посмотреть «Создание переменных для обнаружения мошенничества. Часть I. Создание мошенничества с картой" а также "Создание переменных для обнаружения мошенничества. Часть II. Мошенничество в сфере здравоохранения, злоупотребления и злоупотребления».

Оригинальная статья

Footer decor

© machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map