Подтвердить что ты не робот

Условная эвристика libsvm

Я использую libsvm в режиме C-SVC с полиномиальным ядром степени 2, и мне нужно обучать несколько SVM. Во время обучения я получаю одно или даже оба этих предупреждения для некоторых из SVM, которые я тренирую:

WARNING: using -h 0 may be faster
*
WARNING: reaching max number of iterations
optimization finished, #iter = 10000000

Я нашел описание параметра h:

-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)

и я попытался прочитать объяснение из документации libsvm, но для меня это слишком высокий уровень. Может кто-нибудь, пожалуйста, дать объяснение непрофессионала, и, возможно, некоторые предложения, подобные настройке, будут полезны, потому что...? Кроме того, было бы полезно узнать, установил ли этот параметр для всех SVM, которые я тренирую, может оказать негативное влияние на точность для тех SVM, которые явно не дают этого предупреждения.

Я не уверен, что делать с другим предупреждением.

Просто чтобы дать более подробную информацию: мои обучающие наборы имеют 10 атрибутов (функций) и состоят из 5000 векторов.


Update:

В случае, если кто-либо получает "максимальное количество итераций", это, по-видимому, вызвано проблемами с числовой стабильностью. Кроме того, это приведет к очень медленному времени обучения. Полиномиальные ядра извлекают пользу из методов перекрестной проверки, чтобы определить наилучшее значение для регуляризации (параметр C), а для полиномиальных ядер для меня это помогло сохранить его меньше 8. Кроме того, если ядро ​​неоднородно\sum (\ gamma x_i s_i + coef0) ^ d (извините, LaTeX не поддерживается на SO), где coef0!= 0, тогда перекрестная проверка может быть реализована с помощью метода поиска сетки как для гамма, так и для C, поскольку в этом случай, значение по умолчанию для гаммы (1/number_of_features) может быть не лучшим выбором. Тем не менее, из моих экспериментов вы, вероятно, не хотите, чтобы гамма была слишком большой, так как она вызывает числовые проблемы (я пытаюсь использовать для нее максимум 8).

Для дальнейшего вдохновения в отношении возможных значений для гамма-и-С нужно попытаться совать в grid.py.

4b9b3361

Ответ 1

Ускоряющиеся эвристики существуют для ускорения оптимизации. Как говорится в FAQ, они иногда помогают, а иногда и нет. Я считаю, что это вопрос времени выполнения, а не конвергенции.

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