首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置最佳SVM超参数

设置最佳SVM超参数
EN

Data Science用户
提问于 2019-03-26 06:45:39
回答 2查看 785关注 0票数 3

我有一个非线性数据集,我使用支持向量机(RBF核)建立分类模型,但不确定如何在Matlab fitcsvm中设置支持向量机、C和γ的最佳超参数。如果尝试和错误的方法设置任意的值,直到找到最佳的性能,这是否可以接受?

EN

回答 2

Data Science用户

发布于 2019-03-26 11:22:29

嗯,有一堆文章试图解决这个问题,但基本上,为了保证一个好的解决方案,您需要执行网格搜索(关于它的学习教程)

您可以为此使用各种技术,例如:

  • 二进制Gridsearch:尝试在您想要的间隔中的最大值和最小值,以及中间点,检查哪一边是最好的,并根据前面的中间点设置最小值或最大值。

这可以帮助您快速找到一个普通的解决方案,但请记住,这是无担保的。

  • 穷举网格搜索
  • 随机参数优化
  • 遗传算法

有关更多信息,请查看滑雪板链接。我研究内核方法,这总是有点烦人的事情来解决。

注意:如果你只想尝试径向基函数,我建议你使用\sigma作为一个与你的训练样本\pm 80\%规范相对应的值。您还可以将向量规范化为规范1,并将搜索限制为0.21.8。通常,太小的\sigma对噪声有很高的敏感性,而太大的接近直线(失去非线性功率)。

票数 3
EN

Data Science用户

发布于 2019-03-26 11:24:39

遗憾的是,对于超参数的调优并没有简单的解决方案。基本上,你有两个选择:

  1. 手动调整:阅读支持向量机的文档并深入研究相应的文献。尝试了解不同的内核函数是如何工作的,以及哪些函数适合您的分类问题。尽你所知设置超参数,然后观察细微偏差的差别。当然,这种做法仍会有某种程度的尝试和错误。
  2. 网格搜索:对于所有的分类参数(例如内核函数),为所有可能的类别和所有度量参数(例如epsilon)建立一个列表,定义一个合理的值范围。这是你的超参数空间。随后,使用超参数空间中随机选择的参数运行多个SVM。最后,选择精度最高的超参数组合。(注:还有其他比随机选择更复杂的方法)

这两种方法都被广泛使用,但是,如果你对支持向量机不太熟悉,我强烈建议手动调整。

当然,简单地设置一个网格搜索、获取一些吃的东西,然后选择性能最好的超参数组合,这是非常诱人的。但是最终,你将什么都学不到,你也不知道这些超参数对于你的问题是否是一个合理的选择。拓宽您的知识在未来将是有益的,因为它减少了未来手动调整的工作量,也因为将来您将能够缩小网格搜索的超参数空间,这将大大减少计算时间。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/48000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档