Я начинающий, когда дело доходит до поддержки векторных машин. Существуют ли рекомендации, в которых говорится, какое ядро (например, линейное, полиномиальное) лучше всего подходит для конкретной задачи? В моем случае я должен классифицировать веб-страницы в зависимости от того, содержат ли они какую-то конкретную информацию или нет, то есть у меня есть проблема двоичной классификации.
Можете ли вы сказать, какое ядро лучше всего подходит для этой задачи? Или мне нужно попробовать несколько из них в моем конкретном наборе данных, чтобы найти лучший? Кстати, я использую библиотеку Python scikit-learn, которая использует библиотеку libSVM.
classification
svm
model-selection
libsvm
kernel-trick
pemistahl
источник
источник
Ответы:
Вы на самом деле натолкнулись на что-то из открытого вопроса в литературе. Как вы говорите, существует множество ядер (например, линейная, радиальная базисная функция, сигмоидальная, полиномиальная), и она будет выполнять вашу задачу классификации в пространстве, определяемом их соответствующими уравнениями. Насколько мне известно, никто точно не показал, что одно ядро всегда лучше справляется с одним типом задачи классификации текста по сравнению с другим.
Следует учитывать, что каждая функция ядра имеет 1 или более параметров, которые необходимо оптимизировать для вашего набора данных, что означает, что, если вы делаете это правильно, у вас должна быть вторая тренировочная коллекция, на которой вы можете исследовать лучшие значения для этих параметров. (Я говорю о второй несдерживаемой коллекции, потому что у вас уже должна быть одна, которую вы используете, чтобы выяснить лучшие входные функции для вашего классификатора.) Некоторое время назад я провел эксперимент, в котором я провел крупномасштабную оптимизацию каждого из эти параметры для простой задачи классификации текста и обнаружили, что каждое ядро, казалось, работало достаточно хорошо, но делал это в разных конфигурациях. Если я правильно помню свои результаты, сигмоид показал лучшие результаты, но сделал это при очень специфических настройках параметров, которые заняли у меня более месяца, чтобы найти мою машину.
источник
Попробуйте ядро Гаусса.
Ядро Гаусса часто пробуют первыми, и оно оказывается лучшим ядром во многих приложениях (с вашими возможностями, такими как мешок слов). Вам также следует попробовать линейное ядро. Не ожидайте, что это даст хорошие результаты, проблемы классификации текста имеют тенденцию быть нелинейными. Но это дает вам ощущение ваших данных, и вы можете быть довольны тем, насколько нелинейность улучшает ваши результаты.
Убедитесь, что вы правильно проверяете ширину ядра и подумайте, как вы хотите нормализовать свои функции (tf-idf и т. Д.).
Я бы сказал, что вы можете улучшить свои результаты с большей нормализацией функций, чем при выборе другого ядра (т.е. не гауссовского).
источник