Какое ядро ​​SVM использовать для решения проблемы двоичной классификации?

9

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

Можете ли вы сказать, какое ядро ​​лучше всего подходит для этой задачи? Или мне нужно попробовать несколько из них в моем конкретном наборе данных, чтобы найти лучший? Кстати, я использую библиотеку Python scikit-learn, которая использует библиотеку libSVM.

pemistahl
источник
как вы представляете свои веб-страницы? мешок слов? Выбор ядра зависит от меры подобия, которую вы хотите в вашем пространстве ввода.
Memming
@Memming Да, я использую сумку слов. Что именно вы подразумеваете под мерой сходства? Я расследую, содержит ли веб-страница какую-то конкретную информацию или нет.
pemistahl
Вы можете найти это руководство полезным, если вы еще не проверили его ( csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf ). Libsvm имеет встроенную схему перекрестной проверки в k раз для выбора между моделями и параметрами модели.
Зоран
@PeterStahl Кроме того, это зависит от того, какие границы классов вы ожидаете. У меня нет опыта работы с кучей слов, поэтому я не могу вам чем-то помочь.
Memming

Ответы:

10

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

Следует учитывать, что каждая функция ядра имеет 1 или более параметров, которые необходимо оптимизировать для вашего набора данных, что означает, что, если вы делаете это правильно, у вас должна быть вторая тренировочная коллекция, на которой вы можете исследовать лучшие значения для этих параметров. (Я говорю о второй несдерживаемой коллекции, потому что у вас уже должна быть одна, которую вы используете, чтобы выяснить лучшие входные функции для вашего классификатора.) Некоторое время назад я провел эксперимент, в котором я провел крупномасштабную оптимизацию каждого из эти параметры для простой задачи классификации текста и обнаружили, что каждое ядро, казалось, работало достаточно хорошо, но делал это в разных конфигурациях. Если я правильно помню свои результаты, сигмоид показал лучшие результаты, но сделал это при очень специфических настройках параметров, которые заняли у меня более месяца, чтобы найти мою машину.

Кайл.
источник
Большое спасибо за ваши мысли. Извините за мою позднюю реакцию. Сейчас я пишу магистерскую диссертацию, для которой мне нужно оценить результаты по нескольким классификаторам, а не только по SVM. К сожалению, у меня нет времени на тестирование многих комбинаций параметров. Вот почему я, вероятно, буду придерживаться линейного ядра.
Pemistahl
Удачи! Я думаю, что это хороший звонок.
Кайл.
7

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

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

Убедитесь, что вы правильно проверяете ширину ядра и подумайте, как вы хотите нормализовать свои функции (tf-idf и т. Д.).

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

flxb
источник