“支持向量机:

spitfire_chspitfire_ch 成员职位:38大师
2019年5月编辑 帮助
你好,

很抱歉最近用帖子轰炸你。我想这是学习阶段的症状。

无论如何,在摆弄支持向量机时,我经常遇到这样的问题,即它永远迭代(或者至少迭代几个小时)而没有进一步的进展。这只适用于某些内核类型,其他类型的内核可以在几分钟内完成分析。我认为这是因为他们(慢的人)没有设法收敛。在这种情况下,正确的做法是什么?我可以想到两个调整:
  • 使用更高的收敛性
  • 最大迭代次数递减
对吗?或者我要摆弄而不是收敛?如果我想用优化参数操作符比较不同的内核类型,我应该使用任何推荐值吗?到目前为止,我遇到的问题是,大多数类型都可以,但最终会陷入循环。这时我只能点击stop,所有收集到的其他内核类型的性能信息都会丢失。

也许这也是要实现的想法:除了“停止一切按钮”之外,还有一个“停止子进程按钮”。这只会退出当前操作(例如。验证当前内核类型),然后继续。将选择未取消的操作的最佳参数。

谢谢你的建议
专员Hanspeter

答案

  • IngoRMIngoRM 管理员、版主、员工、RapidMiner认证分析师、RapidMiner认证专家、社区经理、RMResearcher、会员、大学教授职位:1751年RM创始人
    你好,

    很抱歉最近用帖子轰炸你。我想这是学习阶段的症状。
    别担心!你的问题当然涉及到更高级的话题,当然有必要在这个层面上进行讨论:)

    这只适用于某些内核类型,其他类型的内核可以在几分钟内完成分析。我认为这是因为他们(慢的人)没有设法收敛。
    叫喊声。这当然是主要原因。至少还有两个方面:如果您有大量的特征,某些内核函数的计算确实需要更多的时间。但是与线性核函数的差值不应该太高。尤其是在内核缓存被大量使用的情况下。对于大量的示例或者支持向量机的工作集经常变化的情况,这种情况不太可能发生。而后者可能再次成为趋同缺失的信号。

    你的两次调整是正确的。有时增加内核缓存(如果可用)也会有所帮助。但是,我建议首先从较低的迭代次数开始。从一个非常小的数字开始(比如500或1000),然后检查是否学到了什么。然后你可以增加一次或两次,以检查结果是否变化很大。如果不是这种情况,SVM可能根本无法使用这个核函数/设置进行学习。

    这时我只能点击stop,所有收集到的其他内核类型的性能信息都会丢失。
    您可以在持久化模式下使用“log”操作符记录信息。在这种情况下,您将保留到目前为止获得的信息。

    也许这也是要实现的想法:除了“停止一切按钮”之外,还有一个“停止子进程按钮”。这只会退出当前操作(例如。验证当前内核类型),然后继续。将选择未取消的操作的最佳参数。
    一般来说,这确实是有帮助的,一些“随时”操作符(如遗传特征选择或加权)已经提供了这样的功能。这些操作符有一个参数,指示是否显示“应该停止?”对话框。我们可以在操作符级别为这个“随时停止”特性考虑一种通用机制,但我怀疑在通用子进程级别提供这种功能是否真的很直观。也许这在一般情况下是不可能的。

    欢呼,
    Ingo
  • spitfire_chspitfire_ch 成员职位:38大师
    嗨Ingo,

    非常感谢您的建议和见解。在尝试优化SVM学习器时,我将遵循您建议的步骤。我也很高兴听到关于日志操作员的消息。我不知道它的能力。这听起来确实非常有用——一些操作符的“停止”对话框功能也是如此。感谢您指出这些特性!

    致以最亲切的问候
    专员Hanspeter
登录注册置评。