线性不可分支持向量机

线性不可分支持向量机

一、硬间隔SVM和软间隔SVM

  前面简单介绍了以下线性可分SVM,本质上前面介绍的SVM属于硬间隔SVM,因为我们已经知道存在一个超平面 \(S:\omega \cdot x + b = 0\) 可以将所有的样本数据完美分开。但是实际上,并不是所有的样本数据都这么完美。有时候存在这种情况,给定一个样本数据集,绝大多数的样本都是线性可分的,但是存在某些特别的样本是线性不可分的。例如,如果我们将 \(y = 0\) 这条直线看作一个分类的超平面, \(y = 0\) 以上的点标记为1, \(y = 0\) 以下的点标记为-1,那么绝大多数的样本点符合这个规则,但是有一些点位于 \(y = 0\) 以上,却被标记为-1,有些点位于 \(y = 0\) 以下,却被标记为了1,这样就会导致整个数据集线性不可分。

  线性不可分的数据集不能使用硬间隔SVM,根本原因在于硬间隔SVM对于函数距离的使用较为严格,必须满足 \(y_i(\omega \cdot x + b) \geq 1\) 这个条件。所以为了可以解决上面提到的问题,我们可以在硬间隔SVM的表达式上进行一些修改。既然条件比较严格,那么我们就对每一个条件进行一定的松弛操作,所以我们需要引入一个新的松弛变量 \(\xi\) ,于是对每一个条件,我们有: \[ y_i (\omega \cdot x_i + b) \geq 1 - \xi_i \quad (1 \leq i \leq m) \tag{1} \]   其中, \(\xi_i \geq 0\)。因为引入了多余的参数,所有我们需要对原目标函数和松弛变量之间的关系进行平衡,因此,目标函数更改为: \[ \frac{1}{2} ||\omega||^2 + C \sum_{i = 1}^{m} \xi_i \quad (1 \leq i \leq m) \tag{2} \]   这里的 \(C\) 是一个人为设定的超参数,通常 \(C > 0\),或者可以叫做平衡系数,或者惩罚参数,主要是用来平衡两者之间的关系。当 \(C\) 比较大的时候对那些对那些误分类的样本数据的惩罚作用就会比较大,反之则会比较小,所以最小化目标函数就包括了既要使得超平面 \(S\) 到最近样本的 距离之和最小,又要使得误分类的数据样本的数目最小。

  所以,我们需要求解的问题就变成了如下形式( \(m\) 为样本数目): \[ \begin{aligned} \min \limits_{\omega, b, \xi} & \quad \frac{1}{2} ||\omega||^2 + C \sum_{i = 1}^{m} \xi_i \\ s.t. & \quad y_i (\omega \cdot x_i + b) \geq 1 - \xi_i \quad (1 \leq i \leq m) \\ & \quad \xi_i \geq 0 \quad (1 \leq i \leq m) \end{aligned} \tag{3} \]

