matlab – Libsvm中的决策值

我是SVM的新手.我使用Libsvm for Matlab,在预测阶段后我得到了一个决策值数组.根据SVM理论:每个测试记录z被指定为正数if

f(z)=1

其中f(z)定义为

f(z)=sign(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.这里的情况并非如此,因为没有优化问题.我们将边距的宽度固定为2,而不是保持= 1并改变边距的宽度,而是允许改变尺寸.

这给了我们primal optimization problem(软边距):

这似乎就是你所指的.然而,这个等式来自基本的软最大边际分类器,它是SVM的基础. True SVM被公式化为Lagrangian dual以允许使用内核.关于SVM的巧妙之处在于,当拉格朗日语中出现上述问题(及其约束)时,除了拉格朗日乘数之外的所有变量都会丢失,这给我们留下了以下问题:

请注意,没有w.训练点x(y是标签,1或-1),现在只作为点积一起出现,允许我们使用kernel trick来获得非线性模型.

但是,如果我们没有w,我们的决策功能是什么?它成为我们支持向量和我们发现的拉格朗日乘数的函数.

这就是libsvm生成的内容以及它作为您训练过的模型存储的内容.它存储支持向量和相关的alpha.对于线性SVM,您可以获得原始w,this is explained here in the LibSVM FAQ,但它不会是您从LibSVM自动获取的内容,而这只能用于线性内核.

基于拉格朗日乘数和支持向量的SVM决策函数的值也应仅由其符号解释.

转载注明原文:matlab – Libsvm中的决策值 - 代码日志