线性可分支持向量机与硬间隔最大化
线性可分支持向量机
输入空间为欧式空间或离散集合,特征空间为 欧式空间 或者 希尔伯特空间。线性可分支持向量机、线性支持向量机及非线性支持向量机的输入都由输入空间转换到特征空间,支持向量机的学习是在特征空间进行的。
假设给定一个特征空间上的训练数据集
T={(x1,y1),(x2,y2),…,(xn,yn)}
T = \{(x_1,y_1), (x_2,y_2), \ldots ,(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, \ldots ,Nxi∈X=Rn,yi∈Y={+1,−1},i=1,2,…,N,xix_ixi为第i个特征向量。yiy_iyi为xix_ixi的类标记,当yi=+1y_i=+1yi=+1时,称xix_ixi为正例;当yi=−1y_i=-1yi=−1时,称xix_ixi为负例。
学习的目标是在特征空间中找到一个分离超平面,能将实例分到不同的类,分离超平面对应于方程w⋅x+b=0w \cdot x + b = 0w⋅x+b=0,它由法向量w和截距b决定,可由(w, b)来表示。
线性可分支持向量机:给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为
w∗⋅x+b∗=0
w^* \cdot x+b^*=0
w∗⋅x+b∗=0
以及相应的分类决策函数
f(x)=sign(w∗⋅x+b∗)
f\left(x\right)=sign\left(w^* \cdot x+b^*\right)
f(x)=sign(w∗⋅x+b∗)
称为线性可分支持向量机。
线性可分支持向量机对应着将两类数据正确划分并且间隔最大的直线,如下图所示:
函数间隔和几何间隔
一个点距离分离超平面的远近∣w⋅x+b∣\left \vert w \cdot x+b \right \vert∣w⋅x+b∣可以表示分类预测的确信度,而w⋅x+bw \cdot x +bw⋅x+b的符号与标记yyy的符号是否一致能够表示分类的正确性,从而便有了函数间隔:
函数间隔:对于给定的训练数据集TTT和超平面(w,b)\left (w,b\right )(w,b),定义超平面(w,b)\left (w,b \right )(w,b)关于样本点(xi,yi)\left (x_i,y_i \right )(xi,yi)的函数间隔为
γ^i=yi(w⋅x+b)
\hat \gamma _i=y_i \left (w \cdot x+b \right )
γ^i=yi(w⋅x+b)
定义超平面关于训练数据集TTT的函数间隔为超平面(w,b)\left (w,b \right )(w,b)关于TTT中所有样本点(xi,yi)\left (x_i,y_i \right )(xi,yi)的函数间隔之最小值,即
γ^=mini=1,…,Nγ^i
\hat \gamma = \min_{i=1, \ldots ,N} \hat \gamma _i
γ^=i=1,…,Nminγ^i
只有函数间隔不够,只要成比例地改变www和bbb,如改为2w2w2w和2b2b2b,超平面未变,但函数间隔却成为原来的2倍。因此,通过规范化www,∥w∥\left \Vert w \right \Vert∥w∥,使得间隔确定,便引入了几何间隔的概念。
几何间隔:对应给定的训练数据集TTT和超平面(w,b)\left (w,b \right )(w,b),定义超平面(w,b)\left (w,b \right )(w,b)关于样本点(xi,yi)\left (x_i,y_i \right )(xi,yi)的几何间隔为
γi=yi(w∥w∥⋅xi+b∥w∥)
\gamma _i = y_i \left ( \frac w{\left \Vert w \right \Vert} \cdot x_i+ \frac b{\left \Vert w \right \Vert}\right )
γi=yi(∥w∥w⋅xi+∥w∥b)
定义超平面(w,b)(w,b)(w,b)关于训练数据集TTT的几何间隔为超平面(w,b)(w,b)(w,b)关于TTT中所有样本点(xi,yi)\left (x_i, y_i \right )(xi,yi)的几何间隔之最小值,即
γ=mini=1,⋯ ,Nγi
\gamma = \min _{i=1, \cdots , N} \gamma _i
γ=i=1,⋯,Nminγi
间隔最大化
支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据集进行分类。
最大间隔分离超平面
最大间隔分离超平面可以表述为下面的约束最优化问题:
maxw,bγs.t.yi(w∥w∥⋅xi+b∥w∥)⩾γ,i=1,2,⋯ ,N
\begin{array}{ll}
\max_{w,b} \quad & \gamma \\
s.t. \quad & y_i \left ( \frac w{\left \Vert w \right \Vert} \cdot x_i+ \frac b{\left \Vert w \right \Vert} \right ) \geqslant \gamma , \quad i = 1,2, \cdots ,N
\end{array}
maxw,bs.t.γyi(∥w∥w⋅xi+∥w∥b)⩾γ,i=1,2,⋯,N
考虑几何间隔和函数间隔的关系,可将问题改写为:
maxw,bγ^∥w∥s.t.yi(w⋅xi+b)⩾γ^,i=1,2,⋯ ,N
\begin{array}{ll}
\max_{w,b} \quad & \frac {\hat \gamma}{\left \Vert w \right \Vert} \\
s.t. \quad & y_i \left (w \cdot x_i+ b \right ) \geqslant \hat \gamma , \quad i = 1,2, \cdots ,N
\end{array}
maxw,bs.t.∥w∥γ^yi(w⋅xi+b)⩾γ^,i=1,2,⋯,N
函数间隔γ^\hat \gammaγ^的取值不影响最优化问题的解。假设将www和bbb按比例改变为λw\lambda wλw和λb\lambda bλb,则函数间隔变为λγ^\lambda \hat \gammaλγ^。因此,可以取γ^=1\hat \gamma = 1γ^=1,注意到最大化1∥w∥\frac 1{\Vert w \Vert}∥w∥1和最小化12∥w∥2\frac 12 {\Vert w \Vert}^221∥w∥2是等价地,于是便得到:
线性可分支持向量机学习算法——最大间隔法
输入:线性可分训练数据集T={(x1,y1),(x2,y2),⋯ ,(xn,yn)}T=\{(x_1,y_1),(x_2,y_2), \cdots , (x_n,y_n)\}T={(x1,y1),(x2,y2),⋯,(xn,yn)},其中,xi∈X=Rnx_i \in \Chi = R^nxi∈X=Rn,yi∈Y={+1,−1}y_i \in Y=\{+1,-1\}yi∈Y={+1,−1},i=1,2,⋯ ,Ni=1,2, \cdots, Ni=1,2,⋯,N;
输出:最大间隔分离超平面和分类决策函数。
(1)构造并求解约束最优化问题:
minw,b12∥w∥2s.t.yi(w⋅x+b)−1⩾0,i=1,2,⋯ ,N
\begin{array}{ll}
\min_{w,b} \quad & \frac 12 {\Vert w \Vert}^2 \\
s.t. \quad & y_i(w \cdot x+b) -1 \geqslant 0, \quad i=1,2, \cdots ,N
\end{array}
minw,bs.t.21∥w∥2yi(w⋅x+b)−1⩾0,i=1,2,⋯,N
求得最优解w∗w^*w∗,b∗b^*b∗。
(2)由此得到分离超平面:
w∗⋅x+b∗=0
w^* \cdot x + b^* = 0
w∗⋅x+b∗=0
分类决策函数
f(x)=sign(w∗⋅x+b∗)
f (x)= \text {sign}(w^* \cdot x+b^*)
f(x)=sign(w∗⋅x+b∗)
线性可分训练数据集的最大间隔分离超平面存在且唯一。
支持向量和间隔边界
在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量,支持向量是使约束条件yi(w⋅xi+b)−1=0y_i(w \cdot x_i+b)-1=0yi(w⋅xi+b)−1=0等号成立的点。
从图中可以看到,在决定分离超平面时只有支持向量起作用,如果移动支持向量将改变所求的解;但是间隔边界以外移动其他实例点,甚至去掉这些点,解是不会改变的。所以,支持向量机由很少的“重要的”训练样本确定。
学习的对偶算法
根据前面的约束最优化问题,构建拉格朗日函数,引进拉格朗日乘子αi≥0\alpha _i \geq 0αi≥0,i=1,2,⋯ ,Ni=1,2, \cdots , Ni=1,2,⋯,N,定义拉格朗日函数:
L(w,b,α)=12∥w∥2−∑i=1Nαiyi(w⋅xi+b)+∑i=1Nαi
L \left (w,b, \alpha \right )= \frac12 {\Vert w \Vert}^2- \sum_{i=1}^N \alpha _i y_i(w \cdot x_i + b)+ \sum_{i=1}^N \alpha _i
L(w,b,α)=21∥w∥2−i=1∑Nαiyi(w⋅xi+b)+i=1∑Nαi根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
maxαminw,bL(w,b,α)
\max _ \alpha \min _{w,b} L \left (w,b, \alpha \right)
αmaxw,bminL(w,b,α)
在线性可分情况下,原始最优化问题和对偶最优化问题的最优值相等,所以存在w∗w^*w∗,α∗\alpha ^*α∗,b∗b^*b∗,使w∗,b∗w^*,b^*w∗,b∗是原始问题的解,α∗\alpha ^*α∗是对偶问题的解。
线性可分支持向量机学习算法:
输入:线性可分训练集T={(x1,y1),(x2,y2),⋯ ,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2), \cdots , (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, \cdots ,Nxi∈X=Rn,yi∈Y={−1,+1},i=1,2,⋯,N;
输出:分离超平面和分离决策函数
(1)构造并求解约束最优化问题
minα12∥w∥2s.t.∑i=1Nαiyi=0αi≥0,,i=1,2,⋯ ,N
\begin{array}{ll}
\min _\alpha \quad & \frac 12 {\Vert w \Vert}^2 \\[2ex]
s.t. \quad & \sum _{i=1}^N \alpha _i y_i=0 \\[2ex]
& \alpha _i \geq 0, \quad ,i=1,2, \cdots ,N
\end{array}
minαs.t.21∥w∥2∑i=1Nαiyi=0αi≥0,,i=1,2,⋯,N求得最优解α∗=(α1∗,α2∗,⋯ ,αN∗)T\alpha ^*=(\alpha_1^*, \alpha_2^*, \cdots , \alpha_N^*)^Tα∗=(α1∗,α2∗,⋯,αN∗)T。
(2)计算
w∗=∑i=1Nαi∗yixi
w^*= \sum_{i=1}^N \alpha_i^* y_i x_i
w∗=i=1∑Nαi∗yixi并选择α∗\alpha^*α∗的一个正分量αj∗≥0\alpha_j^* \ge 0αj∗≥0,计算
b∗=yj−∑i=1Nαi∗yi(xi⋅xj)
b^*=y_j- \sum_{i=1}^N \alpha_i^* y_i(x_i \cdot x_j)
b∗=yj−i=1∑Nαi∗yi(xi⋅xj)(3)求得分离超平面
w∗⋅x+b∗=0
w^* \cdot x+b^*=0
w∗⋅x+b∗=0分类决策函数:
f(x)=sign(w∗⋅x+b∗)
f \left (x \right)= sign(w^* \cdot x + b^*)
f(x)=sign(w∗⋅x+b∗)
支持向量:将训练数据中对应αi∗≥0\alpha_i^* \ge 0αi∗≥0的样本点(xi,yi)(x_i,y_i)(xi,yi)的实例xi∈R∗x_i \in R^*xi∈R∗称为支持向量。
由KKT的对偶互补条件αi∗(yi(w∗⋅xi+b∗)−1)=0,i=1,2,⋯ ,N\alpha_i^*(y_i(w^* \cdot x_i+b^*)-1)=0, \quad i=1,2, \cdots ,Nαi∗(yi(w∗⋅xi+b∗)−1)=0,i=1,2,⋯,N,对应αi∗≥0\alpha_i^* \ge 0αi∗≥0的实例xix_ixi,有
yi(w∗⋅xi+b∗)−1=0
y_i(w^* \cdot x_i + b^*) -1=0
yi(w∗⋅xi+b∗)−1=0即xix_ixi一定在间隔边界上。
线性支持向量机与软间隔最大化
线性支持向量机
线性可分问题的支持向量机学习方法,不适用线性不可分问题,因为不可分意味着不等式约束yi(w⋅x+b)≥1y_i(w \cdot x +b) \geq 1yi(w⋅x+b)≥1并不能都成立。怎么修改才能适用线性不可分情况?可以修改硬间隔最大化,使其成为软间隔最大化。
线性不可分意味着某些样本点(xi,yi)(x_i,y_i)(xi,yi)不能满足不等式约束。为了解决这个问题,可以对每个样本点(xi,yi)(x_i,y_i)(xi,yi)引进一个松弛变量ξi≥0\xi_i \geq 0ξi≥0,使函数间隔加上松弛变量大于等于1。这样,约束条件变为
yi(w⋅xi+b)≥1−ξi
y_i(w \cdot x_i + b) \geq 1- \xi_i
yi(w⋅xi+b)≥1−ξi同时,对每个松弛变量ξi\xi_iξi,支付代价ξi\xi_iξi。目标函数由原来的12∥w∥2\frac12 {\Vert w \Vert}^221∥w∥2变成
12∥w∥2+C∑i=1Nξi
\frac 12 {\Vert w \Vert}^2 + C \sum_{i=1}^N \xi_i
21∥w∥2+Ci=1∑Nξi这里,C>0C \gt 0C>0为惩罚参数,CCC值大时对误分类的惩罚增大,CCC值小时对误分类的惩罚减小。最小化目标函数包含两层含义:使12∥w∥2\frac12{\Vert w \Vert}^221∥w∥2尽量小即间隔尽量大,同时使误分类点的个数尽量小,CCC是调和二者的系数。
线性支持向量机:对应给定的线性不可分的训练数据集,通过求解凸二次规划问题,即软间隔最大化问题,得到的分离超平面为
w∗⋅x+b∗=0
w^* \cdot x+b^*=0
w∗⋅x+b∗=0以及相应的分类决策函数
f(x)=sign(w∗⋅x+b∗)
f \left (x \right ) = sign ( w^* \cdot x + b^*)
f(x)=sign(w∗⋅x+b∗)
线性支持向量机学习算法:
输入:训练数据集T={(x1,y1),(x2,y2),⋯ ,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2), \cdots , (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, \cdots ,Nxi∈X=Rn,yi∈Y={+1,−1},i=1,2,⋯,N;
输出:分离超平面和分类决策函数
(1)选择惩罚参数C>0C \gt 0C>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
\begin{array}{ll}
\min _\alpha \quad & \frac12 \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 \\[2ex]
s.t. \quad & \sum _{i=1}^N \alpha _i y_i=0 \\[2ex]
& 0 \leq \alpha _i \leq C, \quad ,i=1,2, \cdots ,N
\end{array}
minαs.t.21∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi∑i=1Nαiyi=00≤αi≤C,,i=1,2,⋯,N求得最优解α∗=(α1∗,α2∗,⋯ ,αN∗)T\alpha^*=(\alpha_1^*, \alpha_2^*, \cdots , \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<α<C0 \lt \alpha \lt C0<α<C,计算
b∗=yj−∑i=1Nyiαi∗(xi⋅xj)
b^*=y_j- \sum_{i=1}^N y_i \alpha_i^* (x_i \cdot x_j)
b∗=yj−i=1∑Nyiαi∗(xi⋅xj)(3)求得分离超平面
w∗⋅x+b∗=0
w^* \cdot x + b^*=0
w∗⋅x+b∗=0分类决策函数:
f(x)=sign(w∗⋅x+b∗)
f \left (x \right )=sign(w^* \cdot x+b^*)
f(x)=sign(w∗⋅x+b∗)
支持向量
在求解最优化问题的过程中,αi\alpha_iαi、CCC、ξi\xi_iξi、μi\mu_iμi之间有如下关系:
C−αi−μi=0μiξi=0αi(yi(w⋅xi+b)−1+ξi)=0
\begin{array}{ll}
C- \alpha_i- \mu_i = 0 \\[2ex]
\mu_i \xi_i=0 \\[2ex]
\alpha_i (y_i(w \cdot x_i + b)-1+ \xi_i)=0
\end{array}
C−αi−μi=0μiξi=0αi(yi(w⋅xi+b)−1+ξi)=0在线性不可分的情况下,对应于αi∗>0\alpha_i^* \gt 0αi∗>0的样本点(xi,yi)(x_i,y_i)(xi,yi)的实例xix_ixi称为支持向量。
软间隔的支持向量,或者在间隔边界上,或者在间隔边界与分离超平面之间,或者在分离超平面误分类一侧。
根据上面的关系:
若αi<C\alpha_i \lt Cαi<C,则ξi=0\xi_i = 0ξi=0,支持向量xix_ixi落在间隔边界上;
若αi=C\alpha_i = Cαi=C,0<ξi<10 \lt \xi_i \lt 10<ξi<1,则分类正确,支持向量xix_ixi落在间隔边界与分离超平面之间;
若αi=C\alpha_i = Cαi=C,ξi=1\xi_i = 1ξi=1,则xix_ixi落在分离超平面上;
若αi=C\alpha_i = Cαi=C,ξi>1\xi_i \gt 1ξi>1,则xix_ixi位于超平面误分一侧。
合页损失函数
线性支持向量机学习还有另外一个解释,就是最小化以下目标函数:
∑i=1N[1−yi(w⋅xi+b)]++λ∥w∥2
\sum_{i=1}^N \left [ 1-y_i(w \cdot x_i +b)\right ]_+ + \lambda {\Vert w \Vert}^2
i=1∑N[1−yi(w⋅xi+b)]++λ∥w∥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
\begin{array}{ll}
\min_{w,b, \xi} & \frac12 {\Vert w \Vert}^2 + C \sum_{i=1}^N \xi_i\\[2ex]
s.t. & y_i(w \cdot x_i + b) \geq 1- \xi_i, \quad i=1,2, \cdots , N\\[2ex]
& \xi_i \geq 0, \quad i=1,2, \cdots , N
\end{array}
minw,b,ξs.t.21∥w∥2+C∑i=1Nξiyi(w⋅xi+b)≥1−ξi,i=1,2,⋯,Nξi≥0,i=1,2,⋯,N等价于最优化问题
minw,b∑i=1N[1−yi(w⋅xi+b)]++λ∥w∥2
\min_{w,b} \sum_{i=1}^N \left [ 1-y_i(w \cdot x_i +b)\right ]_+ + \lambda {\Vert w \Vert}^2
w,bmini=1∑N[1−yi(w⋅xi+b)]++λ∥w∥2合页损失函数,横轴是函数间隔y(w⋅x+b)y(w \cdot x+b)y(w⋅x+b),纵轴是损失。由于函数形状像一个合页,故名合页损失函数。
非线性支持向量机与核函数
核技巧
对给定训练数据集T={(x1,y1),(x2,y2),⋯ ,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2), \cdots , (x_N,y_N)\}T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中,实例xix_ixi属于输入空间,xi∈X=Rnx_i \in X=R^nxi∈X=Rn,对应的标记有两类yi∈Y={+1,−1}y_i \in Y = \{+1,-1\}yi∈Y={+1,−1},i=1,2,⋯ ,Ni=1,2, \cdots , Ni=1,2,⋯,N。如果能用RnR^nRn中的一个超曲面将正负例正确分开,则称这个问题为非线性可分问题。
非线性问题不好解,所以希望能用线性分类问题的方法解决这个问题。采取的方法是进行一个非线性变换,将非线性问题转换为线性问题来求解。
核函数:设XXX是输入空间(欧式空间RnR^nRn的子集或离散集合),又设HHH为特征空间(希尔伯特空间),如果存在一个从XXX到HHH的映射
ϕ(x):X→H
\phi \left (x \right):X \to H
ϕ(x):X→H使得对所以x,z∈Xx,z \in Xx,z∈X,函数K(x,z)K(x,z)K(x,z)满足条件
K(x,z)=ϕ(x)⋅ϕ(z)
K(x,z)=\phi(x) \cdot \phi(z)
K(x,z)=ϕ(x)⋅ϕ(z)则称K(x,z)K(x,z)K(x,z)为核函数,ϕ(x)\phi(x)ϕ(x)为映射函数,式中ϕ(x)⋅ϕ(z)\phi(x) \cdot \phi(z)ϕ(x)⋅ϕ(z)是ϕ(x)\phi(x)ϕ(x)和ϕ(z)\phi(z)ϕ(z)的内积。
我们注意到线性支持向量机中,无论是对偶问题的目标函数还是决策函数都只涉及输入实例与实例之间的内积xi⋅xjx_i \cdot x_jxi⋅xj。用核函数K(xi,xj)=ϕ(xi)⋅ϕ(xj)K(x_i,x_j)=\phi(x_i) \cdot \phi(x_j)K(xi,xj)=ϕ(xi)⋅ϕ(xj)代替,对偶问题的目标函数变为:
W(α)=12∑i=1N∑i=1NαiαjyiyjK(xi,xj)−∑i=1Nαi
W(\alpha)=\frac12\sum_{i=1}^N \sum_{i=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_i
W(α)=21i=1∑Ni=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi分类决策函数变为:
f(x)=sign(∑i=1Nsαi∗yiϕ(xi)⋅ϕ(x)+b∗)=sign(∑i=1Nsαi∗yiK(xi,x)+b∗)
f(x)=sign \left (\sum_{i=1}^{N_s}\alpha_i^*y_i\phi(x_i) \cdot \phi(x) + b^*\right)=sign \left(\sum_{i=1}^{N_s}\alpha_i^*y_iK(x_i,x)+b^*\right)
f(x)=sign(i=1∑Nsαi∗yiϕ(xi)⋅ϕ(x)+b∗)=sign(i=1∑Nsαi∗yiK(xi,x)+b∗)这等价于经过映射函数ϕ\phiϕ将原来的输入空间变换到一个新的特征空间,将内积xi⋅xjx_i \cdot x_jxi⋅xj变换为ϕ(xi)⋅ϕ(xj)\phi(x_i) \cdot \phi(x_j)ϕ(xi)⋅ϕ(xj),在新的特征空间里从训练样本中学习线性支持向量机。学习是隐式地在特征空间进行的,不需要定义特征空间和映射函数。在实际中,往往依赖领域知识直接选择核函数,核函数选择的有效性需要通过实验验证。
常用核函数:高斯核函数是比较常用的,其他还有多项式核函数、字符串核函数。
高斯核函数:
K(x,z)=exp(−∥x−z∥22δ2)
K(x,z)=exp\left(-\frac {{\Vert x-z \Vert}^2} {2\delta^2} \right)
K(x,z)=exp(−2δ2∥x−z∥2)对应的支持向量机是高斯径向基函数分类器,在此情形下分类决策函数为:
f(x)=sign(∑i=1Nsαi∗yiexp(−∥x−xi∥22δ2)+b∗)
f(x)=sign\left(\sum_{i=1}^{N_s}\alpha_i^*y_iexp\left(-\frac {{\Vert x-x_i \Vert}^2}{2\delta^2}\right)+b^*\right)
f(x)=sign(i=1∑Nsαi∗yiexp(−2δ2∥x−xi∥2)+b∗)
非线性支持向量分类机
非线性支持向量机学习算法
输入:训练数据集T={(x1,y1),(x2,y2),⋯ ,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2), \cdots ,(x_N,y_N)\}T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中xi∈X=Rnx_i \in X =R^nxi∈X=Rn,yi∈Y={+1,−1}y_i \in Y=\{+1,-1\}yi∈Y={+1,−1},i=1,2,⋯ ,Ni=1,2, \cdots , Ni=1,2,⋯,N。
输出:分类决策函数。
(1)选取适当的核函数K(x,z)K(x,z)K(x,z)和适当的参数CCC,构造并求解最优化问题
minα12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαis.t.∑i=1Nαiyi=00≤αi≤C,i=1,2,⋯ ,N
\begin{array}{ll}
\min_\alpha & \frac12 \sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_i\\[2ex]
s.t. & \sum_{i=1}^N\alpha_iy_i=0\\[2ex]
& 0 \leq \alpha_i \leq C, \quad i=1,2, \cdots , N
\end{array}
minαs.t.21∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαi∑i=1Nαiyi=00≤αi≤C,i=1,2,⋯,N求最优解α∗=(α1∗,α1∗,⋯ ,αN∗)\alpha^*=(\alpha_1^*, \alpha_1^*, \cdots , \alpha_N^*)α∗=(α1∗,α1∗,⋯,αN∗)。
(2)选择α∗\alpha^*α∗的一个正分量0<αj∗<C0 \lt \alpha_j^* \lt C0<αj∗<C,计算
b∗=yi−∑i=1Nαi∗yiK(xi⋅xj)
b^*=y_i-\sum_{i=1}^N\alpha_i^*y_iK(x_i \cdot x_j)
b∗=yi−i=1∑Nαi∗yiK(xi⋅xj)(3)构造决策函数:
f(x)=sign(∑i=1Nαi∗yiK(x⋅xi)+b∗)
f(x)=sign \left(\sum_{i=1}^N\alpha_i^*y_iK(x \cdot x_i)+b^*\right)
f(x)=sign(i=1∑Nαi∗yiK(x⋅xi)+b∗)
序列最小最优化算法
SMO(sequential minimal optimization)算法是一种启发式算法,其基本思路4是:如果所有变量的解都满足此最优化问题的KKT条件,
αi=0  ⟺  yig(xi)⩾10<αi<C  ⟺  yig(xi)=1αi=C  ⟺  yig(xi)⩽1
\begin{array}{ll}
\alpha_i=0 \iff y_ig(x_i) \geqslant 1 \\[2ex]
0 \lt \alpha_i \lt C \iff y_ig(x_i) =1\\[2ex]
\alpha_i=C \iff y_ig(x_i) \leqslant 1
\end{array}
αi=0⟺yig(xi)⩾10<αi<C⟺yig(xi)=1αi=C⟺yig(xi)⩽1其中,g(xi)=∑j=1NαiyiK(xi,xj)+bg(x_i)=\sum_{j=1}^N\alpha_iy_iK(x_i,x_j)+bg(xi)=∑j=1NαiyiK(xi,xj)+b,那么这个最优化问题的解就得到。选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,且可以通过解析方法求解,大大提高整个算法的计算速度。
子问题由两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。
Plat SMO算法,有两层循环,外层循环用来选择第一个αi\alpha_iαi值,使用两种方式交替进行:第一种,遍历整个数据集,另一种在0<αi<C0 \lt \alpha_i \lt C0<αi<C中扫描。以此来查找第一个违反KKT条件最严重的αi\alpha_iαi。
判断是否违反:
if ((oS.labelMat[i] * Ei < -oS.tol) and (oS.alphas[i] < oS.C)) or\
((oS.labelMat[i] * Ei > oS.tol) and (oS.alphas[i] < 0)):
内层循环,用来选择αj\alpha_jαj,选择的目标是使∣Ei−Ej∣\lvert E_i-E_j \rvert∣Ei−Ej∣最大