2013-04-26 3 views
2

Я пытаюсь использовать SVM для выполнения двоичной классификации из очень высокого массива данных, который является матрицей 3249X40. У меня есть пять подобных наборов данных. Хотя я правильно получаю результаты из дерева решений (низкий, но разные), я получаю точно такой же результат от SVM каждый раз, какой бы набор данных я использовать не использовал. Я использую svm следующим образом:Необычный результат классификации SVM в Matlab

svmModel = svmtrain(train_mat(trainIdx,:), groups(trainIdx), ... 
      'Autoscale',true, 'Showplot',false, 'Method','QP', ... 
      'BoxConstraint',2e-1, 'Kernel_Function','rbf', 'RBF_Sigma',1); 
      pred = svmclassify(svmModel, train_mat(testIdx,:), 'Showplot',false); 

Что в этом плохого? Я использую Decision дерево, как это:

  tree=ClassificationTree.fit(train_mat(trainIdx,:),groups(trainIdx,:)); 
     pred=tree.predict(train_mat(testIdx,:)); 

Я получаю разные результаты (которые появляются правильно, а) из этих 5 наборов данных в дереве решений. Что не так? Это потому, что SVM не может обрабатывать такие наборы данных, которые имеют очень мало наблюдений по сравнению с количеством переменных?

ответ

2

Вам, вероятно, потребуется найти комбинацию C (то, что вы называете ограничением ящика) и сигма для ядра RBF, который работает хорошо. Обычно это делается с помощью перекрестной проверки. Это разделяет ваши данные тренировки на две части, для каждой комбинации ограничений коробки и сигма-тренировки на одну половину и проверку на другую половину, а также тренировку во второй половине и тестирование в первом тайме, средние обе точности. Используется для тестирования комбинации блоков и сигма, которые получили лучшую точность.

Этот вопрос охватывает много вещей, чтобы проверить Supprt Vector Machine works in matlab, doesn't work in c++

+0

Cross проверки является получение комбинации поездов и тестовых данных правильно? Это я уже делаю здесь. – MaxSteel

+0

Нет, чтобы найти в среднем, какое ограничение коробки и гамма работают лучше всего. – carlosdc

+0

Можете ли вы объяснить выше немного больше. Извините, что задал тривиальный вопрос. – MaxSteel

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