支持向量机是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。
模型包括以下几类:
-
当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;
-
当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;
-
当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机;
- 序列最小最优化算法 $SMO$;
1. 基本概念
如果数据集不是线性可分的,比如二维空间中,就是找不到一条直线能刚好把正负例分开,此时忽略掉一些异常点,就可以用一个分离超平面把正负例给分开。
这样的话也就不是硬间隔了,而是软间隔。
对每个样本点引入一个松弛变量 $xi_{i} geq 0$,并引入一个惩罚系数 $C > 0$,$C$ 越大表示对特异点的惩罚越大,此时最优化问题变为:
$$min ;; frac{1}{2}||w||^{2} + Csum_{i=1}^{n}xi_{i}\
s.t. ;;; y_{i}left ( w^{T}x_{i} + b
ight ) geq 1 - xi_{i}, ; i = 1,2,cdots,n \
xi_{i} geq 0, ; i = 1,2,cdots,n$$
也就是说,现在所选的支撑超平面之间并不是严格“真空”的,存在一些特异点,我们允许它存在,但这样的模型得付出一点代价。
2. 学习的对偶算法
建立拉格朗日函数:
$$L(w,b,xi,alpha,mu) = frac{1}{2}||w||^{2} + Csum_{i=1}^{n}xi_{i} + sum_{i=1}^{n}alpha_{i}left [ 1 - xi _{i} - y_{i}left ( w^{T}x_{i} + b
ight )
ight ] - sum_{i = 1}^{n}mu_{i}xi_{i} \
= frac{1}{2}||w||^{2} + Csum_{i=1}^{n}xi_{i} - sum_{i=1}^{n}alpha_{i}y_{i}left ( w^{T}x_{i} + b
ight ) + sum_{i=1}^{n}alpha_{i}left ( 1 - xi_{i}
ight ) - sum_{i = 1}^{n}mu_{i}xi_{i}, ;; alpha_{i} geq 0, mu_{i} geq 0$$
求解此不等式约束问题的 KKT 条件为
$$left{egin{matrix}
L_{w} = w - sum_{i=1}^{n}alpha_{i}y_{i}x_{i} = 0 \
L_{b} = -sum_{i=1}^{n}alpha_{i}y_{i} = 0 \
L_{xi_{i}} = C - alpha_{i} - mu_{i} = 0, ; i = 1,2,cdots,n \
y_{i}left ( w^{T}x_{i} + b
ight ) - 1 + xi_{i} geq 0, ; i = 1,2,cdots,n \
xi_{i} geq 0, ; i = 1,2,cdots,n \
alpha_{i} left [ y_{i}left ( w^{T}x_{i} + b
ight ) - 1 + xi_{i}
ight ] = 0, ; i = 1,2,cdots,n \
mu_{i}xi_{i} = 0, ; i = 1,2,cdots,n \
alpha_{i} geq 0,; i = 1,2,cdots,n \
mu_{i} geq 0,; i = 1,2,cdots,n
end{matrix}
ight. ; Rightarrow ;
left{egin{matrix}
w = sum_{i=1}^{n}alpha_{i}y_{i}x_{i} \
sum_{i=1}^{n}alpha_{i}y_{i} = 0 \
C - alpha_{i} - mu_{i} = 0, ; i = 1,2,cdots,n \
b = y_{j}(1 - xi_{j}) - w^{T}x_{j} = y_{j} - sum_{i=1}^{n}alpha_{i}y_{i}x_{i}^{T}x_{j}, ;(0 < alpha_{j} < C)
end{matrix}
ight.$$
若存在一个 $0 < alpha_{j} < C$,则根据 $C - alpha_{j} - mu_{j} = 0$ 可知,必有 $mu_{j} > 0$,又 $mu_{j}xi_{j} = 0$,所以 $xi_{j} = 0$。
根据拉格朗日对偶转化原始问题,最终我们所要求解的最优化问题为
$$min_{alpha } ; frac{1}{2}sum_{i=1}^{n}sum_{j=1}^{n}alpha_{i}alpha_{j}y_{i}y_{j}(x_{i}^{T}x_{j}) -sum_{i=1}^{n}alpha_{i} \
s.t. ;;; sum_{i=1}^{n}alpha_{i}y_{i} = 0 \
0 leq alpha_{i} leq C, ; i = 1,2,cdots,n$$