Больше общего вопроса. Я использую rbf SVM для прогнозного моделирования. Я думаю, что моя текущая программа определенно нуждается в ускорении. Я использую Scikit Learn с грубым, чтобы точный поиск сетки + перекрестная проверка.
Каждый запуск SVM занимает около минуты, но со всеми итерациями я все еще нахожу его слишком медленным. Предполагая, что в конце концов я буду использовать многопоточную часть перекрестной проверки для нескольких ядер, какие-нибудь рекомендации по ускорению моей программы? Есть ли более быстрые реализации SVM? Я слышал о некоторых графических процессорах SVM, но мало что изучал. Есть ли пользователи и быстрее ли?
Ответы:
Алгоритм Google София содержит чрезвычайно быструю реализацию линейного SVM. Это один из самых быстрых SVM, но я думаю, что он поддерживает только классификацию и поддерживает только линейные SVM.
Там даже пакет R !
источник
Самое простое ускорение, которое вы получите, - это параллельная проверка. Лично мне нравится карета пакет в R , который использует foreach в качестве бэкэнда. Это позволяет очень легко распределять перекрестную проверку и поиск по сетке на несколько ядер или несколько компьютеров.
Caret может работать со многими различными моделями, включая SVM rbf:
Обратите внимание, что библиотека doMC () доступна только для Mac и Linux, ее следует запускать из командной строки, а не из графического интерфейса, и она ломает любые модели из RWeka. Также легко использовать кластеры MPI или SNOW в качестве параллельного бэкэнда, у которого нет этих проблем.
источник
Я понимаю, что это довольно старый вопрос, но также возможно (в зависимости от размера вашего набора данных он может быть более или менее эффективным) использовать низкоразмерные аппроксимации карты характеристик ядра, а затем использовать ее в линейном SVM. См. Http://scikit-learn.org/stable/modules/kernel_approximation.html.
источник
Взгляните на многопроцессорный модуль Python . Это делает распараллеливание действительно простым и идеально подходит для перекрестной проверки.
источник
R имеет большой GPU-ускорение SVM пакет rpusvm , она занимает ~ 20 секунд , чтобы тренироваться на 20K образцов * 100 размеров, и я обнаружил , что процессор никогда не перегружать его, поэтому он эффективно использует GPU. Однако для этого требуется графический процессор NVIDIA.
источник
Оповещение: Это бесстыдная вилка.
Рассмотрим DynaML библиотеку ML на базе Scala, над которой я работаю. Я реализовал LS-SVM на основе ядра (векторные машины поддержки наименьших квадратов) вместе с автоматической настройкой ядра, используя поиск по сетке или сопряженный имитированный отжиг.
http://mandar2812.github.io/DynaML/
источник