Яке ядро ​​SVM використовувати для проблеми бінарної класифікації?


9

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

Чи можете ви взагалі сказати, яке ядро ​​найкраще підходить для цього завдання? Або мені потрібно спробувати декілька з них на моєму конкретному наборі даних, щоб знайти найкращий? До речі, я використовую бібліотеку Python scikit-learn, яка використовує бібліотеку libSVM.


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

@Memming Так, я використовую уявлення про мішки. Що ви точно маєте на увазі під мірою подібності? Я розслідую, чи містить веб-сторінка якусь певну інформацію чи ні.
pemistahl

Ви можете вважати цей підручник корисним, якщо ви ще не перевірили його ( csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf ). Для вибору між моделями та параметрами моделі Libsvm має вбудовану схему перехресної перевірки з кратним перекладом.
Зоран

@PeterStahl Крім того, це залежить від того, які межі класу ви очікуєте. Я не маю досвіду з простором мішкового слова, тому я не можу вам дуже допомогти.
Пам'яті

Відповіді:


10

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

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


Дуже дякую за ваші думки. Вибачте за мою пізню реакцію. Я зараз пишу свою магістерську роботу, на яку мені потрібно оцінити результати за кількома класифікаторами, не лише SVM. На жаль, у мене немає часу тестувати багато комбінацій параметрів. Тому я, мабуть, буду дотримуватися лінійного ядра.
pemistahl

Удачі! Я думаю, що це гарний дзвінок.
Кайл.

7

Спробуйте ядро ​​Гаусса.

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

Переконайтеся, що ви правильно перекреслили валідацію ширини ядра та подумайте, як ви хочете нормалізувати свої функції (tf-idf тощо).

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

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