Я использую libsvm в режиме C-SVC с полиномиальным ядром степени 2, и мне необходимо обучить несколько SVM. Каждый тренировочный набор имеет 10 функций и 5000 векторов. Во время обучения я получаю это предупреждение для большинства SVM, которые я тренирую:
WARNING: reaching max number of iterations
optimization finished, #iter = 10000000
Может кто-нибудь объяснить, что подразумевает это предупреждение и, возможно, как его избежать?
Я также хочу применить перекрестную проверку для моих моделей, чтобы определить лучший выбор для гаммы и C (регуляризация). Мой план состоит в том, чтобы просто попробовать каждую комбинацию этих 10 значений: 0,00001, 0,0001, 0,001, 0,01, 0,1, 1, 10, 100, 1000, 10000 для обоих параметров и посмотреть, какая комбинация дает наилучшую точность во время перекрестной проверки. Этого достаточно? Должен ли я использовать больше значений в этом интервале, или я должен выбрать более широкий интервал?
источник
Ответы:
Это предупреждение означает, что итеративная подпрограмма, используемая LIBSVM для решения задачи квадратичной оптимизации, чтобы найти гиперплоскость с максимальным запасом (т. Е. Параметры и b ), разделяющую ваши данные, достигла максимального числа итераций и должна будет остановиться, в то время как текущее приближение для w может быть дополнительно улучшено (то есть, w может быть изменено, чтобы сделать значение целевой функции более экстремальным). Короче говоря, это означает, что LIBSVM считает, что ему не удалось найти гиперплоскость с максимальным запасом, что может быть или не быть правдой.вес б вес вес
Есть много причин, по которым это может произойти, я бы посоветовал вам сделать следующее:
Хорошей идеей является поиск оптимального в логарифмическом масштабе, как и вы. Я думаю, что для нормализованных данных диапазон поиска для который вы предложили, должен быть в порядке. Полезная проверка: точность классификатора не должна сильно изменяться на границах этого диапазона и между двумя значениями вашего набора. Если это так, расширьте диапазон или добавьте промежуточные значения.CС С
Обратите внимание, что дистрибутив LIBSVM для Windows должен содержать скрипт Python grid.py, который может выбирать параметры для вас (на основе перекрестной проверки и указанных диапазонов поиска). Он также может создавать контурные графики для точности SVM. Этот инструмент может быть весьма полезным.
Следующий вопрос о StackOverflow и связанных с ним вопросах также может помочь: libsvm Shrinking Heuristics
источник