本篇博文参考来自李航统计学习方法,周志华机器学习,李宏毅机器学习课程,还有sklearn的官方文档http://sklearn.apachecn.org/cn/0.19.0/modules/svm.html
支持向量机的优缺点
优点:
- 即使在数据维度比样本数量大的情况下仍然有效.
- 在决策函数(称为支持向量)中使用训练集的子集,因此它也是高效利用内存的.
- 高效性:可以通过核函数来处理线性及非线性数据
- 鲁棒性1:对支持向量机有效的样本集是支持向量的样本,删除非支持向量样本数据,对支持向量机不产生影响
- 鲁棒性2:软间隔的支持向量机如下图所示,即使有一些样本出现在街道内,只要还没有越过边界,依然可以将它们分类准确
缺点:
- 支持向量机需要将很多数据放到内存里面一起进行运算,SVC 类基于
libsvm
库,它实现了支持核技巧的算法。训练时间复杂度通常介于O(m^2 × n)
和O(m^3 × n)
之间。不幸的是,这意味着当训练样本变大时,它将变得极其慢 - 支持向量机对特征的大小非常敏感,而有些数据不是仅仅依靠对特征值进行标准化就能消除这一部分影响的,比如在我看来one-hot类型数据还是用树模型要合适一些。
- 支持向量机不向logistic、softmax模型有着概率的含义。这是由它的损失函数是hinge-loss导致的
超平面视角
从这种角度来看呢,SVM就是一个优化问题,用二次规划问题来求解。比如SMO等方法(机器学习实战详细提供了用SMO求解的步骤)
线性 SVM 分类器通过简单地计算决策函数 来预测新样本的类别:如果结果是正的,预测类别ŷ
是正类,为 1,否则他就是负类,为 0
公式如下:
我们的训练目标就是:(硬间隔,如果对几何间隔和函数间隔还不太清楚,建议仔细阅读《统计学习方法》97页-