SVM для незбалансованих даних


15

Я хочу спробувати використовувати векторні машини підтримки (SVM) у своєму наборі даних. Перш ніж спробувати проблему, мене попередили, що SVM не справляються з надзвичайно незбалансованими даними. У моєму випадку я можу мати 95-98% 0 і 2-5% 1.

Я намагався знайти ресурси, які говорили про використання SVM на рідкісних / незбалансованих даних, але все, що я міг знайти, - це "sparseSVM" (які використовують невелику кількість векторів підтримки).

Я сподівався, що хтось може коротко пояснити:

  1. Наскільки добре SVM, як очікується, зробить із таким набором даних
  2. Які, якщо такі є, зміни повинні бути внесені до алгоритму SVM
  3. Які ресурси / документи обговорюють це

Відповіді:


15

Багато реалізацій SVM вирішують це, привласнюючи різну вагу позитивним та негативним примірникам. По суті, ви зважуєте зразки так, щоб сума ваг позитивів була дорівнює мінусі. Звичайно, при оцінці SVM ви повинні пам’ятати, що якщо 95% даних є негативними, тривіально отримувати 95% точність, завжди прогнозуючи негатив. Тому ви повинні переконатися, що ваші показники оцінювання також зважені, щоб вони були збалансованими.

Зокрема, у тому libsvm, що ви додали як тег, є прапор, який дозволяє встановлювати ваги класу ( -wя вважаю, але перевіряйте документи ).

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


Побийте мене на це :-)
Марк Класен

@Бітож у мене така ж проблема незбалансованих даних, і я отримую точність 99%. Я використовував ваги в libsvm. Ви згадали, що показники оцінювання також повинні бути зважені. Мені хотілося знати, як можна зважити показники оцінки.
Hani Goc

1
90/100=0.90.5(0/10+90/90)=0.5

7

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


5

У випадку таких рідких даних, як SVM, буде добре працювати.

Як зазначає @Bitwise, ви не повинні використовувати точність для вимірювання продуктивності алгоритму.

Натомість слід обчислити точність, відкликання та F-бал алгоритму.


Чи можете ви, будь ласка, розширити свої міркування? Крім того, як би ви вирішили заміряти показник F після того, як класифікація (на тестовому наборі) завершена? Дякую
Спейси

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

Так, чому також SVM працює над обмеженими даними. Спасибі
Spacey

"Просто наявність розріджених функцій не представляє жодної проблеми для SVM. Один із способів побачити це - ви можете зробити випадкове обертання осей координат, що залишило б проблему незмінною і дало би те саме рішення, але зробило б дані зовсім неардинарні (це частково, як працюють випадкові прогнози "( stats.stackexchange.com/questions/23470/… )
alexandrekow
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.