我是新来的SVM。 我用LIBSVM为MATLAB,和预测相后,我已经有了一个决策值阵列。 从SVM理论:每个测试记录z为指定为正面的,如果
F(z)的= 1
其中,f(z)的被定义为
F(z)的=符号(W * Z + b)的
所以,我怎么能与该数组中的判定值的一个实例Z,使用F(Z)? 基于决策值的预测如此:如果dec_value> 0,则z为正,否则z是负的?
我是新来的SVM。 我用LIBSVM为MATLAB,和预测相后,我已经有了一个决策值阵列。 从SVM理论:每个测试记录z为指定为正面的,如果
F(z)的= 1
其中,f(z)的被定义为
F(z)的=符号(W * Z + b)的
所以,我怎么能与该数组中的判定值的一个实例Z,使用F(Z)? 基于决策值的预测如此:如果dec_value> 0,则z为正,否则z是负的?
是的,你是正确的,如果f(z)是正的,那么实例属于+1级,如果其负面属于-1级。 F(z)的值不可解释的。
虽然功能:
F(z)的=符号(W * Z + b)的
看起来像一个超平面的方程,它的不同在于,W是不正常的矢量 - 它的长度不为1,因此f(z)的值不从超平面的距离,这就是为什么它被指定为符号( ..),使之清除值仅用于确定实例落在其上的超平面侧。
一些背景资料:
我们的目标是找到这给两个类之间的最大间隔超平面:
所以,目的是最大限度的利润,这是 ,因此最大限度地减少 。 请记住,通常当W是用于表示作为超平面的法线矢量, 是1,即不是这里的情况很明显,因为就没有优化问题。 而不是保持的 = 1和改变边缘部的宽度,我们已经固定的余量为2的宽度,并且允许 在尺寸变化来代替。
这给我们的原始优化问题 (用软边距):
这似乎是你指的是什么。 然而,这个方程来源于基本的软最大间隔分类,这是SVM的基础。 真正的SVM被配制成拉格朗日双重允许使用的内核。 关于SVM整洁的事情是,当上述问题(和它的约束)在拉格朗日配制,除了拉格朗日乘数的所有变量辍学,留给我们下面的问题:
公告不存在W上 。 培训点X(Y是标签,1或-1),现在只一起出现的点积,使我们能够采用核技巧获得的非线性模型。
但是,如果我们没有W¯¯什么是我们的决定作用? 它成为我们的支持向量 ,我们发现了拉格朗日乘数的作用。
这是libsvm的生产和它存储你已经训练模式是什么。 它存储的支持向量和相关的阿尔法。 对于线性SVM,您可以获取原始W, 这是在LIBSVM FAQ这里解释 ,但它不会成为你LIBSVM回来自动什么,这只能为线性核来完成。
支持向量机决策函数的基础上,拉格朗日乘数和支持向量的价值只能由它的符号,以及解释。
阅读文档却对我说:
第三个[返回值]是包含判决值或概率估计矩阵(如果指定了“-b 1”)。 如果k是在训练数据的类的数量,为判定值,每行包括预测K(K-1)/ 2个二进制类SVM的结果。
因此,对于两舱的问题,你得到的是含有决定一个矢量值f(z)
所以这意味着一切都属于第一类有d <0,一切都属于第二类有D> 0。
一般来说:LIBSVM认为其第一类是它得到等等的第一个标签。 因此,对于有可靠的结果,你需要你的数据第一排序。
在二进制情况下,该保持过多:无论你的标签饲料svmtrain去,它会把它遇到的第一个为1级,第二为-1级。 这是通过喂养它一个简单的数据集平凡可验证:
Y = [-ones(100,1);ones(100,1)];
m = svmtrain(Y,Y); % train with all labels as data (never do this in practices, not the "all" part, not the training on labels part ;)
[a,b,c] = svmpredict(Y,Y,m); % of course this will give 100% accuracy.
b' % you can see that the first label will always have an internal representation of 1.
对于多类分类此不同的是:那么它包含k个(K-1)/ 2项,对应于全部的一对-所有类的场景的每个像素。 这意味着如。 一个4级的问题,你将不得不4 * 3/2 = 6对于每个样本值:
[ f12(z) f13(z) f14(z) f23(z) f24(z) f34(z)]
现在,如何将这些功能通过一对,所有值映射到类我真的无法从看代码很容易推断...但我猜你在哪里最感兴趣的2类情况下,无论如何,不是吗?