本文主要是在阅读过程中对本书的一些概念摘录,包括一些个人的理解,主要是思想理解不涉及到复杂的公式推导。会不定期更新,若有不准确的地方,欢迎留言指正交流
本文完整代码 github 地址:https://github.com/anlongstory/awsome-ML-DL-leaning/lihang-reading_notes(欢迎 Star ?)
第7章 SVM
支持向量机(support vector machines,SVM)的基本模型定义是在特征空间上的间隔最大的线性分类器,它的学习策略就是间隔最大化。
支持向量机的模型由简到难分为:
线性可分支持向量机 ——> 硬间隔最大化
线性支持向量机 ——> 软间隔最大化
非线性支持向量机 ——> 核函数
7.1 线性可分支持向量机
二分类问题中,这里我们用 |w*x+b|
的大小表示点 x 离超平面的远近,即确信度; w*x+b
的符号与类别标记 y(取 +1 或者 -1)是否一致表示正确性。
支持向量机是在特征空间中学习的,当数据线性可分时,存在多个分离超平面。感知机用误分类最小的策略,求得分离超平面,但是解有无穷多个,SVM用间隔最大化(硬间隔最大化),解就是唯一的。
函数间隔
定义式为 yi(w*xi+b) ,
几何间隔
针对上述问题,我们对函数间隔加上规范化这一约束项,使||w|| = 1
,这就成了几何间隔。
间隔最大化
我们希望的得到一个最大间隔分离超平面,使每个训练样本点距离这个超平面的距离都至少是 γ 用几何间隔来表示就是:
以上述问题进行求最优解 w*,和 b*,即是线性可分支持向量机的最优化问题(凸二次优化问题)。 这时使用拉格朗日对偶性,先对 w 和 b 求极小,然后对引入参数求极大,最后将引入参数代入 w 和 b 得到最终结果 w*,和 b* 。
在线性可分的条件下,支持向量是指训练集样本点与分离超平面距离最近的样本点的实例,二分类中支持向量在正例方的超平面 H1 与负例方超平面 H2 的间隔为:2/||w||
由上图可见,支持向量是由较少的重要的训练样本决定的,移动支持向量将改变解,移动支持向量以外的数据点,甚至删除它们,对 SVM 最后的结果都没有影响。
7.2 线性支持向量机
这里倘若数据不是线性可分的,上述方法将不再适用,为了解决这一问题,引入松弛变量 εi 的概念,将对间隔的约束条件改为:
可以看到,软间隔的支持向量或者在间隔边界上,或者在间隔边界与分离超平面之间,或者在分离超平面误分一侧。
线性支持向量机学习的另一种解释就是用合页损失函数(hinge loss function)来解释,即最小化一下目标函数:
其中 [z]+ 即为合页损失函数。
这里合页损失函数是 0-1 损失函数的上界,因为 0-1 损失函数不是连续可导的,所以这里用其上界,合页损失函数构建目标函数,便于优化。
7.3 非线性支持向量机
核函数
核函数表示将输入空间(欧式空间 Rn 的子集或离散集合)映射到特征空间(希尔伯特空间)得到的向量之间的内积。
K(x,z) 是核函数,Φ(x) 为映射函数。 在线性支持向量机中,目标函数还是决策函数,只涉及到输入实例与实例之间的内积,在这里我们用核函数的内积代替就可以在支持向量机中使用核函数了。
函数需要是正定函数才能称为核函数,正定是充要条件。
常用的核函数
- 多项式核函数
- 高斯核函数
- 字符串核函数
这是用在离散数据集合上的,如本文分类,信息检索,生物信息学等方向。
非线性支持向量机
利用上述核技巧,利用所给非线性分类训练集,结合核函数与软间隔最大化来学习分类决策函数
7.4 序列最小最优化算法
正常对上述向量机求解过程进行学习,当样本里很大时是很慢的,快速的学习算法称为关键,这里序列最小最优算法(SMO)就是这类算法,先固定参数 α1,α2,固定 α3 —— αN,利用 KKT 来确定 α2,α1 也随之确定,依次类推,知道整体所有变量满足 KKT 条件为止。
相关阅读:
《统计学习方法》—— 1. 统计学习方法概论(Python实现)
《统计学习方法》—— 2. 感知器(Python实现)
《统计学习方法》—— 3. K近邻法(Python实现)
《统计学习方法》—— 4. 朴素贝叶斯(Python实现)
《统计学习方法》—— 5. 决策树(Python实现)
《统计学习方法》—— 6. 逻辑斯特回归与最大熵模型(Python实现)
《统计学习方法》—— 8. 提升方法 (Python实现)
《统计学习方法》—— 9. EM 算法(Python实现)
《统计学习方法》——10. 隐马尔可夫模型(Python实现)
《统计学习方法》—— 11. 条件随机场