5.5 课后练习

1. SVM的基本思想是什么?

支持向量机的基本思想是拟合类别之间可能的、最宽的“margin”.换言之,它的目的是使决策边界之间的间隔最大化,该决策边界分隔两个类别和训练实例。SVM执行软间隔分类时,实际上是在完美分隔两个类和拥有尽可能最宽的街道之间寻找折中方法(也就是允许少数实例最终还是落在街道上)。还有一个关键点是在训练非线性数据集时,记得使用核函数。

2. 什么是支持向量?

SVM的训练完成之后,位于“margin”之上的实例被称为SV,这也包括处于边界上的实例。决策边界完全由SV决定。非支持向量的实例完全没有任何影响。你可以选择删除它们然后添加更多的实例,或者将它们移开,只要一直在margin之外,它们就不会对决策边界产生任何影响。计算预测结果只会涉及支持向量,而不涉及整个训练集。

3. 使用SVM时,对输入值进行缩放为什么重要?

SVM的拟合类别之间可能的、最宽的margin,所以如果训练集不经缩放,SVM将趋于忽略值较小的特征。

4. SVM分类器对实例进行分类,会输出信心分数吗?概率呢

SVM分类器可以输出测试实例与决策边界之间的距离,你可以将其用作信心分数。但是这个分数不能直接转化成类别概率的估算。如果创建SVM时,Scikit-Learn中设置probability=True,那么训练完成后,算法将使用逻辑回归对SVM分数进行校准(对训练数据额外进行5-折交叉验证的训练),从而得到概率值。这会给SVM添加predict_proba()predict_log_proba()两种方法。

5. 如果训练集有成百万个实例和几百个特征,你应该使用SVM原始问题会对偶问题来训练模型?

这个问题仅适用于线性支持向量机,因为核SVM只能使用对偶问题。对于SVM问题来说,原始形式的计算复杂度与训练实例m的数量成正比,而其对偶形式的计算复杂度与某个介于\(m^2\)\(m^3\)直接的数量成正比。所以如何实例的数量以百万计,一定要使用原始问题,应为对偶问题会非常慢。

6. 加入你说用RBF核训练了一个SVM分类器,看起来似乎对训练集欠拟合,你应该提升会降低\(\gamma\)? C呢?

如果一个使用RBF核训练的SVM对训练集欠拟合,可能是由于过度正则化导致的。你需要提升gamma或C(或同时提升二者)来降低正则化。

7. 如果使用现成二次规划求解器,你又该如何设置QP参数(H, f, A和b)来解决软间隔线性SVM分类器问题?

我们把应间隔问题的QP参数定义为\(H^{\prime}\), \(f^{\prime}\), \(A^{\prime}\)以及\(b^{\prime}\)。软间隔问题的QP参数还包括m个额外参数(\(n_p = n+1+m\))及m格额外约束(\(n_c=2m\)),它们可以这样定义:

H等于\(H^{\prime}\)左右和底部分别加上m列和m行个0:

$$ H =

$$

\(f\)等于有\(m\)个附加元素的\(f^{\prime}\), 全部等于超参数C的值。

\(b\)等于有\(m\)个附加元素的\(b^{\prime}\), 全部等于0。

\(A\)等于在\(A^{\prime}\)的右侧添加一个\(m \times m\)的单位矩阵\(I_m\), 在这个单位矩阵的正下方在添加一个单位矩阵-\({*I*}_m\), 剩余部分全为0:

$$ A = \begin{bmatrix} A^{\prime} & I_m \ 0 & -I_m \

\end{bmatrix} $$