2013-04-26 62 views
2

我想使用支持向量機從一個非常高維的數據集,這是一個3249X40矩陣做二進制分類。我有五個類似的數據集。雖然我正確地從決策樹中得到結果(低但不同),但每次使用任何數據集時,我都會得到與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); 

它有什麼問題?我使用的決策樹是這樣的:

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

我正在從決策樹的5個集不同的結果(這似乎正確的爲好)。怎麼了?是否因爲支持向量機不能處理與變量數量相比觀察數量很少的數據集?

回答

2

你可能會需要找到(你叫什麼框約束)和Sigma的RBF核行之有效的組合:c。這通常是通過交叉驗證完成的。這就是將你的訓練數據分成兩部分,一部分是盒子約束和西格瑪訓練的一半,另一半是測試,下半場訓練,上半場測試,平均兩種精度。用於測試獲得最佳準確性的盒子約束和西格瑪組合。

這個問題涉及很多東西,檢查Supprt Vector Machine works in matlab, doesn't work in c++

+0

交叉驗證是獲得正確的訓練和測試數據的組合?我已經在這裏做了。 – MaxSteel 2013-04-26 17:11:16

+0

不,要平均找到箱子約束和伽瑪效果最好。 – carlosdc 2013-04-26 17:12:45

+0

你能解釋一下多一點。不好意思問這樣一個小問題。 – MaxSteel 2013-04-26 17:13:48