1.支持向量机的基本思想是什么?
支持向量机的基本思想是拟合类别之间可能的、最宽的“街 道”。换言之,它的目的是使决策边界之间的间隔最大化,该决策边界 分隔两个类别和训练实例。SVM执行软间隔分类时,实际上是在完美分 隔两个类和拥有尽可能最宽的街道之间寻找折中方法(也就是允许少数 实例最终还是落在街道上)。还有一个关键点是在训练非线性数据集 时,记得使用核函数。
2.什么是支持向量?
支持向量机的训练完成后,位于“街道”(参考上一个答案)之上的实例被称为支持向量,这也包括处于边界上的实例。决策边界完全 由支持向量决定。非支持向量的实例(也就是街道之外的实例)完全没 有任何影响。你可以选择删除它们然后添加更多的实例,或者将它们移 开,只要一直在街道之外,它们就不会对决策边界产生任何影响。计算 预测结果只会涉及支持向量,而不涉及整个训练集。
3.使用SVM时,对输入值进行缩放为什么重要?
支持向量机拟合类别之间可能的、最宽的“街道”(参考第1题 答案),所以如果训练集不经缩放,SVM将趋于忽略值较小的特征
4.SVM分类器在对实例进行分类时,会输出信心分数吗?概率呢?
支持向量机分类器能够输出测试实例与决策边界之间的距离,你 可以将其用作信心分数。但是这个分数不能直接转化成类别概率的估 算。如果创建SVM时,在Scikit-Learn中设置probability=True,那么 训练完成后,算法将使用逻辑回归对SVM分数进行校准(对训练数据额 外进行5-折交叉验证的训练),从而得到概率值。这会给SVM添加 predict_proba()和predict_log_proba()两种方法。
5.如果训练集有成百万个实例和几百个特征,你应该使用SVM原始 问题还是对偶问题来训练模型?
这个问题仅 适用于线性支持向量机,因为核SVM只能使用对偶问题。对于SVM问题来 说,原始形式的计算复杂度与训练实例m的数量成正比,而其对偶形式 的计算复杂度与某个介于m2和m3之间的数量成正比。所以如果实例的数 量以百万计,一定要使用原始问题,因为对偶问题会非常慢。
6.假设你用RBF核训练了一个SVM分类器,看起来似乎对训练集欠 拟合,你应该提升还是降低γ(gamma)?C呢?
如果一个使用RBF核训练的支持向量机对欠拟合训练集,可能是 由于过度正则化导致的。你需要提升gamma或C(或同时提升二者)来降 低正则化。