【问题标题】:svm with hard margin and C value具有硬边距和 C 值的 svm
【发布时间】:2012-09-03 12:58:41
【问题描述】:

我必须创建一个带有 RBF 内核和硬边距的 svm 分类器。如果我理解正确,那么边距的类型是由 C 参数控制的。也就是说,C 参数越大,我得到的硬边距就越大。是否有一个典型的 C 值可以模拟一个非常强大的“硬边距”?或者有没有其他方法可以模拟强大的硬保证金?当然,我们总是可以讨论为什么我们需要模拟硬边距。但在这种情况下,我需要效仿它!

clf = svm.SVC(C = ??,kernel="rbf",gamma =1.5,shrinking=False,cache_size=3000)

【问题讨论】:

  • 您可以尝试将其设置为像C=10e20 这样荒谬的大值;不过,我不确定您可以将C 设置多高而不会溢出。

标签: python math machine-learning scikit-learn


【解决方案1】:

通常您不需要那么大的值,但总的来说就是这样。只需尝试将其设置为 1e10,然后查看生成的 alphas。

如果没有一个 alpha 处于 C 值,则不应用正则化(即所有点都在训练集中正确分类 = 硬边距)。

顺便说一句,如果您的数据集非常嘈杂并且无法与您正在使用的内核分离,那么您就无法实现硬边距。

【讨论】:

  • 谢谢安德烈亚斯!我有一个关于获取 alpha 的问题,如果我使用的是 SVC,则没有任何方法可以获取 alpha 和实际的支持向量。我们必须阅读“内部”参数support_,support_vector_。这是正确的吗?为什么没有方法??
  • 没有方法,因为 alpha 存储在属性 dual_coef_ 中,请参阅 the docssupport_support_vector_ 已明确记录并公开给用户。结尾的下划线是 scikit-learn 的约定,表示这些属性是从数据中估计出来的。
猜你喜欢
  • 2011-06-05
  • 2015-08-11
  • 2015-04-17
  • 2021-09-18
  • 1970-01-01
  • 2015-10-07
  • 2018-10-26
  • 2010-11-17
  • 2013-07-16
相关资源
最近更新 更多