【数据挖掘】十大算法之SVM支持向量机分类算法
目录
- 1 基本概念
- 2 线性可分支持向量机
- 2.1 定义
- 2.2 相关概念
- 2.3 学习算法
- 4 线性支持向量机
- 4.1 软间隔最大化
- 4.2 线性支持向量机的原始最优化问题
- 4.3 线性支持向量机定义
- 4.4 线性支持向量机的对偶最优化问题
- 4.5 线性支持向量机学习算法
- 4.6 软间隔的支持向量
- 5 非线性支持向量机
- 5.1 基本概念
- 5.2 常用核函数
- 5.3 学习算法
- 6 算法改进—SMO算法
- 6.1 基本概念
- 6.2 算法思想
- 6.2 算法过程
1 基本概念
支持向量机(support vector machines,SVM)是一种二分类模型。分为
- 线性可分支持向量机:训练数据线性可分,通过硬间隔最大化学习一个线性的分类器,又称为硬间隔支持向量机。
- 线性支持向量机:训练数据近似线性可分,通过软间隔最大化学习一个线性的分类器,又称为软间隔支持向量机。
- 非线性支持向量机:训练数据线性不可分,通过核技巧及软间隔最大化,学习非线性支持向量机。(核技巧:当输入空间为欧式空间或离散集合、特征空间为希尔伯特空间时,核函数表示将输入空间映射到特征空间得到的特征向量之间的内积。通过使用核函数,可以学习非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机)
2 线性可分支持向量机
2.1 定义
给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为
w∗⋅x+b∗=0(1)w^* \cdot x + b^* = 0\tag{1} w∗⋅x+b∗=0(1)
以及相应的分类决策函数
f(x)=sign(w∗⋅x+b∗)(2)f(x) = sign(w^* \cdot x +b^*)\tag{2} f(x)=sign(w∗⋅x+b∗)(2)
称为线性可分支持向量机。
2.2 相关概念
(1)函数间隔
一个点距离超平面的远近可以表示分类预测的确信程度,即函数间隔来表述分类的正确性及确信度。
对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本点(xi,yi)(x_i,y_i)(xi,yi)的函数间隔为
γ^i=yi(w⋅xi+b)(3)\hat{\gamma } _i = y_i(w \cdot x_i +b) \tag{3} γ^i=yi(w⋅xi+b)(3)
定义超平面(w,b)关于训练数据集T的函数间隔为超平面(w,b)关于T中所有样本点(xi,yi)(x_i,y_i)(xi,yi)的函数间隔之最小值,即
γ^=miniγ^ii=1,...,N(4)\hat{\gamma} = min_{i}\hat{\gamma} _i ~~~ i = 1,...,N \tag{4} γ^=miniγ^i i=1,...,N(4)
(2)几何间隔
在函数间隔的基础上,将点与超平面之间的间隔规范化。对分离超平面的法向量www取L2范数。表示为∣∣w∣∣||w||∣∣w∣∣,使得超平面的两个参数成比例变化,间隔都是确定。
对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本点(xi,yi)(x_i,y_i)(xi,yi)的几何间隔为
γ^i=yi(w∣∣w∣∣⋅xi+b∣∣w∣∣)(5)\hat{\gamma } _i = y_i(\frac{w}{||w||} \cdot x_i +\frac{b}{||w||}) \tag{5} γ^i=yi(∣∣w∣∣w⋅xi+∣∣w∣∣b)(5)
其中∣∣w∣∣||w||∣∣w∣∣表示取w的L2范数。 定义超平面(w,b)关于训练数据集T的几何间隔为超平面(w,b)关于T中所有样本点(xi,yi)(x_i,y_i)(xi,yi)的几何间隔之最小值,即
γ^=miniγ^ii=1,...,N(6)\hat{\gamma} = min_{i}\hat{\gamma} _i ~~~ i = 1,...,N \tag{6} γ^=miniγ^i i=1,...,N(6)
(3)间隔最大化
支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。
间隔最大化:对训练数据集找到几何间隔最大的超平面,以充分大的确信度对训练数据进行分类。
(4)最大间隔法
输入:线性可分训练数据集T={(x1,y1),(x2,y2),...,(xN,yN)}T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={(x1,y1),(x2,y2),...,(xN,yN)},其中x∈X=Rn,yi∈Y=−1,+1,i=1,2,...,Nx \in X = R^n,y_i \in Y = {-1,+1},i=1,2,...,Nx∈X=Rn,yi∈Y=−1,+1,i=1,2,...,N
输出:最大间隔分离超平面和分类决策函数
a.构造并求解约束最优化问题
minw,b12∣∣w∣∣2s.t.yi(w⋅xi+b)−1≥0,i=1,2,..,N(7)min_{w,b} \frac{1}{2}||w||^2 \\ s.t. y_i(w \cdot x_i +b)-1 \geq 0,i=1,2,..,N \tag{7} minw,b21∣∣w∣∣2s.t.yi(w⋅xi+b)−1≥0,i=1,2,..,N(7)
求得最优解w∗,b∗w^*,b^*w∗,b∗
b.由此得到分离超平面
w∗⋅x+b∗=0(8)w^* \cdot x + b^* = 0\tag{8} w∗⋅x+b∗=0(8)
分类决策函数
f(x)=sign(w∗⋅x+b∗)(9)f(x) = sign(w^* \cdot x +b^*) \tag{9} f(x)=sign(w∗⋅x+b∗)(9)
注意:线性可分训练数据集的最大间隔分离超平面是存在且唯一的。
(5)支持向量
在线性可分的情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量。
对于yiy_iyi = +1 的正例点,支持向量在超平面
H1:w⋅x+b=1(10)H_1:w \cdot x+b = 1\tag{10} H1:w⋅x+b=1(10)
对于yiy_iyi = -1 的负例点,支持向量在超平面
H1:w⋅x+b=−1(11)H_1:w \cdot x+b = -1\tag{11} H1:w⋅x+b=−1(11)
(6)间隔边界
H1H_1H1和H2H_2H2平行,并且没有实例点落在它们中间。在H1H_1H1与H2H_2H2之间形成一条长带,分离超平面与他们平行且位于他们中央。长带的宽度,即H1H_1H1与H2H_2H2之间的距离称为间隔。间隔依赖于分离超平民啊的法向量www,等于2∣∣w∣∣\frac{2}{||w||}∣∣w∣∣2。称为H1H_1H1和H2H_2H2称为间隔边界。
2.3 学习算法
(1)学习的原始算法
线性可分支持向量机学习的原始最优化问题
minw,b12∣∣w∣∣2s.t.yi(wi⋅i+b)−1≥0,i=1,2,...,N(12)min_{w,b} \frac{1}{2}||w||^2 \\ s.t. \quad y_i(w_i \cdot_i+b)-1 \geq 0 ,i=1,2,...,N \tag{12} minw,b21∣∣w∣∣2s.t.yi(wi⋅i+b)−1≥0,i=1,2,...,N(12)
这是一个凸二次规划问题。
(2) 学习的对偶算法
线性可分支持向量机的对偶算法
对偶算法:将原始最优化问题,应用拉格朗日对偶性,求解对偶问题得到原始问题的最优解。
与原始最优化问题等价的最优化问题:
min12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαis.t.∑i=1Nαiyi=0αi≥0,i=1,2,...,N(13)min \frac{1}{2} \sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_j y_i y_j(x_i \cdot x_j) - \sum_{i=1}^N \alpha_i \\ s.t. \quad \sum_{i=1}^N \alpha_i y_i = 0\\ \alpha _i \geq 0,i=1,2,...,N \tag{13} min21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=0αi≥0,i=1,2,...,N(13)
其中α=(α1,α2,...,αN)T\alpha = (\alpha_1,\alpha_2,...,\alpha_N)^Tα=(α1,α2,...,αN)T为朗格朗日乘子向量。
定理: 设α∗=(α1∗,α2∗,...,αl∗)\alpha^* = (\alpha_1^*,\alpha_2^*,...,\alpha_l^*)α∗=(α1∗,α2∗,...,αl∗)是以上公式13对偶最优化问题的解,则存在小标j,使得αj∗>0\alpha_j^* >0αj∗>0,并按下式求得原始最优化问题公式12的解w∗w^*w∗,b∗b^*b∗
w∗=∑i=1Nαi∗yixib∗=yi−∑i=1Nαi∗yi(xi⋅xj)(14)w^* = \sum_{i=1}^N \alpha_i^*y_ix_i\\ b^* = y_i - \sum_{i=1}^N\alpha_i^* y_i(x_i \cdot x_j) \tag{14} w∗=i=1∑Nαi∗yixib∗=yi−i=1∑Nαi∗yi(xi⋅xj)(14)
优点
- 对偶问题更容易求解
- 自然引入核函数,进而推广到非线性分类问题
4 线性支持向量机
4.1 软间隔最大化
假设给定一个特征空间上的训练数据集
T={(x1,y1),(x2,y2),...,(xN,yN)}(15)T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} \tag{15} T={(x1,y1),(x2,y2),...,(xN,yN)}(15)
其中,xi∈X=Rn,yi∈Y={+1,−1},i=1,2,..,N,xix_i \in X = R^n,y_i \in Y = \{+1,-1\},i=1,2,..,N,x_ixi∈X=Rn,yi∈Y={+1,−1},i=1,2,..,N,xi是第i个特征向量,yiy_iyi为xix_ixi的类标记。
线性不可分意味着某些样本点(xi,yi)(x_i,y_i)(xi,yi)不能满足函数间隔大于等于1的约束条件公式12。软间隔最大化就是对每个样本点(xi,yi)(x_i,y_i)(xi,yi)引进一个松弛变量ξ≥0\xi \geq 0ξ≥0,使函数间隔加上松弛变量大于等于1。公式12的约束条件就变为
yi(w⋅xi+b)≥1−ξi(16)y_i (w \cdot x_i +b) \geq 1- \xi_i \tag{16} yi(w⋅xi+b)≥1−ξi(16)
同时,对每个松弛变量ξi\xi_iξi,支付一个代码ξi\xi _iξi。目标函数由原来的12∣∣w∣∣2\frac{1}{2}||w||^221∣∣w∣∣2变成
12∣∣w∣∣2+C∑i=1Nξi(17)\frac{1}{2}||w||^2 +C \sum_{i=1}{N} \xi _i \tag{17} 21∣∣w∣∣2+Ci=1∑Nξi(17)
这里,C>0C >0C>0称为惩罚参数,一般由问题决定,C值大时对误分裂的惩罚增大,反之。
这里的最小目标函数有两层含义
- 使得12∣∣w∣∣2\frac{1}{2}||w||^221∣∣w∣∣2尽量小,间隔尽量大。
- 使误分类的个数尽量小。C是调和二者的系数。
通过软间隔最大化,就能以线性可分的方式来处理线性不可分的线性支持向量机学习问题。
4.2 线性支持向量机的原始最优化问题
线性不可分的线性支持向量机的学习问题变成凸二次规划问题
minw,b.ξ12∣∣w∣∣2+C∑i=1Nξis.t.yi(w⋅xi+b)≥1−ξi,i=1,2,...,Nξi≥0,i=1,2,..,N(18)min_{w,b.\xi} \quad \frac{1}{2}||w||^2 +C\sum_{i=1}^N \xi _i\\ s.t. \quad y_i(w \cdot x_i +b) \geq 1- \xi _i,i=1,2,...,N\\ \xi _i \geq 0,i=1,2,..,N \tag{18} minw,b.ξ21∣∣w∣∣2+Ci=1∑Nξis.t.yi(w⋅xi+b)≥1−ξi,i=1,2,...,Nξi≥0,i=1,2,..,N(18)
4.3 线性支持向量机定义
对于给定的线性不可分的训练数据集,通过求解凸二次规划问题,即软间隔最大化问题,得到的分离超平面为
w∗⋅x+b∗=0(19)w^* \cdot x +b^* = 0 \tag{19} w∗⋅x+b∗=0(19)
以及相应的分类决策函数
f(x)=sign(w∗⋅x+b∗)(20)f(x) = sign(w^* \cdot x +b^*) \tag{20} f(x)=sign(w∗⋅x+b∗)(20)
称为线性支持向量机。
4.4 线性支持向量机的对偶最优化问题
minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαis.t.∑i=1Nαiyi=00≤αi≤C,i=1,2,...,N(21)min_{\alpha} \frac{1}{2}\sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j(x_i \cdot x_j) - \sum_{i=1}^N \alpha_i\\ s.t. \quad \sum_{i=1}^N\alpha_i y_i = 0\\ 0 \leq \alpha_i \leq C,i=1,2,...,N \tag{21} minα21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤C,i=1,2,...,N(21)
4.5 线性支持向量机学习算法
输入:训练数据集T={(x1,y1),(x2,y2),...,(xN,yN)}T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={(x1,y1),(x2,y2),...,(xN,yN)}其中,xi∈X=Rn,yi∈Y={+1,−1},i=1,2,...,Nx_i \in X =R^n,y_i \in Y = \{+1,-1\},i=1,2,...,Nxi∈X=Rn,yi∈Y={+1,−1},i=1,2,...,N
输出:分离超平面和分类决策函数
(1)选择惩罚参数C>0,构造并求解凸二次规划问题
minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαis.t.∑i=1Nαiyi=00≤αi≤C,i=1,2,...,N(22)min_{\alpha} \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_j y_i y_j(x_i \cdot x_j)-\sum_{i=1}^N \alpha_i\\ s.t. \quad \sum_{i=1}^N \alpha_i y_i =0\\ 0 \leq \alpha_i \leq C ,i = 1,2,...,N \tag{22} minα21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤C,i=1,2,...,N(22)
求得最优解α∗=(α1∗,α2∗,...,αN∗)T\alpha^* = (\alpha^*_1,\alpha^*_2,...,\alpha^*_N)^Tα∗=(α1∗,α2∗,...,αN∗)T
(2)计算w∗=∑i=1Nαi∗yixiw^* = \sum_{i=1}^N\alpha_i^* y_i x_iw∗=∑i=1Nαi∗yixi
选择α∗\alpha^*α∗的一个分量αj∗\alpha_j^*αj∗适合条件0<αj∗<C0<\alpha_j^*<C0<αj∗<C,计算
b∗=yj−∑i=1Nyiαi∗(xi⋅xj)(23)b^* =y_j-\sum_{i=1}^N y_i \alpha_i^*(x_i \cdot x_j) \tag{23} b∗=yj−i=1∑Nyiαi∗(xi⋅xj)(23)
(3)求得分离超平面
w∗⋅x+b∗=0(24)w^* \cdot x + b^* = 0 \tag{24} w∗⋅x+b∗=0(24)
分类决策函数
f(x)=sign(s∗⋅x+b∗)(25)f(x) = sign(s^* \cdot x +b^*) \tag{25} f(x)=sign(s∗⋅x+b∗)(25)
4.6 软间隔的支持向量
在线性不可分的情况下,对偶问题的解α∗=(α1∗,α2∗,...,αN∗)T\alpha^* = (\alpha_1^*,\alpha_2^*,...,\alpha_N^*)^Tα∗=(α1∗,α2∗,...,αN∗)T中对应于αi∗>0\alpha_i^*>0αi∗>0的样本点(xi,yi)(x_i,y_i)(xi,yi)的实例称为软间隔的支持向量。图中标出了实例xix_ixi到间隔边界的距离ξi∣∣w∣∣\frac{\xi_i}{||w||}∣∣w∣∣ξi。
若αi∗<C\alpha_i^*<Cαi∗<C,则ξi=0\xi_i = 0ξi=0,支持向量xix_ixi恰好落在间隔边界上;
若αi∗=C,0<ξi<0\alpha_i^* = C ,0<\xi_i < 0αi∗=C,0<ξi<0,则分类正确。xix_ixi在间隔边界与分离超平面之间;
若αi∗=C,ξi=1\alpha_i^* = C,\xi_i = 1αi∗=C,ξi=1,则xix_ixi在分离超平面上;
若αi∗=C,ξi>1\alpha_i^* = C,\xi_i > 1αi∗=C,ξi>1,则xix_ixi位于分离超平面上误分一侧。
5 非线性支持向量机
5.1 基本概念
(1)核技巧
用线性可分方法求解非线性分类问题。分为两步,第一步,使用一个变换将原空间的数据映射到新空间。第二步,在新空间用线性分类方法从训练数据中训练分类模型。
(2)核函数
输入X是输入空间(欧式空间RnR^nRn的子集或离散集合),又设H特征空间(希尔伯特空间,一个内积空间,当作为一个赋范向量空间是完备的时候),如果存在一个从X到H的映射
ϕ(x):X→H(26)\phi(x) :X \rightarrow H \tag{26} ϕ(x):X→H(26)
使得对所有x,z∈Xx,z \in Xx,z∈X,函数K(x,z)K(x,z)K(x,z)满足条件
K(x,z)=ϕ(x)⋅(z)(27)K(x,z) = \phi(x) \cdot(z) \tag{27} K(x,z)=ϕ(x)⋅(z)(27)
则称K(x,z)K(x,z)K(x,z)为核函数,ϕ(x)\phi(x)ϕ(x)为映射函数,⋅\cdot⋅表示内积。
(3)非线性支持向量机的定义
从非线性分类训练集,通过核函数与软间隔最大化,或凸二次规划,学习得到的分类决策函数
f(x)=sign(∑i=1Nαi∗yiK(x,xi)+b∗)(28)f(x) = sign(\sum_{i=1}^N \alpha_i^* y_i K(x,x_i)+b^*) \tag{28} f(x)=sign(i=1∑Nαi∗yiK(x,xi)+b∗)(28)
称为非线性支持向量机,K(x,z)K(x,z)K(x,z)是正定核函数。
5.2 常用核函数
(1)多项式核函数
K(x,z)=(x⋅z+1)p(29)K(x,z) = (x \cdot z+1)^p \tag{29} K(x,z)=(x⋅z+1)p(29)
对应的支持向量机是一个p次多项式分类器。此时,分类决策函数为
f(x)=sign(∑i=1Nsαi∗yi(xi⋅x+1)p+b∗)(30)f(x) = sign(\sum_{i=1}^{N_s} \alpha_i ^* y_i(x_i \cdot x+1)^p +b^*) \tag{30} f(x)=sign(i=1∑Nsαi∗yi(xi⋅x+1)p+b∗)(30)
(2)高斯核函数
K(x,z)=exp(−∣∣x−z∣∣22ρ2)(31)K(x,z) = exp(-\frac{||x-z||^2}{2 \rho ^2}) \tag{31} K(x,z)=exp(−2ρ2∣∣x−z∣∣2)(31)
对应的支持向量机是高斯径向基函数分类器。此时,分类决策函数为
f(x)=sign(∑i=1Nsαi∗yiexp(−∣∣x−xi∣∣22ρ2)+b∗)(32)f(x) = sign(\sum_{i=1}^{N_s} \alpha_i^* y_i exp(-\frac{||x-x_i||^2}{2\rho ^2})+b^*) \tag{32} f(x)=sign(i=1∑Nsαi∗yiexp(−2ρ2∣∣x−xi∣∣2)+b∗)(32)
(3)字符串核函数
两个字符串s和t上的字符串核函数是基于映射ϕn\phi _nϕn的特征空间中的内积:
kn(s,t)=∑u∈∑n[ϕn(s)]u[ϕn(t)]u=∑u∈sumn(i,j)∑:s(i)=t(j)=uλl(i)λl(j)(33)k_n(s,t) = \sum_{u \in \sum ^n}[\phi _n(s)]_u[\phi _n(t)]_u\\ = \sum_{u \in sum^n(i,j)} \sum_{:s(i)=t(j)=u} \lambda^{l(i)\lambda^{l(j)}} \tag{33} kn(s,t)=u∈∑n∑[ϕn(s)]u[ϕn(t)]u=u∈sumn(i,j)∑:s(i)=t(j)=u∑λl(i)λl(j)(33)
字符串核函数kn(s,t)k_n(s,t)kn(s,t)给出了字符串s和t中长度等于n的所有子串组成的特征想来那个的余弦相似度。
5.3 学习算法
输入:训练数据集T={(x1,y1),(x2,y2),...,(xN,yN)}T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={(x1,y1),(x2,y2),...,(xN,yN)}其中,xi∈X=Rn,yi∈Y={+1,−1},i=1,2,...,Nx_i \in X =R^n,y_i \in Y = \{+1,-1\},i=1,2,...,Nxi∈X=Rn,yi∈Y={+1,−1},i=1,2,...,N
输出:分类决策函数
(1)选取适当的核函数K(x,z)和适当的参数C,构造并求解最优化问题
minα12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαis.t.∑i=1Nαiyi=00≤αi≤C,i=1,2,...,N(34)min_{\alpha} \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_j y_i y_j K(x_i,x_j)-\sum_{i=1}^N \alpha_i\\ s.t. \quad \sum_{i=1}^N \alpha_i y_i =0\\ 0 \leq \alpha_i \leq C ,i = 1,2,...,N \tag{34} minα21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤C,i=1,2,...,N(34)
求得最优解α∗=(α1∗,α2∗,...,αN∗)T\alpha^* = (\alpha^*_1,\alpha^*_2,...,\alpha^*_N)^Tα∗=(α1∗,α2∗,...,αN∗)T
(2)选择α∗\alpha^*α∗的一个正分量0<αj∗<C0 <\alpha^*_j <C0<αj∗<C计算
选择α∗\alpha^*α∗的一个分量αj∗\alpha_j^*αj∗适合条件0<αj∗<C0<\alpha_j^*<C0<αj∗<C,计算
b∗=yj−∑i=1Nyiαi∗K(xi,xj)(35)b^* =y_j-\sum_{i=1}^N y_i \alpha_i^*K(x_i, x_j) \tag{35} b∗=yj−i=1∑Nyiαi∗K(xi,xj)(35)
(3)构造决策函数
w∗⋅x+b∗=0(36)w^* \cdot x + b^* = 0 \tag{36} w∗⋅x+b∗=0(36)
分类决策函数
f(x)=sign(∑i=1Nαi∗yiK(x,xi)+b∗)(37)f(x) = sign(\sum_{i=1}^N \alpha_i^* y_iK(x,x_i)+b^*) \tag{37} f(x)=sign(i=1∑Nαi∗yiK(x,xi)+b∗)(37)
当K(x,z)是正定核函数时,解是存在的。
6 算法改进—SMO算法
6.1 基本概念
支持向量机的学习问题可以形式化为求解凸二次规划问题。这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以应用于这一问题的求解。但是当训练样本容量很大时,这些算法往往变得非常低效,以致无法使用。序列最小最优化算法(Sequential minimal optimization,SMO)算法就是一种快速实现的算法。
6.2 算法思想
是一种启发式算法。思路是如果所有变量的解都满足此最优化问题的KKT条件(Karush-Kuhn-Tucker conditions),那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件,否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这个会使得原始二次规划问题的目标函数值变得更小。更重要的是,这时子问题可以通过解析方法求解,这样可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。
整个SMO算法包括两个部分
- 求解两个变量二次规划的解析方法
- 选择变量的启发式方法。
6.2 算法过程
SMO算法要解如下凸二次规划的对偶问题
minα12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαis.t.∑i=1Nαiyi=00≤αi≤C,i=1,2,...,N(38)min_{\alpha} \quad \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_j y_i y_j K(x_i,x_j)-\sum_{i=1}^N \alpha_i\\ s.t. \quad \sum_{i=1}^N \alpha_i y_i =0\\ 0 \leq \alpha_i \leq C ,i = 1,2,...,N \tag{38} minα21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤C,i=1,2,...,N(38)
变量是拉格朗日乘子,一个变量αi\alpha_iαi对应于一个样本点(xi,yi)(x_i,y_i)(xi,yi),变量的综述等于训练样本容量N。
不失一般性,假设选择的两个变量是α1,α2\alpha_1,\alpha_2α1,α2,其他变量αi,i=3,4,...,N\alpha _i, i=3,4,...,Nαi,i=3,4,...,N是固定的。 于是SMO的最优化问题可写成
minα1,α2W(α1,α2)=12K11α12+12K22α22+yiyjK12α1α2−(α1+α2)+y1α1∑i=3NyiαiKi1+y2α2∑i=3NyiαiKi2s.t.α1y1+α2y2=−∑i=3Nαiyi=δ0≤αi≤C,i=1,2(39)min_{\alpha_1,\alpha_2} \quad W(\alpha_1,\alpha_2) = \frac{1}{2}K_{11}\alpha_1^2 +\frac{1}{2}K_{22}\alpha_2^2 + y_i y_j K_{12}\alpha_1 \alpha_2 -(\alpha_1 +\alpha_2) +y_1 \alpha_1 \sum_{i=3}^N y_i \alpha_i K_{i1}+ y_2\alpha_2 \sum_{i=3}^N y_i \alpha_i K_{i2}\\ s.t. \quad \alpha_1y_1 +\alpha_2y_2 = -\sum_{i=3}^N \alpha_i y_i = \delta \\ 0 \leq \alpha_i \leq C ,i = 1,2 \tag{39} minα1,α2W(α1,α2)=21K11α12+21K22α22+yiyjK12α1α2−(α1+α2)+y1α1i=3∑NyiαiKi1+y2α2i=3∑NyiαiKi2s.t.α1y1+α2y2=−i=3∑Nαiyi=δ0≤αi≤C,i=1,2(39)
其中,Kij−K(xi,xj),i,j=1,2,...,N,δK_{ij} - K(x_i,x_j),i,j=1,2,...,N,\deltaKij−K(xi,xj),i,j=1,2,...,N,δ是常数。
输入:训练数据集T={(x1,y1),(x2,y2),...,(xN,yN)}T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={(x1,y1),(x2,y2),...,(xN,yN)}其中,xi∈X=Rn,yi∈Y={+1,−1},i=1,2,...,Nx_i \in X =R^n,y_i \in Y = \{+1,-1\},i=1,2,...,Nxi∈X=Rn,yi∈Y={+1,−1},i=1,2,...,N
输出:近似解α^\hat{\alpha}α^
(1)取初值α(0)=0\alpha^{(0)} = 0α(0)=0,令k=0;
(2)选取优化变量α1k,α2k\alpha_1^{k},\alpha_2^kα1k,α2k,解析求解公式39的两个变量的最优化问题。求得最优解α1k+1,α2k+1\alpha_1^{k+1},\alpha_2^{k+1}α1k+1,α2k+1,更新α\alphaα为αk+1\alpha^{k+1}αk+1:
(3)若精度ϵ\epsilonϵ 范围内满足停机条件
$$
\sum_{i=1}^N \alpha_i y_i = 0,0\leq \alpha_i \leq C,i=1,2,…,N\
y_i \cdot g(x_i) =\left{
\begin{matrix}
\geq 1 ,{x_i|\alpha_i = 0}\
= 1 ,{x_i|0<\alpha_i < C}\
\leq 1 ,{x_i|\alpha_i = C}\
\end{matrix}
\right.
$$
其中,
g(xi)=∑j=1NαjyjK(xj,xi)+bg(x_i) = \sum_{j=1}^N \alpha_j y_j K(x_j,x_i)+b g(xi)=j=1∑NαjyjK(xj,xi)+b
则转第(4),否则令k=k+1,转第(2)
(4)取α^=αk+1\hat{\alpha} = \alpha^{k+1}α^=αk+1
【数据挖掘】十大算法之SVM支持向量机分类算法相关推荐
- SVM支持向量机分类算法C++实现 零调库
代码中的alpha和有些教材中的lamda是同意义的值,在此记录说明 bits/stdc++.h是标准C和标准C++库的汇总库,不属于标准C/C++,但是省事.很多编译器是支持的,VS不支持 样本等均 ...
- 数据挖掘十大算法之分类算法(分类介绍及评价指标)
文章目录 1. 分类相关知识 1.1 分类的概念 1.2 分类的流程 1.3 分类模型评价标准 2. 二分类分类案例 参考文章: 接上篇文章,接下来学习挖掘算法中的分类算法: 首先我们应该知道数据挖掘 ...
- 数据挖掘十大经典算法(详解)
数据挖掘十大经典算法 一. C4.5 C4.5算法是机器学习算法中的一种分类决策树算法 ...
- [转]数据挖掘十大经典算法
国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-M ...
- DataMining学习2_数据挖掘十大经典算法
数据挖掘十大经典算法 一. C4.5 C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3 算法. C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进: ...
- 数据挖掘十大经典算法之——Naive Bayes 算法
数据挖掘十大经典算法系列,点击链接直接跳转: 数据挖掘简介及十大经典算法(大纲索引) 1. 数据挖掘十大经典算法之--C4.5 算法 2. 数据挖掘十大经典算法之--K-Means 算法 3. 数据挖 ...
- 数据挖掘十大经典算法之——KNN 算法
数据挖掘十大经典算法系列,点击链接直接跳转: 数据挖掘简介及十大经典算法(大纲索引) 1. 数据挖掘十大经典算法之--C4.5 算法 2. 数据挖掘十大经典算法之--K-Means 算法 3. 数据挖 ...
- 数据挖掘十大经典算法之——AdaBoost 算法
数据挖掘十大经典算法系列,点击链接直接跳转: 数据挖掘简介及十大经典算法(大纲索引) 1. 数据挖掘十大经典算法之--C4.5 算法 2. 数据挖掘十大经典算法之--K-Means 算法 3. 数据挖 ...
- 数据挖掘十大经典算法之——C4.5 算法
数据挖掘十大经典算法系列,点击链接直接跳转: 数据挖掘简介及十大经典算法(大纲索引) 1. 数据挖掘十大经典算法之--C4.5 算法 2. 数据挖掘十大经典算法之--K-Means 算法 3. 数据挖 ...
最新文章
- 在 libevent 中使用 MariaDB(MySQL)
- Python线程同步机制: Locks, RLocks, Semaphores, Condition
- 解决python在eclipse运行正常在命令行里运行提示包导入错误
- frameset ajax,js控制frameSet示例
- Team Foundation Server 2010 安装、部署与配置(四):设置 .
- 必备的Linux基础命令
- 常用计算机检索技术的例子,专业检索常用方法及应用实例
- 《人人都是产品经理》读后小结
- Ubuntu 16.10(x86) Install WordPress SRV 4.7.1-1-5
- Reportlab 表格样式问题
- svn环境搭建 linux
- 实现开启和关闭android移动网络
- UVa 10019 - Funny Encryption Method
- Java基础面试题(持续更新...)
- 计算机组成原理实验配置,计算机组成原理实验二: 脱机运算器实验
- 权限绕过漏洞(越权漏洞)
- 《把时间当作朋友》读书笔记
- php使用PHPexcel类读取excel文件(循环读取每个单元格的数据)
- 台湾国立大学郭彦甫Matlab教程笔记(1)schedule
- RISC-V E300 SOC架构介绍——5.电源常开域(Always on Domain)
热门文章
- 外汇局:12月中国国际货物和服务贸易顺差2280亿元
- PS3 内置硬盘 Linux 读取,PS3用移动硬盘的根目录结构详细解析
- 局部载入html后 主页面变了,html局部刷新_Jquery.load载入页面实现局部刷新的代码...
- win10下实现负载均衡
- Autodesk 3ds Max 2012 安装破解图文教程
- Android高级-阿里VLayout使用和原理分析
- Visual Studio 2017 + VisualGDB 调试Linux C++程序
- 专科云计算的出路在哪里?
- 手把手教你用鸿蒙HarmonyOS实现微信聊天界面(三)
- 整流桥KBPC1010-ASEMI如何测量好坏之压降测试法