Линейное ядро ​​и нелинейное ядро ​​для опорных векторов машины?

45

При использовании машины опорных векторов есть ли какие-либо рекомендации по выбору линейного ядра или нелинейного ядра, например, RBF? Я когда-то слышал, что нелинейное ядро ​​имеет тенденцию не работать хорошо, когда количество функций велико. Есть ли какие-либо ссылки на этот вопрос?

user3269
источник
1
насколько мне известно, это основано на рассматриваемой проблеме, и на практике опасно использовать такие кнопки.
htrahdis

Ответы:

66

Обычно решение заключается в том, использовать ли линейное ядро ​​или ядро ​​RBF (или гауссовское). Есть два основных фактора, которые следует учитывать:

  1. Решение задачи оптимизации для линейного ядра выполняется намного быстрее, см., Например, LIBLINEAR.
  2. Как правило, наилучшая возможная прогностическая производительность лучше для нелинейного ядра (или, по крайней мере, столь же хорошей, как у линейного).

Было показано, что линейное ядро ​​является вырожденной версией RBF , поэтому линейное ядро ​​никогда не бывает более точным, чем правильно настроенное ядро ​​RBF. Цитирую тезис из статьи, которую я связал:

Анализ также показывает, что если был выполнен полный выбор модели с использованием ядра Гаусса, нет необходимости рассматривать линейный SVM.

Основное правило кратко изложено в практическом руководстве NTU по поддержке векторной классификации (Приложение C).

Если количество объектов велико, может не потребоваться отображать данные в пространство более высокого измерения. То есть нелинейное отображение не улучшает производительность. Использование линейного ядра достаточно хорошо, и нужно искать только параметр C.

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

В этих случаях нелинейные ядра не обязательно значительно более точны, чем линейные. По сути, это означает, что нелинейные ядра теряют свою привлекательность: им требуется гораздо больше ресурсов для обучения с минимальной или нулевой прибылью в предсказательной производительности, так что зачем беспокоиться.

TL; DR

Всегда старайтесь сначала линейно, так как тренироваться намного быстрее (И тестировать). Если точности достаточно, похлопайте себя по спине для хорошо выполненной работы и переходите к следующей проблеме. Если нет, попробуйте нелинейное ядро.

Марк Клазен
источник
1
У меня есть это объяснение трюк ядра: stats.stackexchange.com/questions/131138/...
37

Эндрю Нг дает хорошее эмпирическое объяснение в этом видео, начиная с 14:46, хотя все видео стоит посмотреть.

Ключевые моменты

  • Используйте линейное ядро, когда количество объектов превышает количество наблюдений.
  • Используйте ядро ​​Гаусса, когда число наблюдений больше, чем количество объектов.
  • Если количество наблюдений превышает 50000, скорость может быть проблемой при использовании гауссовского ядра; следовательно, можно хотеть использовать линейное ядро.
Akavall
источник
согласился ................
datmannz
1
ссылка мертва: я думаю, что это то же самое видео: youtube.com/watch?v=hDh7jmEGoY0
ihebiheb