支持向量机(libSVM)缺失函数值

B_MinerB_Miner 成员职位:72Maven
2019年6月编辑 帮助
嗨,伙计们,

是否有可能从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 " / >
< /操作符>
/> .

.
.


.
.

.
> < /过程
< /操作符>



标记:

答案

  • 土地土地 RapidMiner认证分析师,RapidMiner认证专家,会员职位:2531年独角兽
    你好,
    如果你应用了模型,那不正是模型应用程序将计算的结果吗?

    问候,
    塞巴斯蒂安。
  • B_MinerB_Miner 成员职位:72Maven
    哦!是的,这就是决定,不是吗?:阿我的意思是不讲sgn,只是问一下如何访问里面的内容:

    Sum_over_all_i {a*yk(x_i,x)}

    我知道libsvm会给出这个信息。
  • IngoRMIngoRM 管理员、版主、员工、RapidMiner认证分析师、RapidMiner认证专家、社区管理员、rmresearch研究员、成员、大学教授职位:1751年RM创始人
    你好,

    这不正是“创建公式”操作符执行的事情吗?

    欢呼,
    Ingo
  • B_MinerB_Miner 成员职位:72Maven
    也许,我对这个运算符不熟悉。尝试一下,它给了我发布的样本一个奇怪的结果:

    这是不正确的(结果很接近,但不匹配libsvm或手动计算)。

    向量[2.8,0]的“正确答案”是-1.0001512,其中下面的代码将给出1.145649441

    所以,我不确定....

    0.0 *(战俘((1.0 * (-0.5 * x1 - 0.5 * x2) + 0.0), 2)) + 0.0 *(战俘((1.0 * (0.5 * x1 - 0.5 * x2) + 0.0), 2)) + 0.037111961591350995 *(战俘((1.0 * * x2)(-2.8 + 0.0), 2)) + 0.037121838508423564 *(战俘((1.0 * (2.8 * x1) + 0.0), 2)) - 1.136066635903084
  • IngoRMIngoRM 管理员、版主、员工、RapidMiner认证分析师、RapidMiner认证专家、社区管理员、rmresearch研究员、成员、大学教授职位:1751年RM创始人
    你好,

    翻转符号可以简单地推导出哪个类(One或Two)在内部被映射为-1和+1。在1.000之间的推导…和1.145……可以从不同的参数,重新缩放,打乱数据,…我必须检查LibSVM的源代码,RapidMiner的源代码,你的手工计算,并将所有东西进行比较,以得出一个明确的答案。

    欢呼,
    Ingo
登录注册置评。