包含对三种支持向量机的介绍,包括线性可分支持向量机,线性支持向量机和非线性支持向量机,包含核函数和一种快速学习算法-序列最小最优化算法SMO。
非线性支持向量机与核函数
核技巧
非线性分类问题
给定一个训练数据集\(T = \{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}\),其中\(x_i\)属于输入空间,\(x_i \in \mathcal{X} = R^n,y_i \in \mathcal{Y} = \{-1,+1\},i = 1,2,\cdots,N\),如果可以用\(R^n\)中的一个超曲面将正负例正确分开,则称这个问题为非线性可分问题
用线性分类方法求解非线性问题分为两步,首先使用一个变换将原空间的数据映射到新空间,然后在新空间里用线性分类方法从训练数据中学习分类模型,基本想法就是通过一个非线性变换将输入空间对应于一个特征空间
核函数的定义
设\(\mathcal{X}\)是输入空间(欧式空间\(R^n\)的子集或离散集合),又设\(\mathcal{H}\)为特征空间(希尔伯特空间),如果存在一个从\(\mathcal{X}\)到\(\mathcal{H}\)的映射:
\[\phi(x):\mathcal{X} \rightarrow \mathcal{H} \]使得对所有\(x,z \in \mathcal{X}\),函数\(K(x,z)\)满足条件:
\[K(x,z) = \phi(x) \cdot \phi(z) \]则称\(K(x,z)\)为核函数,\(\phi(x)\)为隐射函数,式中\(\phi(x) \cdot \phi(z)\)是两者的内积,核技巧的想法是,在学习与预测中只定义核函数\(K(x,z)\),而不显示地定义隐射函数\(\phi\),可以看到,对于给定的核\(K(x,z)\),特征空间\(\mathcal{H}\)和隐射函数\(\phi\)的取法并不唯一,可以取不同的特征空间,即便是在同一特征空间里也可以取不同的映射
核技巧在支持向量机中的应用
在线性支持向量机的对偶问题中,无论是目标函数还是决策函数都只涉及输入实例与实例之间的内积
\[\frac{1}{2}\sum_{i = 1}^N\sum_{j = 1}^N\alpha_i\alpha_jy_iy_j(x_i \cdot x_j) - \sum_{i = 1}^N\alpha_i \]在对偶问题的目标函数中的内积\(x_i \cdot x_j\)可以用核函数\(K(x,z) = \phi(x) \cdot \phi(z)\)来代替,此时对偶问题的目标函数为:
\[W(\alpha) = \frac{1}{2}\sum_{i = 1}^N\sum_{j = 1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j) - \sum_{i = 1}^N\alpha_i \]同样,分类决策中的内积也可以用核函数代替:
\[f(x) = sign\left(\sum_{i = 1}^{N_s}\alpha_i^*y_iK(x_i , x) + b^*\right) \]这等价于经过映射函数\(\phi\)将原来的输入空间变换到一个新的特征空间,将输入空间的内积\(x_i \cdot x_j\)变换为特征空间中的内积\(\phi(x_i) \cdot \phi(x_j)\)
正定核
目的:函数\(K(x,z)\)成为核函数的条件
正定核的充要条件
设\(K:\mathcal{X} \times \mathcal{X} \rightarrow R\)是对称函数,则\(K(x,z)\)为正定核的充要条件是对任意\(x_i \in \mathcal{X},i = 1,2,\cdots,m,K(x,z)\)对应的Gram矩阵:
\[K = [K(x_i,x_j)]_{m \times m} \]是半正定矩阵
正定核的等价定义
设\(\mathcal{X} \subset R^n,K(x,z)\)是定义在\(\mathcal{X} \times \mathcal{X}\)上的对称函数,如果对任意的\(x_1,x_2,\cdots,x_m \in \mathcal{X},K(x,z)\)关于\(x_1,x_2,\cdots,x_m\)的Gram矩阵\(K = [K(x_i,x_j)]_{m \times m}\)是半正定矩阵,则称\(K(x,z)\)是正定核。
常用核函数
多项式核函数polynomial kernel function
此时对应的支持向量机是一个\(p\)次多项式分类器
\[K(x,z) = (x \cdot z + 1)^p \]高斯核函数gaussain kernel function
此时对应的支持向量机是高斯径向基函数分类器
\[K(x,z) = exp\left(-\frac{||x - z||^2}{2\sigma^2}\right) \]非线性支持向量分类机
非线性支持向量机学习算法
输入:训练数据集\(T = \{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}\),其中\(x_i \in \mathcal{X} = R^n,y_i \in \mathcal{Y} = \{+1,-1\},i = 1,2,\cdots,N\)
输出:分类决策函数
- 选择适当的核函数\(K(x,z)\)和惩罚参数\(C \gt 0\),构造并求解约束最优化问题求得最优解\(\alpha^* = (\alpha^*_1,\alpha^*_2,\cdots,\alpha_N^*)^T\)
- 选择\(\alpha^*\)的一个分量\(0 \lt \alpha_j^* \lt C\),计算:
- 求得决策函数:
序列最小最优化算法(SMO算法)
sequential minimal optimization
目的:当训练样本容量很大的时候,快速实现支持向量机学习
SMO算法要解的问题如下:
变量是\(\alpha_i\),算法是一种启发式算法,
基本思路如下,如果所有变量的解都满足此最优化问题的KKT条件,那么此时最优化问题的解就得到了,因为KKT条件是最优化问题的充分必要条件,否则选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该更加接近原始二次规划问题的解,因为这会使原始二次规划问题的目标函数值变小,
重要的是,这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度,
子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定,假设\(\alpha_1,\alpha_2\)为两个变量,\(\alpha_3,\alpha_4,\cdots,\alpha_N\)固定,那么由约束不等式\(\sum_{i = 1}^N\alpha_iy_i = 0\)和\(y_1^2 = 1\)可知:
整个SMO算法包含两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法
两个变量二次规划的求解方法
不失一般性,假设\(\alpha_1,\alpha_2\)为两个变量,\(\alpha_3,\alpha_4,\cdots,\alpha_N\)固定,省略不含\(\alpha_1,\alpha_2\)的常数项,于是最优化问题可以写为:
\[\begin{aligned} \mathop{min}\limits_{\alpha_1,\alpha_2}\ & W(\alpha_1,\alpha_2) = \frac{1}{2}K_{11}\alpha_1^2 + \frac{1}{2}K_{22}\alpha_2^2 + y_1y_2K_{12}\alpha_1\alpha_2 - (\alpha_1 + \alpha_2) + y_1\alpha_1\sum_{i = 3}^Ny_i\alpha_iK_{i1} + y_2\alpha_2\sum_{i = 3}^Ny_i\alpha_iK_{i2} \\ s.t.\ & \alpha_1y_1 + \alpha_2y_2 = -\sum_{i = 3}^Ny_i\alpha_i = \zeta \\ & 0 \leq \alpha_i \leq C,i = 1,2 \end{aligned} \]约束可以用二维空间中的图形表示:
不等式约束使得\((\alpha_1,\alpha_2)\)在盒子\([0,C] \times [0,C]\)中,等式约束使得\((\alpha_1,\alpha_2)\)在平行于盒子对角线的直线上,因此要求的是目标函数在一条平行于对角线的线段上的最优值,这使得两个变量的最优化问题成为实质上的单变量的最优化问题,此时考虑\(\alpha_2\)的最优化问题
最优值\(\alpha_2^{new}\)的取值范围需要满足条件:
其中\(L,H\)是\(\alpha_2^{new}\)所在的对角线段端点的界:
- \(y_1 \neq y_2\)
- \(y_1 = y_2\)
假设问题的初始可行解为\(\alpha_1^{old},\alpha_2^{old}\),最优解为\(\alpha_1^{new},\alpha_2^{new}\),并且假设沿着约束方向未经剪辑时\(\alpha_2\)的最优解为\(\alpha_2^{new,unc}\)
先记:
最优化问题沿着约束方向未经剪辑时的解为:
\[\alpha_2^{new,unc} = \alpha_2^{old} + \frac{y_2(E_1 - E_2)}{\eta} \]其中:
\[\eta = K_{11} + K_{22} - 2K_{12} = ||\Phi(x_1) - \Phi(x_2)||^2 \]经剪辑后\(\alpha_2\)的解是:
\[\alpha_2^{new} = \begin{cases} H, & \alpha_2^{new,unc} \gt H \\ \alpha_2^{new,unc}, & L \leq \alpha_2^{new,unc} \leq H \\ L, & \alpha_2^{new,unc} \lt L \end{cases} \]由\(\alpha_2^{new}\)求得\(\alpha_1^{new}\)是:
\[\alpha_1^{new} = \alpha_1^{old} + y_1y_2(\alpha_2^{old} - \alpha_2^{new}) \]变量的选择方法
SMO算法在每个子问题中选择两个变量优化,其中至少一个变量是违反KKT条件。
- 第1个变量的选择
选择第一个变量的过程为外层循环,在训练样本中选取违反KKT条件最严重的点,检查样本点\((x_i,y_i)\)满足KKT条件的方法:
其中\(g(x_i) = \sum_{j = 1}^N\alpha_jy_jK(x_i,x_j) + b\),在检验过程中,首先遍历所有满足条件\(0 \lt \alpha_i \lt C\)的样本点,即在间隔边界上的支持向量点,检查是否满足KKT条件,然后检查整个训练数据集
- 第2个变量的选择
在找到第一个变量\(\alpha_1\)的基础上寻找\(\alpha_2\),已知\(\alpha_2^{new}\)依赖于\(|E_1 - E_2|\),而且\(\alpha_1\)确定,所以\(E_1\)确定,如果\(E_1\)是正的,选择最小的\(E_i\)作为\(E_2\),否则选择最大的\(E_i\)作为\(E_2\),如果选择的\(\alpha_2\)不能使目标函数有足够的下降,那么采用启发式规则继续选择\(\alpha_2\)试用,如果还是找不到合适的\(\alpha_2\),就重新找另外的\(\alpha_1\) - 计算阈值\(b\)和差值\(E_i\)
SMO算法
输入:训练数据集\(T = \{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}\),其中\(x_i \in \mathcal{X} = R^n,y_i \in \mathcal{Y} = \{+1,-1\},i = 1,2,\cdots,N\),精度\(\varepsilon\)
输出:近似解\(\hat{\alpha}\)
- 取初值\(\alpha^{(0)} = 0,k = 0\);
- 选取优化变量\(\alpha_1^{(k)},\alpha_2^{(k)}\),解析求解两个变量的最优化问题,过程见上上小结,求解得到最优解\(\alpha_1^{(k + 1)},\alpha_2^{(k + 1)}\),更新\(\alpha\)为\(\alpha^{(k + 1)}\);
- 若在精度\(\varepsilon\)范围内满足停机条件
其中\(g(x_i) = \sum_{j = 1}^N\alpha_jy_jK(x_i,x_j) + b\)
则转第四步,否则令\(k = k + 1\),转到第二步
- 取\(\hat{\alpha} = \alpha^{(k + 1)}\)