支持向量机(libSVM)缺失函数值
嗨,伙计们,
是否有可能从libSVM的实现中获得决策函数值?
在模型的支持向量表中有一个名为“函数值”的字段,但在我下面展示的情况中,它全为零。也许不是这样,因为我们期望函数在所有情况下都有定义,而不仅仅是支持向量。
决策函数为:
f(x)= sgn(sum_over_all_i {a*yk(x_i,x)}),其中a*为优化后的拉格朗日乘子,y为观测到的目标值,k()为核)。
谢谢!
数据和代码如下:
我使用了一个小数据集:
下面是我运行的代码:
是否有可能从libSVM的实现中获得决策函数值?
在模型的支持向量表中有一个名为“函数值”的字段,但在我下面展示的情况中,它全为零。也许不是这样,因为我们期望函数在所有情况下都有定义,而不仅仅是支持向量。
决策函数为:
f(x)= sgn(sum_over_all_i {a*yk(x_i,x)}),其中a*为优化后的拉格朗日乘子,y为观测到的目标值,k()为核)。
谢谢!
数据和代码如下:
我使用了一个小数据集:
X1 x2类
0 0.7 1
0.7 0 1
0 -0.7 1个
-0.7 0 1
0.5 0.5 1
-0.5 0.5 1
-0.5 -0.5 1
0.5 -0.5 1
0 2.8 2
-2.8 0 2
0 -2.8 2
2.8 0 2
2 2 2
2 2 2
2 -2 2
2 -2 2
下面是我运行的代码:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<过程version = " 5.0 " >
> <上下文
<输入/ >
<输出/ >
<宏/ >
> < /上下文.
< /操作符>
< /操作符>
<列出关键= " class_weights " / >.
< /操作符>
<列出关键= " application_parameters " / >
< /操作符>
<列出关键= " class_weights " / >
< /操作符>
/> .. . . . .
> < /过程
< /操作符>
标记:
0
答案
如果你应用了模型,那不正是模型应用程序将计算的结果吗?
问候,
塞巴斯蒂安。
Sum_over_all_i {a*yk(x_i,x)}
我知道libsvm会给出这个信息。
这不正是“创建公式”操作符执行的事情吗?
欢呼,
Ingo
这是不正确的(结果很接近,但不匹配libsvm或手动计算)。
向量[2.8,0]的“正确答案”是-1.0001512,其中下面的代码将给出1.145649441
所以,我不确定....
翻转符号可以简单地推导出哪个类(One或Two)在内部被映射为-1和+1。在1.000之间的推导…和1.145……可以从不同的参数,重新缩放,打乱数据,…我必须检查LibSVM的源代码,RapidMiner的源代码,你的手工计算,并将所有东西进行比较,以得出一个明确的答案。
欢呼,
Ingo