2016-08-14 2 views
0

Я ищу наилучшее значение C (параметр стоимости) для обучения моему классификатору SVM. Вот мой код:Wierd behavoir при обучении классификатора SVM

clear all; close all; clc 

% Load training features and labels 
[y, x] = libsvmread('training_data.train'); %the training dataset is named training_data.train 


cost=[2^-7,2^-5,2^-3,2^-1,2^1,2^3,2^5,2^7,2^9,2^11,2^13,2^15]; 
accuracy=zeros(1,length(cost)); %This array will store the accuracy values corresponding to each element in the cost array 

for i = 1:length(cost) 
    opt = sprintf('-c %i -v 3',cost(i)); 
    accuracy(i)=svmtrain(y,x,opt); 
end 

accuracy 

Я пользуюсь библиотекой LIBSVM. Когда я запускаю эту программу, массив точности заполняется довольно странные значения: Вот результат:

Столбцы 1 по 8:

67,335 93,696 91,404 92,550 93,696 93,553 93,553 93,553

Столбцы 9 через 12:

93,553 93,553 93,553 93,553

Это означает, что я получаю самую высокую точность кросс-проверки на 2^-5. Должен ли я получить максимальную точность при максимальном значении C? (Насколько я понимаю, это штрафный фактор для ошибочной классификации). Ожидается ли от этого поведение? (Я создаю классификатор для идентификации рака молочной железы с использованием базы данных UCI ML).

ответ

1

Должен ли я получить максимальную точность при максимальном значении C? (Насколько я понимаю, это штрафный фактор для ошибочной классификации).

Нет, нет никакой гарантии, поскольку стоимость SVM не точность на основе, он использует специальный суррогатной функции, которая лишь грубо ведет себя как точность, но вы можете ожидать много случайных колебаний. В общем, вы должны ожидать высокие значения для высокого C, но не обязательно самые высокие в целом.

Ожидается ли от этого поведение? (Я создаю классификатор для идентификации рака молочной железы с использованием базы данных UCI ML).

Да, это возможный результат.

+0

Спасибо за ответ. Я новичок в Stack Overflow и, следовательно, я не могу поддержать ваш ответ. Но тем не менее это помогло. –

+1

@PrashantPandey Если он отвечает на ваш вопрос, вы должны * принять * его ответ (который всегда должен быть возможен, несмотря на SO-score). – sascha

+0

Выполнено. Спасибо за совет. –

Смежные вопросы