Я работаю с scikit-learn по созданию некоторых интеллектуальных моделей с SVM. У меня есть набор данных с около 5000 примерами и около 700 функций. Я в 5 раз перекрестно проверяю с помощью сеттинга 18x17 на моем тренировочном наборе, а затем используя оптимальные параметры для своего тестового набора. пробежки идут намного дольше, чем я ожидал, и я заметил следующее:Внедрение SVM, scikits учит сокращению времени работы, быстрее svm
1) Некоторые отдельные итерации по обработке SVM, кажется, занимают всего одну минуту, в то время как другие могут занимать до 15 минут. Ожидается ли это с использованием разных данных и параметров (C и гамма, я использую ядро rbf
)?
2) Я пытаюсь использовать 64-битный python для Windows, чтобы воспользоваться дополнительной памятью, но все мои процессы на python, похоже, находятся на 1 гиге в моем диспетчере задач, я не знаю, имеет ли это что-либо делать с временем выполнения.
3) Я использовал 32bit до и работал примерно на одном наборе данных, и я помню (хотя я не сэкономил результаты), это было довольно быстро. Я использовал стороннюю сборку scikit-learn для 64-битных окон, поэтому я не знаю, лучше ли попробовать это на 32-битном питоне? (источник http://www.lfd.uci.edu/~gohlke/pythonlibs/)
Любые предложения о том, как я могу сократить время выполнения, будут очень признательны. Я предполагаю, что сокращение поискового пространства моего поиска по сетке поможет, но поскольку я не уверен даже в диапазоне оптимальных параметров, я бы хотел сохранить его настолько большим, насколько могу. Если есть более быстрые реализации SVM, сообщите мне, и я могу попробовать их.
Приложение: Я вернулся и снова попытался запустить 32-битную версию. По какой-то причине это намного быстрее. Потребовалось около 3 часов, чтобы добраться до 64-битной версии до 16 часов. Почему такая разница?
Спасибо за ответы ogrisel. Они имеют большой смысл. Я не уверен в 32-битной и 64-разрядной проблемах, но если у меня будет шанс, я постараюсь сделать еще несколько таймингов. Мои данные предварительно обработаны (нормированы на 0-1), и я увеличил cache_size до 4000 для scikits (возможно, overkill). Я определенно займусь модификацией моего кода, чтобы он перешел от грубой сетки к меньшей области, что определенно поможет ускорить мой код. Еще раз спасибо. – tomas
@OGrisel, как насчет общего грубо-точного искателя сетки? – denis
Я предполагаю дополнительный вопрос, что делать, если вы выполняете кросс-проверку или поиск сетки, как можно использовать грубый точный поиск сетки? Когда вы пытаетесь усреднить или что-то еще при нескольких перекрестных проверках, пространство поиска не будет совпадать, если вы используете грубый, а затем штраф. Я уверен, что есть хороший способ, который я не знаю/отсутствует. – tomas