支持向量机分析
1. 硬间隔支持向量机
硬间隔支持向量机的目标是找到一个超平面,使得所有数据点都位于间隔边界之外,并且间隔最大化。其优化问题可以表示为:
min w 1 2 ∥ w ∥ 2 s.t. y i ( w T x i + b ) ≥ 1 , ∀ i \begin{array}{c} \min _w \frac{1}{2} \|w\|^2 \\ \text{s.t.} \quad y_i (w^T x_i + b) \ge 1, \quad \forall i \end{array} minw21∥w∥2s.t.yi(wTxi+b)≥1,∀i
公式来源
-
目标函数: 1 2 ∥ w ∥ 2 \frac{1}{2} \|w\|^2 21∥w∥2 是为了最大化间隔。通过最小化 ∥ w ∥ 2 \|w\|^2 ∥w∥2,我们实际上是在最大化间隔,因为间隔的大小与 1 ∥ w ∥ \frac{1}{\|w\|} ∥w∥1 成反比。
-
约束条件: y i ( w T x i + b ) ≥ 1 y_i (w^T x_i + b) \ge 1 yi(wTxi+b)≥1 确保所有数据点都位于间隔边界之外。对于正类数据点( y i = 1 y_i = 1 yi=1),要求 w T x i + b ≥ 1 w^T x_i + b \ge 1 wTxi+b≥1;对于负类数据点( y i = − 1 y_i = -1 yi=−1),要求 w T x i + b ≤ − 1 w^T x_i + b \le -1 wTxi+b≤−1。
2. 软间隔支持向量机
当数据不可分时,我们需要引入松弛变量 ξ i \xi_i ξi 来允许一些数据点违反间隔条件,从而转化为软间隔优化问题。软间隔优化问题可以表示为:
min w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 n ξ i s.t. y i ( w T x i + b ) ≥ 1 − ξ i , ξ i ≥ 0 , ∀ i \begin{array}{c} \min_{w, b, \xi} \frac{1}{2} \|w\|^2 + C \sum_{i=1}^{n} \xi_i \\ \text{s.t.} \quad y_i (w^T x_i + b) \ge 1 - \xi_i, \quad \xi_i \ge 0, \quad \forall i \end{array} minw,b,ξ21∥w∥2+C∑i=1nξis.t.yi(wTxi+b)≥1−ξi,ξi≥0,∀i
公式来源
- 目标函数: 1 2 ∥ w ∥ 2 + C ∑ i = 1 n ξ i \frac{1}{2} \|w\|^2 + C \sum_{i=1}^{n} \xi_i 21∥w∥2+C∑i=1nξi。这里, 1 2 ∥ w ∥ 2 \frac{1}{2} \|w\|^2 21∥w∥2 仍然是为了最大化间隔,而 C ∑ i = 1 n ξ i C \sum_{i=1}^{n} \xi_i C∑i=1nξi 是为了惩罚违反间隔条件的数据点。 C C C 是一个正则化参数,用于平衡间隔的宽度和违反间隔条件的数据点数量。
- 约束条件: y i ( w T x i + b ) ≥ 1 − ξ i y_i (w^T x_i + b) \ge 1 - \xi_i yi(wTxi+b)≥1−ξi 确保数据点尽可能位于间隔边界之外,但允许一些数据点违反间隔条件。 ξ i ≥ 0 \xi_i \ge 0 ξi≥0 确保松弛变量为非负。
- #分析#:也就是说,允许一部分应该满足条件的数据,例如应该 ≥ 1 \ge1 ≥1的数据 ≥ 1 − ξ \ge1-\xi ≥1−ξ就可以了,相当于引入了一个偏差,允许偏差存在,但是偏差要足够小,所以带入了目标函数作为我们的惩罚项。
- 违反间隔条件:当 ξ i > 0 \xi_i > 0 ξi>0 时,表示第 i i i 个数据点违反了间隔条件。具体来说, ξ i \xi_i ξi 越大,表示数据点越接近或越远离其应在的位置。
- 惩罚项: C ∑ i = 1 n ξ i C \sum_{i=1}^{n} \xi_i C∑i=1nξi 是目标函数中的惩罚项,用于控制违反间隔条件的数据点数量和程度。 C C C 是一个超参数,用于平衡间隔的宽度和违反间隔条件的数据点数量。较大的 C C C 值会导致模型对违反间隔条件的数据点更加敏感,而较小的 C C C 值会使模型更加宽容。
3. 拉格朗日对偶形式
为了求解这个优化问题,我们可以引入拉格朗日乘子 α i \alpha_i αi 和 μ i \mu_i μi,并构建拉格朗日函数:
L ( w , b , ξ , α , μ ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 n ξ i − ∑ i = 1 n α i [ y i ( w T x i + b ) − 1 + ξ i ] − ∑ i = 1 n μ i ξ i L(w, b, \xi, \alpha, \mu) = \frac{1}{2} \|w\|^2 + C \sum_{i=1}^{n} \xi_i - \sum_{i=1}^{n} \alpha_i [y_i (w^T x_i + b) - 1 + \xi_i] - \sum_{i=1}^{n} \mu_i \xi_i L(w,b,ξ,α,μ)=21∥w∥2+Ci=1∑nξi−i=1∑nαi[yi(wTxi+b)−1+ξi]−i=1∑nμiξi
通过对 w w w, b b b, ξ \xi ξ 求偏导并设为零,可以得到对偶问题:
max α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i T x j s.t. 0 ≤ α i ≤ C , ∑ i = 1 n α i y i = 0 \begin{array}{c} \max_{\alpha} \sum_{i=1}^{n} \alpha_i - \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j x_i^T x_j \\ \text{s.t.} \quad 0 \le \alpha_i \le C, \quad \sum_{i=1}^{n} \alpha_i y_i = 0 \end{array} maxα∑i=1nαi−21∑i=1n∑j=1nαiαjyiyjxiTxjs.t.0≤αi≤C,∑i=1nαiyi=0
注:
在构建支持向量机(SVM)的拉格朗日对偶问题时,我们通常对原始变量( w w w, b b b, ξ \xi ξ)求偏导数并设为零,而不是对拉格朗日乘子( α i \alpha_i αi, μ i \mu_i μi)求导数。这是因为我们希望通过消去原始变量,得到一个仅关于拉格朗日乘子的对偶问题。让我们详细分析一下这个过程。
1. 拉格朗日函数
首先,我们构建拉格朗日函数:
L ( w , b , ξ , α , μ ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 n ξ i − ∑ i = 1 n α i [ y i ( w T x i + b ) − 1 + ξ i ] − ∑ i = 1 n μ i ξ i L(w, b, \xi, \alpha, \mu) = \frac{1}{2} \|w\|^2 + C \sum_{i=1}^{n} \xi_i - \sum_{i=1}^{n} \alpha_i [y_i (w^T x_i + b) - 1 + \xi_i] - \sum_{i=1}^{n} \mu_i \xi_i L(w,b,ξ,α,μ)=21∥w∥2+Ci=1∑nξi−i=1∑nαi[yi(wTxi+b)−1+ξi]−i=1∑nμiξi
2. 对原始变量求偏导数并设为零
我们对原始变量 w w w, b b b, ξ \xi ξ 求偏导数并设为零,以消去这些变量,从而得到对偶问题。
对 w w w 求偏导并设为零
∂ L ∂ w = w − ∑ i = 1 n α i y i x i = 0 \frac{\partial L}{\partial w} = w - \sum_{i=1}^{n} \alpha_i y_i x_i = 0 ∂w∂L=w−i=1∑nαiyixi=0
解得:
w = ∑ i = 1 n α i y i x i w = \sum_{i=1}^{n} \alpha_i y_i x_i w=i=1∑nαiyixi
对 b b b 求偏导并设为零
∂ L ∂ b = − ∑ i = 1 n α i y i = 0 \frac{\partial L}{\partial b} = - \sum_{i=1}^{n} \alpha_i y_i = 0 ∂b∂L=−i=1∑nαiyi=0
解得:
∑ i = 1 n α i y i = 0 \sum_{i=1}^{n} \alpha_i y_i = 0 i=1∑nαiyi=0
对 ξ i \xi_i ξi 求偏导并设为零
∂ L ∂ ξ i = C − α i − μ i = 0 \frac{\partial L}{\partial \xi_i} = C - \alpha_i - \mu_i = 0 ∂ξi∂L=C−αi−μi=0
解得:
α i + μ i = C \alpha_i + \mu_i = C αi+μi=C
3. 构建对偶问题
通过对原始变量求偏导并设为零,我们得到了 w w w, b b b, ξ \xi ξ 的表达式。接下来,我们将这些表达式代入拉格朗日函数中,消去 w w w, b b b, ξ \xi ξ,从而得到一个仅关于拉格朗日乘子 α i \alpha_i αi 的对偶问题。
将 w = ∑ i = 1 n α i y i x i w = \sum_{i=1}^{n} \alpha_i y_i x_i w=∑i=1nαiyixi 代入拉格朗日函数:
L ( w , b , ξ , α , μ ) = 1 2 ( ∑ i = 1 n α i y i x i ) 2 + C ∑ i = 1 n ξ i − ∑ i = 1 n α i [ y i ( ∑ j = 1 n α j y j x j T x i + b ) − 1 + ξ i ] − ∑ i = 1 n μ i ξ i L(w, b, \xi, \alpha, \mu) = \frac{1}{2} \left( \sum_{i=1}^{n} \alpha_i y_i x_i \right)^2 + C \sum_{i=1}^{n} \xi_i - \sum_{i=1}^{n} \alpha_i [y_i (\sum_{j=1}^{n} \alpha_j y_j x_j^T x_i + b) - 1 + \xi_i] - \sum_{i=1}^{n} \mu_i \xi_i L(w,b,ξ,α,μ)=21(i=1∑nαiyixi)2+Ci=1∑nξi−i=1∑nαi[yi(j=1∑nαjyjxjTxi+b)−1+ξi]−i=1∑nμiξi
通过整理和简化,可以得到对偶问题:
max α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i T x j s.t. 0 ≤ α i ≤ C , ∑ i = 1 n α i y i = 0 \begin{array}{c} \max_{\alpha} \sum_{i=1}^{n} \alpha_i - \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j x_i^T x_j \\ \text{s.t.} \quad 0 \le \alpha_i \le C, \quad \sum_{i=1}^{n} \alpha_i y_i = 0 \end{array} maxα∑i=1nαi−21∑i=1n∑j=1nαiαjyiyjxiTxjs.t.0≤αi≤C,∑i=1nαiyi=0
4. 为什么不对拉格朗日乘子求导数?
对拉格朗日乘子( α i \alpha_i αi, μ i \mu_i μi)求导数并设为零并不能直接得到对偶问题。拉格朗日乘子是用于处理约束条件的,通过对原始变量求偏导并设为零,我们可以消去这些变量,从而得到一个仅关于拉格朗日乘子的对偶问题。对偶问题的解与原始问题的解是等价的,但对偶问题通常更容易求解。
公式来源
- 拉格朗日函数:通过引入拉格朗日乘子 α i \alpha_i αi 和 μ i \mu_i μi,我们将原始问题的约束条件合并到目标函数中。
- 对偶问题:通过对 w w w, b b b, ξ \xi ξ 求偏导并设为零,我们可以消去这些变量,得到一个仅关于 α i \alpha_i αi 的对偶问题。对偶问题的解与原始问题的解是等价的。