Алгоритм изолированного леса для обнаружения выбросов в Python

Алгоритм изолированного леса для обнаружения выбросов в Python

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

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

Оглавление

Алгоритм изолированного леса против метода блочной диаграммы 

Ниже показаны два изображения для обнаружения выбросов. Обратите внимание на существенные различия в визуальном представлении при использовании по сравнению с использованием модели Isolation Forest ML для обнаружения выбросов. 

Алгоритм изолированного леса для обнаружения выбросов в Python

В модели Isolation Forest ML процент выбросов, обнаруженных алгоритмом обнаружения аномалий IS, составляет 32,56%. Используя тот же алгоритм, оставшиеся 67,44% данных попадают в нормальный диапазон, что является довольно чувствительным. Наша цель — настроить эту чувствительность с помощью Python

Алгоритм изолированного леса для обнаружения выбросов в Python

Традиционный метод обнаружения выбросов

Традиционный способ найти выброс — использовать метод коробчатой ​​диаграммы . В этом методе мы используем IQR, чтобы найти то, что выходит за пределы ожидаемого диапазона данных. 

Алгоритм изолированного леса для обнаружения выбросов в Python

В этом примере эта единственная точка над усом является нашим выбросом.

Алгоритм изолированного леса для обнаружения выбросов в Python

Если мы переведем этот визуальный график в круговую диаграмму, мы получим этот конкретный выброс, который эквивалентен 2,33% от общего объема данных. 

Алгоритм изолированного леса для обнаружения выбросов в Python

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

Набор данных для алгоритма изолированного леса

Откройте наш набор данных в LuckyTemplates. Затем нажмите «Преобразовать данные». 

Алгоритм изолированного леса для обнаружения выбросов в Python

Появится наш набор данных для этого урока. Он содержит Date , number of Users , Index и Isolation Forest Outlier с выходом 1 для нормального диапазона и -1 для выбросов  .

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

Алгоритм изолированного леса для обнаружения выбросов в Python

Наш второй запрос показывает наш фрейм данных, который мы узнаем, как собрать все вместе. 

Алгоритм изолированного леса для обнаружения выбросов в Python

Коды Python

На панели «Свойства» мы видим два запущенных скрипта Python . Мы создаем вывод Isolation Forest с помощью одного из этих скриптов Python и генерируем традиционный выброс с помощью другого. 

Алгоритм изолированного леса для обнаружения выбросов в Python

Алгоритм изолированного леса Код Python

Щелкните Запустить скрипт Python , чтобы просмотреть код. 

Алгоритм изолированного леса для обнаружения выбросов в Python

В этом коде Python мы импортируем pandas как pd и используем нечто, называемое Isolation Forest. 

Алгоритм изолированного леса для обнаружения выбросов в Python

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

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

Алгоритм изолированного леса для обнаружения выбросов в Python

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

Алгоритм изолированного леса для обнаружения выбросов в Python

Что мы делаем, так это создаем экземпляр модели.

Сохраните модель как IsolationForest и позвольте модели изучить данные с пользователями. Затем создайте новый столбец под названием «Обнаружение аномалий» , который будет возвращаться ко всем полученным данным и предсказывать, какие из них должны быть выбросами, а какие нет. 

Алгоритм изолированного леса для обнаружения выбросов в Python

Для этой функции по умолчанию для загрязнения установлено значение 0,5 . Таким образом, на данный момент он очень чувствителен и будет искать много выбросов. Вот почему на нашей круговой диаграмме мы имеем очень высокий диапазон выбросов — 32,56%. 

Алгоритм изолированного леса для обнаружения выбросов в Python

Чтобы сделать его менее чувствительным, мы можем добавить заражение = .1 в функцию IsolationForest .

Алгоритм изолированного леса для обнаружения выбросов в Python

Наконец, сбросьте индекс и нажмите OK.

В результате появится сводная таблица. Перейдите на панель Applied Steps и нажмите df.

Алгоритм изолированного леса для обнаружения выбросов в Python

В выходных данных мы можем найти выбросы в столбце «Обнаружение аномалий»

Алгоритм изолированного леса для обнаружения выбросов в Python

Мы также хотим посмотреть, как он работает по сравнению с традиционным выбросом. 

Традиционный выдающийся код Python

Мы запустим еще один скрипт Python, в данном примере это Run Python script1.

Алгоритм изолированного леса для обнаружения выбросов в Python

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

Алгоритм изолированного леса для обнаружения выбросов в Python

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

Мы также знаем, что у нас есть один выброс как самая высокая точка в наших данных. Чтобы учесть это, во второй строке указано, что точки данных, превышающие q3 + 1,5 * iqr , также считаются выбросами. 

Алгоритм изолированного леса для обнаружения выбросов в Python

Верните этот набор данных и используйте функцию outliers(df, 'Users') . Затем нажмите ОК.

Алгоритм изолированного леса для обнаружения выбросов в Python

Появится сводная таблица, аналогичная той, что была у нас ранее. 

Если мы перейдем на панель «Примененные шаги» и щелкнем «Измененный тип1» , мы получим столбцы «Традиционный выброс » и «Обнаружение аномалии » рядом, причем последний использует 1 и -1 для обозначения выбросов, а не нет.

Алгоритм изолированного леса для обнаружения выбросов в Python

Однако, когда мы используем даты с Python, они могут показаться перепутанными. 

Алгоритм изолированного леса для обнаружения выбросов в Python

Что мы можем сделать, так это создать дополнительный столбец, используя Index из Add Column .

Алгоритм изолированного леса для обнаружения выбросов в Python

Затем добавьте Index к предыдущему столбцу с помощью Merge , чтобы мы могли сохранить всю информацию в этом исходном столбце/наборе данных. 

Алгоритм изолированного леса для обнаружения выбросов в Python

Как только мы соберем все вместе, мы сможем запустить наш код и обновить наши визуальные эффекты. Помните, что мы изменили загрязнение выброса с 0,5 до 0,1, поэтому мы должны увидеть, что эта часть графика немного уменьшилась. 

Алгоритм изолированного леса для обнаружения выбросов в Python

Вернитесь к визуальным элементам и нажмите «Применить изменения». 

Алгоритм изолированного леса для обнаружения выбросов в Python

Обратите внимание, как обнаружение аномалий уменьшилось с 32,56% до 11,63% наших данных. 

Алгоритм изолированного леса для обнаружения выбросов в Python

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

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

Алгоритм изолированного леса для обнаружения выбросов в Python

Алгоритм изолированного леса для обнаружения выбросов в Python


Обнаружение и демонстрация результатов выбросов в LuckyTemplates
Создание динамических триггерных точек выбросов в LuckyTemplates
Функция обнаружения аномалий LuckyTemplates: принцип работы

Заключение

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

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

Всего наилучшего,


Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Как сохранить и загрузить файл RDS в R

Как сохранить и загрузить файл RDS в R

Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.

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

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

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

Введение в фильтрацию контекста в LuckyTemplates

Введение в фильтрацию контекста в LuckyTemplates

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

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.

Идеи материализации кэшей данных в DAX Studio

Идеи материализации кэшей данных в DAX Studio

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

Бизнес-отчетность с использованием LuckyTemplates

Бизнес-отчетность с использованием LuckyTemplates

Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать