Оптимальные параметры будут зависеть от ваших данных. Ваш лучший (и, возможно, единственный) вариант — последовательно попробовать несколько наборов параметров и посмотреть, какой из них дает наилучшую производительность по выбранному вами показателю.
Что касается построения графика ошибок обучения и тестирования - хороший способ оценить классификатор - использовать 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