Відповіді:
Пошук сітки є повільним, оскільки він витрачає багато часу на дослідження параметрів гіперпараметрів, які майже не є оптимальними. Кращим рішенням є симплексний алгоритм Nelder-Mead , який не вимагає обчислення градієнтної інформації і простий для реалізації (на сторінці Вікіпедії має бути достатньо інформації). Також може бути якийсь код Java в панелі інструментів Weka , проте я працюю в MATLAB і не переглядав Weka дуже детально.
SMO - це алгоритм пошуку параметрів моделі, а не гіпер-параметрів.
Симплексний метод Nelder-Mead може включати стільки оцінок функцій, скільки простий пошук по сітці. Зазвичай поверхня помилок є достатньо гладкою, близькою до оптимальних значень параметрів, яких повинен бути достатньо грубого пошуку в сітці з подальшим тоншим в меншій області.
Якщо ви зацікавлені в градієнті на основі градієнта C і гамми, існують такі методи, як оптимізація меж радіусу та границі граніту або оптимізація рівня помилок на наборі перевірки. Обчислення градієнта цільової функції передбачає щось на зразок одного поїзда SVM, але простий спуск градієнта може включати лише кілька десятків ітерацій. (Дивіться на http://olivier.chapelle.cc/ams/ для статті та реалізації Matlab.)
Ось запис у блозі Алекса Смола, пов’язаний із вашим запитанням
Ось цитата:
[...] виберіть, скажімо, 1000 пар (x, x ') навмання зі свого набору даних, обчисліть відстань усіх таких пар і візьміть медіану, число 0,1 і 0,9. Тепер виберіть λ для оберненого будь-якого з цих трьох чисел. Трохи перекреслившись, ви зрозумієте, який із трьох найкращий. У більшості випадків вам більше не потрібно буде шукати.