Ответы:
Поиск по сетке идет медленно, так как он тратит много времени на изучение настроек гиперпараметров, которые далеко не оптимальны. Лучшим решением является симплексный алгоритм Нелдера-Мида , который не требует вычисления информации о градиенте и прост в реализации (должно быть достаточно информации на странице Википедии). В наборе инструментов Weka также может присутствовать некоторый код Java , однако я работаю в MATLAB и не рассматривал Weka в деталях.
SMO - это алгоритм поиска параметров модели, а не гиперпараметров.
Симплексный метод Нелдера-Мида может включать столько же оценок функций, сколько и простой поиск по сетке. Обычно поверхность ошибки достаточно гладкая, близкая к оптимальным значениям параметров, поэтому достаточно грубого поиска в сетке с последующим более мелким поиском в меньшей области.
Если вы интересуетесь оптимизацией C и гаммы на основе градиента, есть такие методы, как оптимизация границ допустимого радиуса или оптимизация частоты ошибок в проверочном наборе. Вычисление градиента целевой функции включает в себя что-то вроде одного поезда SVM, но простое снижение градиента может включать в себя всего несколько десятков итераций. (Посмотрите на http://olivier.chapelle.cc/ams/ статью и реализацию Matlab.)
Вот запись в блоге Алекса Смолы, связанная с вашим вопросом
Вот цитата:
[...] выберите, скажем, 1000 пар (x, x ') случайным образом из вашего набора данных, вычислите расстояние всех таких пар и возьмите медиану, квантиль 0,1 и 0,9. Теперь выберите λ, чтобы быть обратным любому из этих трех чисел. Немного пройдя перекрестную проверку, вы поймете, какой из трех является лучшим. В большинстве случаев вам не нужно искать дальше.