Алгоритм ізоляції лісу для виявлення викидів у Python

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

У сьогоднішньому блозі ми розглянемо основи алгоритму Isolation Forest і продемонструємо, як використовувати його для виявлення викидів у наборі даних за допомогою . Ви можете переглянути повне відео цього підручника внизу цього блогу .

Зміст

Алгоритм ізольованого лісу проти методу Box Plot 

Нижче показано два візуальні елементи для виявлення викидів. Зверніть увагу на значні відмінності у візуальному представленні під час використання порівняно з тим, коли використовується модель Isolation Forest ML Model for Outlier Detection. 

Алгоритм ізоляції лісу для виявлення викидів у Python

У моделі Isolation Forest ML відсоток викидів, виявлених алгоритмом виявлення аномалій IS, становить 32,56%. Використовуючи той самий алгоритм, решта 67,44% даних потрапляє в нормальний діапазон, який є досить чутливим. Наша мета — налаштувати цю чутливість за допомогою . 

Алгоритм ізоляції лісу для виявлення викидів у Python

Традиційний метод виявлення викидів

Традиційним способом визначення викиду є використання методу прямокутної діаграми . У цьому методі ми використовуємо IQR, щоб знайти те, що виходить за межі очікуваного діапазону даних. 

Алгоритм ізоляції лісу для виявлення викидів у Python

У цьому прикладі ця єдина точка над вусом є нашим викидом.

Алгоритм ізоляції лісу для виявлення викидів у Python

Якщо ми переведемо цей візуальний графік у кругову діаграму, ми отримаємо цей конкретний викид, який еквівалентний 2,33% від загальної кількості даних. 

Алгоритм ізоляції лісу для виявлення викидів у Python

У цьому блозі ми навчимося використовувати метод Isolation Forest ML Method, налаштувати його відповідно до традиційного методу та збільшити або зменшити його чутливість.

Набір даних для алгоритму ізольованого лісу

Відкрийте наш набір даних у LuckyTemplates. Потім натисніть Transform Data. 

Алгоритм ізоляції лісу для виявлення викидів у Python

З’явиться наш набір даних для цього підручника. Він містить дату , кількість користувачів , індекс і викид ізольованого лісу з результатом 1 для нормального діапазону та -1 для викидів  .

У нас також є стовпець для Традиційного викиду та умовний стовпець під назвою IS Anomaly Detection , що відображає викид ізольованого лісу. 

Алгоритм ізоляції лісу для виявлення викидів у Python

Наш другий запит показує наш фрейм даних, який ми навчимося об’єднувати. 

Алгоритм ізоляції лісу для виявлення викидів у Python

Коди Python

На панелі властивостей ми можемо побачити наші два запущені сценарії. Ми створюємо вивід Isolation Forest за допомогою одного з цих сценаріїв і генеруємо традиційний викид за допомогою іншого. 

Алгоритм ізоляції лісу для виявлення викидів у Python

Код Python алгоритму ізоляції лісу

Натисніть Запустити сценарій Python , щоб переглянути код. 

Алгоритм ізоляції лісу для виявлення викидів у Python

У цьому коді Python ми імпортуємо як pd і використовуйте щось під назвою Isolation Forest. 

Алгоритм ізоляції лісу для виявлення викидів у Python

Ізоляційний ліс — це модель на основі дерева, яка приймає рішення на основі структури дерева, а потім вирішує, чи є він викидом чи ні. Ми називаємо це моделлю ансамблю , оскільки вона використовує два різні методи пошуку конкретного викиду. 

Ми також замінюємо змінну набору даних , яка містить наш набір даних за умовчанням, на df

Алгоритм ізоляції лісу для виявлення викидів у Python

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

Алгоритм ізоляції лісу для виявлення викидів у Python

Те, що ми робимо, це створення екземпляра моделі.

Збережіть модель як IsolationForest і дозвольте моделі вивчати дані з користувачами. Потім створіть новий стовпець під назвою «Виявлення аномалій» , який переглядатиме всі отримані дані та передбачатиме, який із них має бути викидом, а чи ні. 

Алгоритм ізоляції лісу для виявлення викидів у Python

Для цієї функції за замовчуванням для забруднення встановлено значення 0,5 . Таким чином, на даний момент він надзвичайно чутливий і шукатиме багато викидів. Ось чому на нашій раніше круговій діаграмі ми маємо дуже високий діапазон викидів у 32,56%. 

