Оптимальная сигма для ядра RBF? - PullRequest
0 голосов
/ 02 мая 2018

Как выбрать оптимальную сигму для ядра RBF?

Я использую классификатор одного класса, на чем основывать, какие параметры брать

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Я бы предложил вам использовать какой-то Grid-Search . Это метод, в котором вы оцениваете производительность двух параметров одновременно. Для вашего SVM есть sigma и C. Следовательно, вы выполняете исчерпывающий поиск в пространстве параметров, где каждая ось представляет параметр, а точка в нем является кортежем двух значений параметра (C_i, sigma_i).

Итак, чтобы выполнить это, вы просто выбираете набор для C: {C_1,..., C_n} и для sigma: {sigma_1,..., sigma_n} и обучаете, а затем проверяете его для каждой пары параметров в двух наборах (C_i, sigma_i).

На самом деле это займет довольно много времени, поэтому я предлагаю вам попробовать нечто подобное:

LibSVM , например, предлагает Кросс-валидация по K-Fold , поэтому выберите набор значений sigma, определите фиксированное значение K (может быть от 5 до 10) и выполните перекрестная проверка для получения хорошей оценки C. Документируйте параметр C и показатель точности. После того, как вы применили это ко всем элементам вашего набора значений sigma, выберите пару параметров, которая достигла максимальной точности во время каждой процедуры перекрестной проверки.

Примечание: Я предлагаю вам не использовать SVM для одноклассных задач. Даже когда для него есть формальное определение, базовому алгоритму SVM требуются два класса для определения оптимальной границы. Следовательно, я бы предложил вам создать класс catch-all и превратить вашу проблему с одним классом в задачу с двумя классами.

0 голосов
/ 03 мая 2018

зависит от того, какую платформу машинного обучения вы используете. Если вы используете Weka, доступна опция «поиск по сетке», которая выделяет оптимальные параметры классификации. (то есть для линейного ядра это дает вам функцию стоимости, для RBF-SVM это дает сигма / гамма и C, и т. д.)

http://scikit -learn.org / стабильный / auto_examples / SVM / plot_rbf_parameters.html

Если вы используете Python, я обычно выполняю итерацию значений сигма с небольшими шагами и точностью классификации сосков на каждом шаге. Затем я выбираю сигму, которая привела к лучшей точности. Также обратите внимание, что, если вы оптимизируете параметры SVM для данной задачи классификации, вы рискуете получить дополнительное оборудование. Однако изменения итеративного шага должны дать вам лучшее представление о том, где (если есть!) Происходит переоснащение.

Удачи!

...