SVM硬间隔和C值

4

我需要创建一个带有RBF核函数和硬间隔的svm分类器。如果我理解正确的话,间隔的类型由C参数控制。也就是说,C参数越大,我得到的硬间隔越多。是否存在一种典型的C值来模拟非常健壮的“硬间隔”?或者是否有其他方法来模拟健壮的硬间隔?当然,我们总是可以讨论为什么需要模拟硬间隔。但在这种情况下,我需要模拟它!

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

2
你可以尝试将其设置为一些荒谬地大的值,例如 C=10e20;不过我不确定在不发生溢出的情况下,你可以将 C 设置得有多高。 - Fred Foo
1个回答

4
通常情况下,您不需要如此大的值,但总体来说这就是想法。只需尝试将其设置为1e10,然后查看生成的阿尔法即可。
如果没有任何阿尔法处于C值,则未应用正则化(即在训练集中正确分类了所有点=硬间隔)。
顺便说一句,如果您的数据集非常嘈杂,并且无法使用您正在使用的内核进行分离,则无法实现硬间隔。

谢谢Andreas!我有一个获取alphas的问题,如果我使用SVC,没有方法可以获取alphas和实际的支持向量。我们必须读取“内部”参数support_和support_vector_。这是正确的吗?为什么没有方法呢? - andreSmol
没有方法,因为alpha值存储在属性“dual_coef_”中,请参阅文档。 “support_”和“support_vector_”明确记录并向用户公开。下划线是scikit-learn的约定,表示这些属性是从数据中估计出来的。 - Andreas Mueller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接