2013-04-26 72 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