machinelearningmastery.ru

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

Home

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

Дата публикации Aug 6, 2019

Вы специалист по обнаружению аномалий или планируете усовершенствовать моделирование при обнаружении аномалий?Тогда вы не должны пропустить этот замечательный Python Outlier Detection (PyOD) Toolkit.Это всеобъемлющий модуль, который был показан академическими исследованиями (см. Эторезюме) и сайты машинного обучения, такие как Towards Data Science, Analytics Vidhya, KDnuggets и т. д.

Хорошая особенность - король!

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

Что такое PyOD?

PyOD упрощает моделирование обнаружения аномалий. Он собирает широкий спектр методов, начиная от контролируемого обучения до неконтролируемых методов обучения. Вам не нужно проверять каждую технику, чтобы найти аномалии. В зависимости от ваших данных, вы найдете, что некоторые методы работают лучше, чем другие. На рисунке (A) показаны результаты PCA и одноклассного SVM. Сколько техник есть в PyOD? На рисунке (B) перечислены методы, которые довольно популярны при обнаружении аномалий, включая PCA, kNN, AutoEncoder, SOS и XGB.

Рисунок (А)
Рисунок (B)

Я также написал еще две статьи о PyOD. Если вы хотите использовать этот модуль, я рекомендую вам прочитать «Обнаружение аномалий с помощью автоэнкодеров Made EasyИИспользуйте Изолированный Лес с PyOD».

Три ключевых шага в обнаружении аномалий

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

  1. Построй свою модель
  2. Определить разумную границу
  3. Представить сводную статистику нормальных и аномальных кластеров

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

В этом посте я собираюсь сгенерировать некоторые данные с выбросами. Я использую функцию полезностиgenerate_data()PyOD и генерировать десять процентов выбросов.

Желтые точки на диаграмме рассеяния - это десять процентов выбросов. Очевидно, что «нормальные» наблюдения - это фиолетовые точки.

Давайте использовать KNN, чтобы обнаружить выбросы.Я выбираюКалгоритм k-NN () ближайших соседей для обнаружения аномалий.К-NN алгоритм является непараметрическим методом, который идентифицируетКБлижайшие учебные примеры. Любые изолированные точки данных потенциально могут быть классифицированы как выбросы. Следующие строки завершают обучение для модели k-NN и сохраняют модель как clf.

С обученной моделью k-NN вы можете обратиться к тестовому набору данных для прогнозирования выбросов. Функция «solution_functions ()» генерирует оценку аномалии на основе прогнозов вашей модели.

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

Метод КНН

Шаг 2: Определить разумную границу

Высокий показатель аномалии означает более ненормальный. Гистограмма ниже показывает, что есть выбросы. Если мы выберем 1.0 как точку отсечения, мы можем предложить те> = 1.0 как выбросы

Шаг 3: Представьте сводную статистику нормальных и аномальных кластеров

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

Модели обнаружения выбросов предрасположены к выбросам

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

Достижение стабильности модели путем объединения нескольких моделей

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

  1. Средний
  2. Максимум Максимума (МОМ)
  3. Среднее из максимума (AOM)
  4. Максимум среднего (МОА)

Сначала мы сгенерируем 20 k-NN моделей и соберем все прогнозы моделей в одном наборе данных. Каждое из 500 наблюдений будет иметь 20 прогнозов.

Метод 1: Средний

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

df_test.groupby(‘y_by_average_cluster’).mean()

Метод 2: Максимум Максимума (МОМ)

Когда мы используем метод Maximum-of-Maximum, мы получаем 73 точки данных, у которых значения выбросов превышают 0. Мы используем следующий код для получения сводной статистики по кластерам.

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

Метод 3: Среднее из максимума (AOM)

Когда мы используем метод Average-of-Maximum, мы получаем 72 точки данных, у которых значения выбросов превышают 0. Мы используем следующий код для получения сводной статистики по кластерам.

df_test.groupby('y_by_aom_cluster').mean()

Способ 4: максимум среднего (МОА)

Когда мы используем метод Maximum-of-Average, мы получаем 69 точек данных, у которых значения выбросов превышают 0. Мы используем следующий код для получения сводной статистики по кластерам.

df_test.groupby('y_by_moa_cluster').mean()

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

Footer decor

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