Навчання дерева рішень проти незбалансованих даних


43

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

Дані складаються з студентів, які вивчають курси, а змінна класу - це статус курсу, який має два значення - Відкликаний або Поточний.

  • Вік
  • Етнічність
  • Стать
  • Курс
    ...
  • Статус курсу

У наборі даних є набагато більше екземплярів, які є Поточними, ніж Вилучені. Вилучені екземпляри становлять лише 2% від загальної кількості випадків.

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

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

Який підхід можна використовувати для вирішення цієї проблеми та побудови більш точного класифікатора?


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

Відповіді:


61

Це цікава та дуже часта проблема класифікації - не лише у деревах рішень, а практично у всіх алгоритмах класифікації.

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

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

Машинна література з цієї теми по суті розробила три стратегії рішення.

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

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

  3. Додатковим запобіжним засобом є заміна точності так званою врівноваженою точністю . Він визначається як середнє арифметичне точності класу, де і представляють точність, отриману на позитивних та негативних прикладах відповідно. Якщо класифікатор працює однаково добре для будь-якого класу, цей термін зменшується до звичайної точності (тобто кількості правильних прогнозів, поділених на загальну кількість прогнозів). На противагу цьому, якщо звичайна точність є вище шансу лише тому, що класифікатор використовує перевагу неврівноваженого тестового набору, то врівноважена точність, у відповідних випадках, впаде до випадковості (див. Ескіз нижче).π+π-ϕ: =12(π++π-),π+π-

Точність та врівноважена точність

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

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


3
Бродер - дякую за детальну інформацію. Це було дуже корисно! Спочатку я спробував використовувати функцію передачі даних у SQL Server, однак, слідуючи вашим порадам, я перейшов до використання R. Я використовував алгоритм SMOTE, щоб збалансувати набір даних і намагався використовувати як дерева рішень, так і SVM. DT дають збалансовану точність 81%, а ще краще SVM. Хоча одне питання - чи слід перевірити модель на наборі даних, який також містить дані rebalancd? Або слід перевіряти дані, схожі на оригінал?
chrisb

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

Дякую Бродеру. Діяння ставить іншу картину на речі. Врівноважена точність падає приблизно до 56%. Чутливість падає до 17% на моїй найкращій моделі (відповідає класу, який мені потрібен для кращих прогнозів). Я вважаю, що це має сенс, оскільки клас, що перебирається, є класом, і ці приклади будуть перераховані кілька разів. Я спробую збільшити балансування набору навчальних даних, щоб побачити, чи це має значення.
chrisb

Зараз випробувавши його з різними пропорціями збалансованих даних, найкраща збалансована точність, яку я можу отримати, - це Ada Boost з 60%. Я намагаюся хоча визначити, що "добре". Моя головна мета - передбачити студентів, які можуть вийти з курсу. Оскільки Виведення був моїм позитивним класом, я намагався максимально збільшити кількість справжніх позитивних результатів (тобто підвищити чутливість). Збалансування даних робить це на шкоду кількості помилкових негативів. 60% здається мені не кращим, ніж випадковим, - але я не маю базової лінії щодо того, що в цьому випадку "добре".
chrisb

2
@chrisb, Це трохи (!) пізній коментар. На дотичній основі ви можете спробувати регресію пропорційних небезпек Кокса ( cran.r-project.org/doc/contrib/Fox-Companion/… ) для моделювання виживання своїх учнів. Можливо, вам не знадобиться обмеження чи надмірне відбір проб.
Жубарб

8

Наступні чотири ідеї можуть допомогти вам вирішити цю проблему.

  1. Виберіть відповідний показник продуктивності, а потім тонко налаштуйте гіперпараметри вашої моделі - наприклад регуляризацію - щоб досягти задовільних результатів у наборі даних з перехресною валідацією і, як тільки буде задоволено, протестуйте свою модель на тестовому наборі даних. Для цих цілей встановіть 15% ваших даних, які будуть використані для перехресної перевірки, і 15%, які будуть використані для остаточного тестування. Встановлена ​​міра в машинному навчанні, яку підтримує Ендрюс Нг, - це статистика F1, визначена як . Спробуйте максимально збільшити цей показник у наборі даних з крос-валідацією та переконайтесь, що продуктивність стабільна і на тестовому наборі даних.2ПrеciсiонRеcаллПrеciсiон+Rеcалл

  2. Використовуйте параметр 'попередній' у Деревах рішень, щоб повідомити алгоритм попередньої частоти класів у наборі даних, тобто якщо в наборі набору даних 1 000,0000 prior = c(0.001, 0.999)(у R) є 1000 позитивів .

  3. Використовуйте аргумент "ваг" у функції класифікації, яку ви використовуєте, щоб суворо покарати алгоритм для неправильних класифікацій рідкісних позитивних випадків

  4. Використовуйте аргумент "вартість" в деяких алгоритмах класифікації - наприклад, rpartв R--, щоб визначити відносні витрати на неправильні класифікації істинних позитивних і істинних негативів. Ви, природно, повинні встановити високу вартість для неправильної класифікації рідкісного класу.

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


2

Я відповів в останній темі :

Ми робимо вибір зразка з різними пропорціями. У вищезгаданому прикладі це було б 1000 випадків "ТАК" і, наприклад, 9000 випадків "НІ". Такий підхід дає більш стабільні моделі. Однак його потрібно перевірити на реальній вибірці (що має 1 000 000 рядків).

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

Ви можете шукати це як "завищення рівня статистики", перший результат досить хороший: http://www.statssa.gov.za/isi2009/ScientistProgramme/IPMS/1621.pdf


1

Додавання до відповіді @Kay 1-ї стратегії рішення: Синтетичне перенапруження меншин ( SMOTE ), як правило, краще, ніж під чи надмірний вибірки з мого досвіду, оскільки я думаю, що це створює компроміс між обома. Він створює синтетичні зразки класу міноритарності за допомогою точок даних, побудованих на багатовимірному просторі прогнозів, і він більш-менш займає середні точки між сусідніми точками на цьому просторі для створення нових синтетичних точок і, отже, врівноважує обидва розміри класу. (не впевнений у середині, деталі алгоритму тут

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