二、学习的对偶问题

  首先我们对式(3)进行一个小小的变化,如下: \[ \begin{aligned} \min \limits_{\omega, b, \xi} & \quad \frac{1}{2} ||\omega||^2 + C \sum_{i = 1}^{m} \xi_i \\ s.t. & \quad y_i (\omega \cdot x_i + b) - 1 + \xi_i \geq 0 \quad (1 \leq i \leq m) \\ & \quad \xi_i \geq 0 \quad (1 \leq i \leq m) \end{aligned} \tag{4} \]   和前面一样,我们对上面的式子使用拉格朗日数乘法,因为上面由两个不同类型的约束条件,所以我们需要使用两个不同的变量进行控制。在这里我们使用 \(\alpha = (\alpha_1, \alpha_2, ..., \alpha_i)\) 来对第一个条件进行约束,使用 \(\mu = (\mu_1, \mu_2, ..., \mu_i)\) 来对第二个条件进行约束,于是我们的问题就转换成了求解下面的式子的极大极小值的问题( \(L(w, b, \xi, \alpha, \mu)\) 表示我们使用的拉格朗日函数): \[ \max_{\alpha, \mu} \min_{\omega, b, \xi} \quad L(w, b, \xi, \alpha, \mu) \tag{5} \]   我们的拉格朗日函数定义如下: \[ \begin{aligned} L(w, b, \xi, \alpha, \mu) &= \frac{1}{2} ||\omega||^2 + C \sum_{i = 1}^{m} \xi_i - \sum_{i = 1}^{m} \alpha_i (y_i (\omega \cdot x_i + b) - 1 + \xi_i) - \sum_{i = 1}^{m} \mu_i \xi_i \\ &= \frac{1}{2} ||\omega||^2 + C \sum_{i = 1}^{m} \xi_i - \sum_{i = 1}^{m} \alpha_i y_i (\omega \cdot x_i + b) + \sum_{i = 1}^{m} \alpha_i - \sum_{i = 1}^{m} \alpha_i \xi_i - \sum_{i = 1}^{m} \mu_i \xi_i \\ &= \frac{1}{2} ||\omega||^2 + C \sum_{i = 1}^{m} \xi_i - \omega \cdot \sum_{i = 1}^{m} \alpha_i y_i x_i - b \sum_{i = 1}^{m} \alpha_i y_i + \sum_{i = 1}^{m} \alpha_i - \sum_{i = 1}^{m} \alpha_i \xi_i - \sum_{i = 1}^{m} \mu_i \xi_i \end{aligned} \tag{6} \]   接着,我们需要先求出目标拉格朗日函数对于 \(\omega\)\(b\)\(\xi\) 的极小值,所以我们需要对着三个变量分别求偏导,(注意,由于 \(\xi\) 的每一个分量都是相同地位的,所以我们只需要对其中的一个分量求偏导即可。)如下: \[ \frac{\partial}{\partial \omega} L(w, b, \xi, \alpha, \mu)= \omega - \sum_{i = 1}^{m} \alpha_i y_i x_i \tag{7} \] \[ \frac{\partial}{\partial b} L(w, b, \xi, \alpha, \mu) = \sum_{i = 1}^{m} \alpha_i y_i \tag{8} \] \[ \frac{\partial}{\partial \xi_i} L(w, b, \xi, \alpha, \mu) = C - \alpha_i - \mu_i \tag{9} \]   我们分别令上面的三个偏导数为0,于是我们可以得到: \[ \omega = \sum_{i = 1}^{m} \alpha_i y_i x_i \tag{10} \] \[ \sum_{i = 1}^{m} \alpha_i y_i = 0 \tag{11} \] \[ C = \alpha_i + \mu_i \tag{12} \]   我们将上面的结果代入到 \(L(w, b, \xi, \alpha, \mu)\) 中: \[ \begin{aligned} L(w, b, \xi, \alpha, \mu) &= \frac{1}{2} ||\omega||^2 + C \sum_{i = 1}^{m} \xi_i - \omega \cdot \sum_{i = 1}^{m} \alpha_i y_i x_i - b \sum_{i = 1}^{m} \alpha_i y_i + \sum_{i = 1}^{m} \alpha_i - \sum_{i = 1}^{m} \alpha_i \xi_i - \sum_{i = 1}^{m} \mu_i \xi_i \\ &= \frac{1}{2} ||\omega||^2 + C \sum_{i = 1}^{m} \xi_i - \omega \cdot \omega + \sum_{i = 1}^{m} \alpha_i - \sum_{i = 1}^{m} \alpha_i \xi_i - \sum_{i = 1}^{m} \mu_i \xi_i \\ &= \frac{1}{2} ||\omega||^2 + C \sum_{i = 1}^{m} \xi_i - \omega \cdot \omega + \sum_{i = 1}^{m} \alpha_i - \sum_{i = 1}^{m} (\alpha_i \xi_i + \mu_i \xi_i) \\ &= \frac{1}{2} ||\omega||^2 + C \sum_{i = 1}^{m} \xi_i - \omega \cdot \omega + \sum_{i = 1}^{m} \alpha_i - \sum_{i = 1}^{m} \xi_i (\alpha_i + \mu_i) \\ &= \frac{1}{2} ||\omega||^2 + C \sum_{i = 1}^{m} \xi_i - \omega \cdot \omega + \sum_{i = 1}^{m} \alpha_i - C \sum_{i = 1}^{m} \xi_i \\ &= - \frac{1}{2} ||\omega||^2 + \sum_{i = 1}^{m} \alpha_i \\ &= -\frac{1}{2} (\sum_{i= 1}^{m} \alpha_i y_i x_i)(\sum_{j= 1}^{m} \alpha_j y_j x_j) + \sum_{i= 1}^{m} \alpha_i \\ &= -\frac{1}{2} \sum_{i= 1}^{m}\sum_{j= 1}^{m} \alpha_i \alpha_j y_i y_j (x_i \cdot x_j) + \sum_{i= 1}^{m} \alpha_i \end{aligned} \tag{13} \]   所以问题就变成了求解下面式子的极大值: \[ \max \limits_{\alpha, \mu} \quad -\frac{1}{2} \sum_{i= 1}^{m}\sum_{j= 1}^{m} \alpha_i \alpha_j y_i y_j (x_i \cdot x_j) + \sum_{i= 1}^{m} \alpha_i \]   反转一下正负号,就会有: \[ \min \limits_{\alpha, \mu} \quad \frac{1}{2} \sum_{i= 1}^{m}\sum_{j= 1}^{m} \alpha_i \alpha_j y_i y_j (x_i \cdot x_j) - \sum_{i= 1}^{m} \alpha_i \tag{14} \]   所以我们所需要的原问题的对偶问题可以表示如下: \[ \begin{aligned} \min \limits_{\alpha, \mu} &\quad \frac{1}{2} \sum_{i= 1}^{m}\sum_{j= 1}^{m} \alpha_i \alpha_j y_i y_j (x_i \cdot x_j) - \sum_{i= 1}^{m} \alpha_i \\ s.t. &\quad \sum_{i = 1}^{m} \alpha_i y_i = 0 \\ &\quad C - \alpha_i - \mu_i = 0 \\ &\quad \alpha_i \geq 0 \\ &\quad \mu_i \geq 0, \quad 1 \leq i \leq m \end{aligned} \tag{15} \]   观察到上式中存在一个等式关系,于是,我们可以利用这个等式关系消去 \(\mu_i\) 这个变量: \[ \because C - \alpha_i - \mu_i = 0 \\ \therefore \mu_i = C - \alpha_i \\ \therefore \mu_i = C - \alpha_i \geq 0 \\ \therefore C \geq \alpha_i \]   于是,我们的问题可以有如下的表达: \[ \begin{aligned} \min \limits_{\alpha} &\quad \frac{1}{2} \sum_{i= 1}^{m}\sum_{j= 1}^{m} \alpha_i \alpha_j y_i y_j (x_i \cdot x_j) - \sum_{i= 1}^{m} \alpha_i \\ s.t. &\quad \sum_{i = 1}^{m} \alpha_i y_i = 0 \\ &\quad 0 \leq \alpha_i \leq C, \quad 1 \leq i \leq m \end{aligned}\tag{16} \]   以上就是我们需要求出的线性不可分SVM原问题的对偶形式。

