Как выполнить регрессию опорных векторов с (или без) LibSVM

Я работаю над документом, который требует применения регрессии опорных векторов (SVR), предпочтительно с использованием ядра Гаусса. Немного поискав, я обнаружил, что LibSVM может помочь в решении этой задачи.

Однако я сталкиваюсь с рядом трудностей: я не совсем уверен, как это сделать, используя эту или любую другую подобную библиотеку, как определить эмпирически параметры SVR (пропускную способность ядра, стоимость и эпсилон (переменная резерва)), как а также как отображать как ошибки обучения, так и ошибки теста.

Все предложения приветствуются.


person user706838    schedule 22.07.2012    source источник


Ответы (1)


Оптимальные параметры будут зависеть от ваших данных. Ваш лучший (и, возможно, единственный) вариант — последовательно попробовать несколько наборов параметров и посмотреть, какой из них дает наилучшую производительность по выбранному вами показателю.

Что касается построения графика ошибок обучения и тестирования - хороший способ оценить классификатор - использовать F-меру в качестве показателя производительности. Это позволяет вам учитывать как ложноположительные, так и ложноотрицательные ошибки и взвешивать их в соответствии с вашим конкретным доменом. Если вы имеете в виду что-то другое, изображая ошибки обучения и теста, уточните.

РЕДАКТИРОВАТЬ: в ответ на ваш комментарий

LibSVM также не умеет оптимизировать свои собственные параметры, поэтому вам нужно предоставить ей параметры в качестве аргумента функции svm_train. Вам нужно экспериментально оптимизировать свои собственные параметры, а для этого вам потребуется какая-то единая количественная мера производительности. Я не уверен, что вы подразумеваете под задачами с 30 значениями, но вы должны иметь возможность использовать F-меру, творчески переопределяя истинное положительное, ложноположительное, истинно отрицательное и ложноотрицательное.

У вас есть два варианта: один более полный, а другой более дешевый в вычислительном отношении. Либо вы можете использовать трехуровневый вложенный цикл для тестирования множества возможных комбинаций гаммы, C и эпсилон, выбирая параметры, которые приводят к максимальной производительности на тестовых данных (я советую использовать перекрестную проверку, чтобы избежать переобучения для конкретного теста). данные), или вы можете оптимизировать каждый из них последовательно — во-первых, с учетом мягкости, C и эпсилон по умолчанию, перебирая множество значений гаммы, пока не найдете лучшее; затем сделайте то же самое для C и эпсилон.

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

Чтобы сделать любой метод более точным (хотя всегда за счет возможного переобучения, помните об этом), используйте телескопический поиск — скажем, вы ищете от 1 до 101 в первый раз с размером шага 10, поэтому вы ищете 1, 11. , 21...101. При следующем прогоне после того, как вы достигли наилучшего значения, скажем, 51, выполните поиск среди 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, чтобы повторно использовать ту же информацию, но стать точнее.

Чтобы сделать любой метод менее чувствительным к случайным колебаниям (скажем, в случайных сгибах, которые вы создаете для перекрестной проверки), запустите несколько тестов перекрестной проверки с параметрами по умолчанию (хорошие значения по умолчанию, я бы сказал, вероятно, 1,0 для C и 1E-9 для эпсилон, я не уверен насчет гаммы) и получите среднее значение и стандартное отклонение используемой вами меры производительности. Затем вы можете сказать, является ли данный показатель производительности статистически значимо лучше, чем второй лучший, или чем просто использование параметров по умолчанию.

person CosmicComputer    schedule 22.07.2012
comment
Не могли бы вы помочь мне, как использовать эту библиотеку ??? Я просто немного сосредоточен на этом прямо сейчас ... Кроме того, есть ли у вас какие-либо советы о том, как заставить приложение автоматически выбирать оптимальные значения (например, путем написания специальной итерационной процедуры проектирования). Наконец, что касается проблемы построения графика, я не уверен, что F-мера будет работать так, как я ожидал, потому что я ищу решение с 30 значениями, а не только с одним значением. Как вы думаете? - person user706838; 22.07.2012