混乱与svm有关

时间:2012-12-09 06:20:36

标签: machine-learning artificial-intelligence svm

我正在尝试理解与svm http://www.mathworks.com/help/bioinfo/ref/svmclassify.html

相关的这个示例

我运行了获取虹膜数据的示例并绘制了示例中给出的svm。但是,当我在svmstruct中查看支持向量时,我会获得许多新值。 AFAIK,支持向量应该是样本本身,位于边缘的样本。但是,当我打印svmStruct.SupportVectors时,我会得到不同的值,如

-0.0073   -0.4143
   -0.3706   -0.4143
   -0.2495   -0.1789
   -0.1284    0.2919
   -0.0073   -0.4143
   -0.1284   -0.6498
    0.1139    0.0565
    0.2350   -0.1789
   -0.4918   -0.1789
   -0.2495   -0.4143
   -0.4918    0.0565
    0.1139   -0.4143
   -0.0073    0.2919
   -0.1284    0.2919
   -0.0073    0.2919
    0.2350   -0.4143
    0.8406   -0.6498
   -0.1284    0.2919
    0.2350    0.2919

这些不属于样本点。任何澄清

我也试着运行自己的例子 这就是我得到的。

我不明白分离边界恰好位于其中一个样本点上。我不认为这是最好的超平面。它应该已经定义了一些决定边界,我想。它还圈出了支持向量,我不确定那些应该是支持向量。最奇怪的是从超平面到点的边距并不大。为什么会这样?

enter image description here

2 个答案:

答案 0 :(得分:2)

我根本不懂数学作品,但根据您的链接,您使用svmtrain()函数(描述为here):

  

SupportVectors - 数据点矩阵,每行对应于规范化数据空间中的支持向量。在根据“AutoScale”参数应用归一化后,此矩阵是Training输入数据矩阵的子集。

所以你的数据点只是规范化了。尝试设置autoscale=false

答案 1 :(得分:0)

是的,snøreven是对的。我只是让它更通用:

每个ML问题都有两个阶段:

  1. 训练模型
  2. 测试/使用训练模型
  3. 如果你有三个阶段,那就更好了:

    1. 训练模型
    2. 评估模型(这对我的目的是否足够好?)
    3. 测试/使用训练模型
    4. Very short and basic introduction to ML

      ML course

      在您的特定情况下,您需要在Matlab中训练SVM分类模型,然后您可以通过svmclassify函数使用它。