求解 \(\omega\)\(b\) 参数

  我们求出最后满足公式(16)所设定的条件的最优解的 \(\alpha\) 的数值之后,接下来就需要计算超平面的 \(\omega\)\(b\) 参数了。根据公式(10),再结合我们计算出的 \(\alpha\) 的最优解,就可以计算出超平面的 \(\omega\) 参数,即: \[ \omega^* = \sum_{i= 1}^{m} \alpha_i y_i x_i \tag{17} \]   由于超平面方程只和某些特定的数据样本有关,和很多数据样本无关,这些无关的样本点对应的 \(\alpha\) 参数为0。因此,我们可以选择某一个 \(\alpha\) 的分量 \(\alpha_i\),该分量满足 \(0 < \alpha_i < C\) ,就可以求得超平面的 \(b\) 参数。因为对于这类样本数据,我们可以知道它的函数间隔是1(或者-1),于是有: \[ y_i (\omega^* \cdot x_i + b^*) = 1 \tag{18} \]   由上可以计算出 \(b^*\) 的数值为: \[ b^* = y_i - \omega^* \cdot x_i \\ b^* = y_i - x_i \cdot \sum_{j = 1}^{m} \alpha_j y_j x_j \tag{18} \]

三、支持向量和决策函数

  当我们根据上面的对偶问题求解出了需要的 \(\omega^*\)\(b^*\) 参数后,我们就可以知道该分类模型的决策函数如下: \[ f(x) = sign(\omega^* \cdot x + b^*) \tag{19} \]   其中, \(sign()\) 函数表示的是取数值的符号,如果数值是正数,返回1,如果数值是负数,返回-1。
  在线性不可分SVM的求解过程中,因为引入了松弛变量,所以支持向量的判定会较为复杂。会出现以下的情况:

  1. 如果 \(\alpha_i < C\),这时 \(\xi_i = 0\),我们可以知道此时该样本位于间隔的边界上,正好属于一个支持向量。
  2. 如果 \(\alpha_i = C\),这时我们知道该样本的数据已经偏离了正确的间隔边界,所以又存在以下的几种情况:
    1. 如果此时 \(0 < \xi_i < 1\),那我们根据函数间隔的性质可以知道,虽然样本数据已经越过了间隔的边界,但是仍然属于分类正确的样本,此时样本数据位于超平面和间隔边界之间。
    2. 如果此时 \(\xi_i = 1\),那么我们根据函数间隔的性质,可以知道的是样本正好位于分类的超平面上。
    3. 如果此时 \(\xi_i > 1\),那么这时候,样本数据已经越过了分类的超平面,已经属于误分类的样本数据了,且 \(\xi_i\) 的数值越大,距离超平面越远。

  以上的样本数据统称为支持向量

  综上就是线性不可分SVM的全部求解过程。


Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×