[已解决]SVM支持向量机-性能、权重和参数

qwertz式qwertz式 成员职位:130Maven
2019年10月编辑 帮助
亲爱的所有,

在与神经网络斗争之后(见帖子)http://rapid-i.com/rapidforum/index.php/topic,5356.0.html)我决定听从建议尝试svm。
因此,我创建了一个带有测试数据的样例流程。


我的观察:
1)参数集输出的预测趋势精度为0.487,而日志的最佳性能为0.579。这让我很惊讶,因为我认为优化器会提供最好的组合。
2)得到SVM算子可以处理权值。这可能是一个愚蠢的问题,但我在哪里可以连接来自例如相关矩阵的权重?

顺便说一下:
-有没有进一步的文件,有助了解支持向量机的参数?
-神经网络提供内部规范化。对于svm也是这样吗,还是我需要一个单独的算子?



非常感谢你分享你的想法…
萨克斯



样本集:http://datahost.bplaced.net/sample3.xls

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<过程version = " 5.2.003 " >
> <上下文
<输入/ >
<输出/ >
<宏/ >
> < /上下文






<列出关键= "注释" >

< / >列表

<列出关键= " data_set_meta_data_information " >







































< / >列表
< /操作符>







< /操作符>

“参数”<列表键= >


< / >列表









< /操作符>





> < /过程


<列出关键= " application_parameters " / >
< /操作符>


< /操作符>









> < /过程
< /操作符>

<列出关键= "日志" >



< / >列表
< /操作符>









> < /过程
< /操作符>




< /操作符>

<列出关键= " application_parameters " / >
< /操作符>













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

答案

  • Nils_WoehlerNils_Woehler 成员职位:463Maven
    你好,

    1)您正在记录错误的性能。您记录的性能是验证的最后一次迭代性能。将最后一个日志参数设置为Validation Performance,您将得到正确的结果。

    2)据我所知,SVM不能处理权重

    如果你想获得更多的信息,一个好的开始是查看维基百科(http://en.wikipedia.org/wiki/Support_vector_machine)或者在网上搜索其他关于svm的文章。

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <过程version = " 5.2.008 " >
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文





    <列出关键= "注释" >

    < / >列表

    <列出关键= " data_set_meta_data_information " >







































    < / >列表
    < /操作符>







    < /操作符>

    “参数”<列表键= >


    < / >列表









    < /操作符>





    > < /过程


    <列出关键= " application_parameters " / >
    < /操作符>


    < /操作符>









    > < /过程
    < /操作符>

    <列出关键= "日志" >



    < / >列表
    < /操作符>









    > < /过程
    < /操作符>




    < /操作符>

    <列出关键= " application_parameters " / >
    < /操作符>













    > < /过程
    < /操作符>
    > < /过程
    最好的
    尼尔斯
  • qwertz式qwertz式 成员职位:130Maven


    啊,就是这样。验证操作符内的嵌套性能在每次迭代中都会被覆盖…当然可以。

    我认为SVM可以处理加权的例子,因为当选择算子并按下F1时,这显示在能力下…


    谢谢你尼尔斯!
  • qwertz式qwertz式 成员职位:130Maven


    回到将数据输入SVM之前是否进行归一化的问题:

    受到这篇文章的启发http://rapid-i.com/rapidforum/index.php/topic,83.0.html我第一次使用规范化运行了这个过程,第二次没有使用。

    结果表明,是否使用归一化是有区别的。在我的过程中,规范化导致性能下降。但是,我认为这可能是由于SVM的参数没有根据归一化数据进行优化,或者z变换可能不是正确的方法。

    由于我还是一个初学者,我不确定这一点,但至少现在很明显,正常化有影响。


    愿一切都好!
    萨克斯


    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <过程version = " 5.2.003 " >
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文






    <列出关键= "注释" >

    < / >列表

    <列出关键= " data_set_meta_data_information " >







































    < / >列表
    < /操作符>







    < /操作符>




    < /操作符>








    < /操作符>





    > < /过程


    <列出关键= " application_parameters " / >
    < /操作符>


    < /操作符>









    > < /过程
    < /操作符>

    <列出关键= " application_parameters " / >
    < /操作符>




    < /操作符>













    > < /过程
    < /操作符>
    > < /过程
  • qwertz式qwertz式 成员职位:130Maven

    因为似乎支持向量机没有权重输入(尽管在文档中写的“仍然困惑”),一个解决方案可能是在将数据输入支持向量机之前先使用“权重缩放”操作符。
  • Nils_WoehlerNils_Woehler 成员职位:463Maven
    你好,

    SVM支持权重,但不像大多数操作符那样具有'weights'端口,而是具有角色'weight'的属性。

    这里有一个例子

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <过程version = " 5.2.009 " >
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文




    < /操作符>












    > < /过程



    <列出关键= " application_parameters " / >
    < /操作符>












    > < /过程
    < /操作符>


    < /操作符>



    <列出关键= " rename_additional_attributes " / >
    < /操作符>

    <列出关键= " function_descriptions " >

    < / >列表
    < /操作符>



    <列出关键= " set_additional_roles " / >
    < /操作符>












    > < /过程



    <列出关键= " application_parameters " / >
    < /操作符>












    > < /过程
    < /操作符>











    > < /过程
    < /操作符>
    > < /过程
    最好的
    尼尔斯
  • qwertz式qwertz式 成员职位:130Maven


    啊,谢谢你尼尔斯。这意味着支持向量机可以处理权重。现在我明白了。


    吸引我注意的是:
    在示例代码中,有一个带有权重的单独属性——每个示例对应一个权重。
    当使用权重端口时,我为每个属性分配一个权重。

    也许对专业人士来说是显而易见的,但对我来说是令人惊讶的:)



    顺便说一下:我想知道为什么您在验证中对训练和测试都进行了规范化。这对结果不会有影响吗?假设你有1,1,1,5,9,7这样的数据,验证将其分成1,1,1用于训练,5,9,7用于测试。因此,我认为有必要在验证之前进行规范化。
    你那样做有什么特别的原因吗?

    PS:我仍然不确定z变换是否是一种对svm进行规范化的好方法。我读了几篇文章,但我还没有一个解决方案。当比较股票等时间序列时,我认为区间变换(0到1)或比例变换可能更好,因为z变换对两个值的相对距离有影响。


    祝你一天愉快
    萨克斯
登录注册置评。