Алгоритм ізоляції лісу для виявлення викидів у Python

Щоб зробити його менш чутливим, ми можемо додати contamination = .1 у функцію IsolationForest .

Алгоритм ізоляції лісу для виявлення викидів у Python

Нарешті скиньте індекс і натисніть OK.

Результат покаже зведену таблицю. Перейдіть до панелі Applied Steps і натисніть df.

Алгоритм ізоляції лісу для виявлення викидів у Python

У вихідних даних ми можемо знайти викиди в стовпці «Виявлення аномалії»

Алгоритм ізоляції лісу для виявлення викидів у Python

Ми також хочемо побачити, як він працює поряд із традиційним викидом. 

Традиційний вихідний код Python

Ми запустимо інший сценарій Python, який у цьому прикладі є сценарієм Run Python1.

Алгоритм ізоляції лісу для виявлення викидів у Python

Цей код додає функцію викиду за допомогою першого та третього квартилів. Коли ми віднімаємо q1 від q3 , ми отримуємо міжквартильний діапазон (IQR)

Алгоритм ізоляції лісу для виявлення викидів у Python

Наступні два рядки встановлюють умови для викидів. Перший рядок говорить, що все, що менше ніж 1,5 * iqr , вважається негативним або нижчим викидом. Це також те, як ми знаходимо викиди традиційним способом.

Ми також знаємо, що в наших даних є один викид як найвища точка. Щоб врахувати це, у другому рядку зазначено, що точки даних, які вищі за q3 + 1,5 * iqr , також вважаються викидами. 

Алгоритм ізоляції лісу для виявлення викидів у Python

Поверніть цей набір даних і скористайтеся функцією outliers(df, 'Users') . Потім натисніть OK.

Алгоритм ізоляції лісу для виявлення викидів у Python

З'явиться зведена таблиця, подібна до тієї, що була раніше. 

Якщо ми перейдемо на панель Applied Steps і клацнемо Changed Type1 , ми побачимо поруч стовпці Traditional Outlier і Anomaly Detection , де в останньому буде використано 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




Висновок

Використовуючи алгоритм ізольованого лісу, ми можемо легко ідентифікувати та виключити будь-які незвичайні спостереження з нашого набору даних, таким чином підвищуючи точність нашого аналізу. Цей підручник містить покрокові інструкції щодо використання алгоритму Isolation Forest для виявлення викидів за допомогою Python, що має допомогти вам розпочати впровадження його у власні проекти.

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

Все найкраще,


Труба в R: підключення функцій за допомогою Dplyr

Труба в R: підключення функцій за допомогою Dplyr

У цьому підручнику ви дізнаєтесь, як об’єднати функції разом за допомогою оператора каналу dplyr мовою програмування R.

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX від LuckyTemplates дозволяє повернути рейтинг певного числа в кожному рядку таблиці, який є частиною списку чисел.

Вилучення тем і зображень LuckyTemplates із PBIX

Вилучення тем і зображень LuckyTemplates із PBIX

Дізнайтеся, як розібрати файл PBIX, щоб витягти теми та зображення LuckyTemplates із фону та використовувати їх для створення звіту!

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Python у LuckyTemplates: як встановити та налаштувати

Python у LuckyTemplates: як встановити та налаштувати

Дізнайтеся, як інсталювати мову програмування Python у LuckyTemplates і як використовувати її інструменти для написання кодів і відображення візуальних елементів.

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

Дізнайтеся, як обчислювати динамічну маржу прибутку за допомогою LuckyTemplates і як ви можете отримати більше інформації, глибше досліджуючи результати.

Сортування стовпців таблиці дат у LuckyTemplates

Сортування стовпців таблиці дат у LuckyTemplates

Дізнайтеся, як правильно сортувати поля зі стовпців розширеної таблиці дат. Це хороша стратегія для складних полів.

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

У цій статті я поясню, як знайти найпопулярніші продукти для регіону за допомогою обчислень DAX у LuckyTemplates, включаючи функції TOPN і CALCULATE.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Вимір сміття: що це таке і чому це щось інше, але не сміття

Дізнайтеся, як використовувати вимірювання сміття для позначок низької потужності, які ви хочете ефективно включити у свою модель даних.