Scikit Learn Support Vector Classifier 是硬边距还是软边距
Is Scikit Learn's Support Vector Classifier hard margin or soft margin
我想知道下面来自 scikit learn 的支持向量分类器是硬边距还是软边距?
from sklearn import svm
clf = svm.SVC()
我认为默认情况下它是硬边距,但也有软边距的规定。引用文档:
But problems are usually not always perfectly separable with a hyperplane, so we allow some samples to be at a distance from their correct margin boundary. The penalty term C controls the strengh of this penalty, and as a result, acts as an inverse regularization parameter (see note below).
由于C默认设置为1,所以我们可以说默认的SVM实现是hard margin(但我们可以通过改变C
的值来改变它)
虽然很晚了,但我不同意所提供的答案,原因如下:
- 硬边距分类 仅在数据线性可分时才有效(请注意
SVC()
的默认选项是 'rbf'
内核而不是线性内核);
- 硬间隔分类器的原始优化问题具有以下形式:
![\underset{w,b}{min}\ \frac{1}{2}w^Tw \s.t. \ y_i(w^Tx_i+b)\geq 1, \ i=1, \dots, n](https://latex.codecogs.com/gif.latex?%5Cinline&space;%5Cunderset%7Bw,b%7D%7Bmin%7D%5C&space;%5Cfrac%7B1%7D%7B2%7Dw%5ETw&space;%5C%5Cs.t.&space;%5C&space;y_i(w%5ETx_i+b)%5Cgeq&space;1,&space;%5C&space;i=1,&space;%5Cdots,&space;n)
- 另一方面,正如您从 guide 中看到的那样,scikit-learn 中考虑的原始优化问题如下:
![\underset{w,b}{min}\ \frac{1}{2}w^Tw + C\sum_{i=1}^n\zeta_i \s.t. \ y_i(w^T\phi(x_i)+b)\geq 1 - \zeta_i, \ \zeta_i \geq 0, \ i=1, \dots, n](https://latex.codecogs.com/gif.latex?%5Cinline&space;%5Cunderset%7Bw,b%7D%7Bmin%7D%5C&space;%5Cfrac%7B1%7D%7B2%7Dw%5ETw&space;+&space;C%5Csum_%7Bi=1%7D%5En%5Czeta_i&space;%5C%5Cs.t.&space;%5C&space;y_i(w%5ET%5Cphi(x_i)+b)%5Cgeq&space;1&space;-&space;%5Czeta_i,&space;%5C&space;%5Czeta_i&space;%5Cgeq&space;0,&space;%5C&space;i=1,&space;%5Cdots,&space;n)
这个公式 - 在文献中确定了 软间隔分类器 的优化问题 - 使其也适用于非线性可分离数据集并引入:
zeta_i
,衡量实例i被允许违反margin的程度(functional margin在从第一个公式到第二个公式的传递过程中可以小于1);
- 超参数
C
,这是对 objective 函数施加的“惩罚”的一部分,以允许实例的功能余量小于 1。
最终,正如您在 sklearn 中看到的那样 doc, hyperparameter C
must be strictly positive, which enforces the idea that SVC()
does provide soft margin classification. 是另一个 SO 参考。
我想知道下面来自 scikit learn 的支持向量分类器是硬边距还是软边距?
from sklearn import svm
clf = svm.SVC()
我认为默认情况下它是硬边距,但也有软边距的规定。引用文档:
But problems are usually not always perfectly separable with a hyperplane, so we allow some samples to be at a distance from their correct margin boundary. The penalty term C controls the strengh of this penalty, and as a result, acts as an inverse regularization parameter (see note below).
由于C默认设置为1,所以我们可以说默认的SVM实现是hard margin(但我们可以通过改变C
的值来改变它)
虽然很晚了,但我不同意所提供的答案,原因如下:
- 硬边距分类 仅在数据线性可分时才有效(请注意
SVC()
的默认选项是'rbf'
内核而不是线性内核); - 硬间隔分类器的原始优化问题具有以下形式:
- 另一方面,正如您从 guide 中看到的那样,scikit-learn 中考虑的原始优化问题如下:
这个公式 - 在文献中确定了 软间隔分类器 的优化问题 - 使其也适用于非线性可分离数据集并引入:
zeta_i
,衡量实例i被允许违反margin的程度(functional margin在从第一个公式到第二个公式的传递过程中可以小于1);- 超参数
C
,这是对 objective 函数施加的“惩罚”的一部分,以允许实例的功能余量小于 1。
最终,正如您在 sklearn 中看到的那样 doc, hyperparameter C
must be strictly positive, which enforces the idea that SVC()
does provide soft margin classification.