我正在尝试了解与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


这些不在样本点之内。任何澄清

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

我不了解分离边界恰好位于其中一个采样点上。我认为那不是最好的超飞机。我猜应该定义一些较低的决策边界。此外,它还圈出了支持向量,但我不确定这些应该是支持向量。最奇怪的是从超平面到该点的余量不大。为什么会这样呢?

最佳答案

我一点都不了解mathworks,但是根据您的链接,您使用了svmtrain()函数(描述为here):


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


因此,您的数据点才被标准化。尝试设置autoscale=false

关于machine-learning - 与svm有关的困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13785220/

10-12 18:10