我正在学习如何在 python 中通过 sklearn.svm 使用 libsvm。我在这里读到了当您将 C 值更改为模型的一部分时会发生什么以及为什么。我的直觉是,较低的 C 值将使用较少的支持向量来进行更一般的分类,而较高的 C 值将使用更多的支持向量来尝试“过度拟合”并解释所有异常值。
事实并非如此。例如,我循环了一组 C 值,如下所示:
print(c)
model = svm.SVC(kernel='linear', C=c)
model.fit(Xtrain, ytrain)
print("support vectors:", len(model.support_))
我得到了结果:
1.0
support vectors: 1810
10.0
support vectors: 1750
100.0
support vectors: 1626
1000.0
support vectors: 1558
如您所见,随着 C 的增加,模型中使用的支持向量的数量会减少。为什么会这样?