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