Я работаю над поддержкой Vector Machine около 2 месяцев. Я сам кодировал SVM и для оптимизации проблемы SVM, я использовал Sequential Minimal Optimization (SMO) доктором Джоном Платтом.Проблемы с конвергенцией последовательной минимальной оптимизации для SVM
Сейчас я нахожусь в фазе, где я собираюсь искать сетку, чтобы найти оптимальное значение C для моего набора данных. (Подробности здесь можно найти здесь: SVM Classification - minimum number of input sets for each class)
Я успешно проверил выполненную мной техническую точность SVM для значений C от 2^0 до 2^6. Но теперь у меня есть некоторые проблемы, связанные с конвергенцией SMO для C> 128. Как я попытался найти альфа-значения для C = 128, и он занимает много времени, прежде чем он фактически сходится и успешно дает альфа-значения.
Время, затраченное на схождение SMO, составляет около 5 часов для C = 100. Этот огромный я думаю (потому что SMO должен быть быстрым.), Хотя я получаю хорошую точность? Я правильно ввернусь, потому что не могу проверить точность для более высоких значений C.
Я фактически показываю количество альфов, измененных в каждом проходе SMO, и получаю 10, 13, 8 ... альфа меняется непрерывно. Условия KKT гарантируют конвергенцию, так что здесь так странно происходит?
Обратите внимание, что моя реализация отлично работает для C < = 100 с хорошей точностью, хотя время выполнения длительное.
Просьба дать мне материалы по этой проблеме.
Спасибо и приветствуются.
Я думаю, что я спросил об этом раньше по одному из ваших других вопросов, но почему вы не используете существующий пакет SVM? – dmcer
Думаю, я упомянул причину, по которой я сам внедряю SVM. Я студент бакалавриата технологии, и мой институт не позволил мне использовать любую из готовых к использованию реализаций SVM. Честно говоря, потому что, если я использую какие-либо, я не смогу узнать большинство вещей, касающихся SVM. –
Было бы достойно сравнить его с вашей реализацией.Если libsvm работает слишком медленно, вы, конечно же, не делаете ничего плохого. – bayer