Дисбаланс класу в контрольованому машинному навчанні


47

Це взагалі питання, не характерне для будь-якого методу чи набору даних. Як ми маємо справу з проблемою дисбалансу класу в контрольованому машинному навчанні, де число 0 становить близько 90%, а число 1 - близько 10% у вашому наборі даних. Як ми оптимально навчаємо класифікатор.

Один із способів, за якими я слідую, - це вибірка, щоб зробити набір даних збалансованим, а потім навчити класифікатор і повторити це для кількох зразків.

Я вважаю, що це випадково. Чи є рамки для підходу до подібних проблем.

Відповіді:


45

Існує безліч рамок і підходів. Це питання, що повторюється.

Приклади:

  • Підкреслення . Виберіть піддіапазон наборів нулів таким чином, щоб його розмір відповідав набору одиниць. Очевидною є втрата інформації, якщо ви не використовуєте більш складний фреймворк (наприклад, я б розділив перший набір на 9 менших взаємовиключних підмножин, підготував модель на кожну з них і зібрав моделі).
  • Перенапруження . Виробляйте штучні, поки частка не складе 50% / 50%. Мій попередній роботодавець використовував це за замовчуванням. Для цього існує багато рамок (я вважаю, SMOTE є найпопулярнішим, але я віддаю перевагу більш простим хитрощам, як шумна PCA ).
  • Один клас навчання . Припустимо, у ваших даних є кілька реальних моментів (тих) і багато випадкового шуму, який фізично не існує, просочився в набір даних (все, що не є - це шум). Використовуйте алгоритм для позначення даних замість алгоритму класифікації.
  • Тренінг з урахуванням витрат . Використовуйте функцію асиметричної вартості, щоб штучно збалансувати навчальний процес.

Деякі освітлені огляди, що збільшують порядок технічної складності \ рівень деталей:

О, і, до речі, 90% / 10% не є незбалансованим. Набори даних про шахрайські операції з картками часто розбиваються на 99,97% / 0,03%. Це незбалансовано.


Щойно помітив, що шумний PCA, котрий я цитував, може розглядатися як перенапруження, регуляризація або джиттер, залежно від деталей реалізації.
Лукас Ґалліндо

Дякую Лукасу за ресурси. Допомагає багато. У мене є особлива проблема, коли всі мої зразки позначені як "1". Однак насправді цей зразок має мінімальну домішку, тобто є деякі записи, які насправді повинні бути "0", але позначені як "1". Я вважаю, що подібні проблеми належать до однієї класифікації класів. Чи правильно моє розуміння. Чи є загальна рамка, яка використовується для їх ідентифікації, я спочатку намагався кластеризувати, але це не працює.
NG_21

1
Усім цим алгоритмам потрібні деякі дані, позначені як нуль, а деякі - як одна зі 100-відсотковою категоричністю щодо правильності етикетки (або чогось дуже близького до 100%). У вас є всі, але ви знаєте, що невеликий відсоток цих даних є неправильним, інша ситуація. Не маючи жодних знань про домен програми, я би атакував її за допомогою Anomaly Detection, а потім позначив аномалії як нуль. Потім спробуйте алгоритм класифікації (Навчання в одному класі, можливо). Маючи знання про домен програми, я б хотів звернутися за допомогою до експерта з питань домену.
Лукас Ґалліндо

13

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

Зміна вибірки - це також така можливість, як ви згадуєте. У цьому випадку перенапруження класу меншин зазвичай є кращим рішенням, ніж підсилення мажоритарного класу.

Деякі методи, як-от випадкові ліси, не потребують змін.


Дякую. Чи можете ви вказати на будь-який ресурс, де це пояснено на деяких прикладах. Чи є спосіб досягти цього в R / Python, не вдаючись до кодування алгоритму з нуля.
NG_21

1
Перевірте першу функцію цього пакету R: cran.r-project.org/web/packages/unbalanced/unbalanced.pdf
Lucas Gallindo

7
Чому випадковий ліс не потребує змін? Я думаю, ти все ще можеш призначити вагу класу
мак

4

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

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

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


1

Додайте два хитрості: 1. використовуйте CDF, підраховуйте частоту ваших навчальних даних або використовуйте дуже велику валідацію (якщо ваш тестовий набір не зміниться, але набір перевірки повинен мати однаковий розподіл з навчальним набором), потім сортуйте свій прогноз і отримайте перший X% (ви рахуєте частоту раніше) для одного класу, а інші - інше / 2. зважений зразок, модель буде схильна до зваженого класу вибірки, ви можете використовувати дисперсію вибірки проти. Weightti = 1/2 (1- (vmax - vi) / vmax)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.