[机器学习实战]支持向量机III
Preference
支持向量机(SVM)是一个功能强大的机器学习模型,能够执行
- 分类
SVC
:线性SVM分类(硬间隔、软间隔),非线性SVM分类(核函数:多项式核、高斯RBF核函数)[机器学习]解决支持向量机线性不可分问题——核函数II; - 回归
SVR
: SVM回归,控制街道宽度 ε \varepsilon ε限制间隔违例。
工作原理:[机器学习]支持向量机 I
Question & Conclusion
1.支持向量的基本思想?
拟合类别之间可能的、最宽的“街道”,即它的目的在于使决策边界之间的间隔最大化,从而分隔出两个类别的训练实例。
SVM执行软间隔分类时,实际上是在完美分类和拟合最宽的街道之间进行妥协(允许少数实例最终落在街道上)。
在训练非线性数据集时,应使用核函数。
2.什么是支持向量?
支持向量机训练完成后,位于“街道”上的实例称为支持向量
,也包括处于边界上的实例。
决策边界完全由支持向量决定,非支持向量的实例完全没有任何影响。计算预测结果只会涉及支持向量,而不涉及整个训练集。
3.使用SVM,为什么要进行缩放?
支持向量机拟合类别之间可能的、最宽的“街道”,所以若训练集不经缩放,SVM将趋于忽略值较小的特征。
4.SVM分类器进行分类时,会输出信心分数吗?概率呢?
支持向量机分类器能够输出测试实例与决策边界之间的距离,可将其用作信心分数,但这个分数不能转化为类别概率的估算。
若在创建SVM时,在 scikit-learn 中设置 probability=True ,那么训练完成后,算法将使用逻辑回归对SVM分数进行校准(对训练数据额外进行5-折交叉验证训练),从而得到概率值,给SVM添加 predict_proba() 和 predict_log_proba() 方法。
5.若训练集有很多实例和更多特征,应使用SVM原始问题还是对偶问题训练模型?
该问题仅使用线性支持向量机,因为核SVM只能使用对偶问题。
对于SVM原始问题来说,原始形式的计算复杂度与训练实例数量成正比,而其对偶形式的计算复杂度与某个介于 m 2 m^2 m2 和 m 3 m^3 m3 的数量成正比。所以若实例数量过多,一定要使用原始问题,因为对偶问题很慢。
6.假设你是要RBF核训练了一个SVM分类器,但似乎对训练集拟合不足,你应该提升还是降低 γ \gamma γ ?C 呢?
若对训练集拟合不足,可能是由于过度正则化导致,则需要提升或同时提升 γ \gamma γ 和 C 降低正则化。