线性可分支持向量机

线性可分支持向量机

一、支持向量机

  支持向量机(support vector machines,简称SVM)是一种非常高效的分类器,在神经网络出现前,SVM被称为最强分类器。SVM的核心思想就是,对于两个类别的数据,每个数据点都可以抽象为多维空间中的一个坐标点,每一个点都对应于一个标签。那么我们已经知道这两个类别可以被一个超平面相隔开,即在超平面的一侧是一个类别,另一侧是另一个类别。很明显。在绝大多数情况下,这样的超平面并不唯一。其中,将两个类别分开,并且距离两个类别中离超平面最近的若干个点距离之和最大的那一个超平面则最能满足我们的要求。因为有这样的一个超平面,所有当我们引入一个新的样本数据时,我们就有最高的把握可以将这个新的样本点分类正确。这就是SVM的核心思想。

  在求解SVM之前,不妨思考一下这个超平面 \(S\)应该满足怎样的条件。假设超平面 \(S\)的方程是 \(\omega \cdot x + b = 0\),这里的超平面可以完美的将我们的样本数据分开。我们设样本数据集为 \(D\),一共包含 \(m\)个样本数据,每个样本都有一个标签 \(y_i\),标签的值是1或者-1,即 \(D = \{(x_1, y_1),(x_2, y_2),...,(x_m, y_m)\}\),其中 \(y_i \in \{1, -1\}\)。这里的1或者-1本质上是SVM结果的符号。根据SVM的定义,我们可以发现,超平面 \(S\)到每一个类别的样本数据的最小值是相同的,因为只有这样才可以保证SVM对没一个类别都能公平地进行分类。

函数间隔

  首先,我么可以将上述地超平面 \(S\)方程看作一个函数 \(f(x) = \omega \cdot x + b\)。同时,我们引入一个新的定义,叫做函数间隔。当我们将上述的超平面方程看作是一个函数时,如果我们代入某些坐标点,这些坐标点位于超平面上,则\(f(x) = 0\)。如果不在超平面上,则函数 \(f(x) \neq 0\)。于是我们将代入某个坐标带你到函数中得到的函数值输出叫做函数间隔。

  由上面,我们发现,如果等比例地改变 \(\omega, b\)的值,该超平面并不会改变,但是得到的函数间隔会相应改变,这是因为在本质上,超平面的放长依赖于 \(\omega, b\)之间的比值关系,和具体的数值无关,而函数间隔则会依赖于其具体数值。我们不妨取其中超平面其中一侧的类别中,所有该类别的样本数据距离超平面的函数间隔都是正数,其中最小的那个正数我们记作 \(a\)由于函数间隔依赖于 \(\omega, b\)的具体数值,那么我们总是可以动态地等比例调整 \(\omega, b\)的数值,让 \(a = 1\)。于是,我们将这样的一对 \(\omega, b\)记作 \(\omega_0, b_0\),对应的超平面方程就是 \(\omega_0 \cdot x + b_0 = 0\)

  同时,我们观察到,在函数距离为正的样本数据中,标签也可以设置为1,函数距离为负的样本数据中,标签可以被设置为-1。那么我们对所有的样本数据,都会满足下面的关系:

\[ y_i (\omega_0 \cdot x_i + b_0) \geq 1, \quad(1 \leq i \leq m) \tag{1} \]

  之所以会大于等于1,是因为我们在之前已经等比例调整过 \(\omega,b\)的数值,使之满足上面的关系。但是,函数距离并不能准确地刻画超平面到最近的样本距离之和最大这一条件,所以我们就必须用一个准确的距离表示方法来计算最近距离之和。根据空间中点线之间的距离计算公式,我们取函数距离分别为1和-1的两个点,分别记作 \((x_a, y_a),(x_b, y_b)\),我们的目标就是要求这两个点距离超平面的距离之和最大,故我们有:

\[ \max(\frac{|w_0 \cdot x_a + b_0|}{||w_0||} + \frac{|w_0 \cdot x_b + b_0|}{||w_0||}) \tag{2} \]

  考虑到 \(w_0 \cdot x_a + b_0 = 1\)\(w_0 \cdot x_b + b_0 = -1\),代入公式,会有:

\[ \max(\frac{|w_0 \cdot x_a + b_0|}{||w_0||} + \frac{|w_0 \cdot x_b + b_0|}{||w_0||}) = \max(\frac{1}{||w_0||} + \frac{1}{||w_0||}) = \max(\frac{2}{||w_0||}) \tag{3} \]

  于是,我么可以将SVM的求解问题改写成如下的形式:

\[ \begin{aligned} \max \limits_{\omega_0, b_0} &\quad \frac{2}{||w_0||} \\ s.t.&\quad y_i (\omega_0 \cdot x_i + b_0) \geq 1, \quad(1 \leq i \leq m) \end{aligned} \tag{4} \]

  考虑到求解最大的 \(\frac{2}{||w_0||}\)和求解最小的 \(\frac{1}{2}||w_0||^2\)本质上是等价的,因此,可以将上面的式子改写如下:

\[ \begin{aligned} \min \limits_{\omega_0, b_0} &\quad \frac{1}{2}||w_0||^2 \\ s.t.&\quad y_i (\omega_0 \cdot x_i + b_0) \geq 1, \quad(1 \leq i \leq m) \end{aligned} \tag{5} \]

  于是我们就得到了线性可分支持向量机的学习的最优化问题。

二、学习的对偶问题

  有时候原始问题并不是很好求解,那么我们可以使用拉格朗日对偶性来求解问题,通过求解原始问题的对偶问题来获取原问题的最优解。

  我们首先对上面的公式(5)进行一个小小的改动,并用 \(\omega, b\)替代式子中的 \(\omega_0, b_0\)。如下:

\[ \begin{aligned} \min \limits_{\omega, b} &\quad \frac{1}{2}||w||^2 \\ s.t.&\quad y_i (\omega \cdot x_i + b) - 1\geq 0, \quad(1 \leq i \leq m) \end{aligned} \tag{6} \]

  由于公式中有 \(m\)个约束条件,那么我们必须要使用 \(m\)个拉格朗日乘子进行约束,我们对每一个约束条件都使用一个 \(\alpha_i\)参数进行约束,有 \(\alpha = (\alpha_1, \alpha_2,...,\alpha_m), \alpha_i \geq 0, 1 \leq i \leq m\)。所以我们可以将拉格朗日函数定义如下:

\[ \begin{aligned} L(\omega, b, \alpha) &= \frac{1}{2}||\omega||^2 - \sum_{i= 1}^{m} \alpha_i(y_i (\omega \cdot x_i + b) - 1) \\ &= \frac{1}{2}||\omega||^2 - \sum_{i= 1}^{m} (\alpha_i y_i (\omega \cdot x_i + b) - \alpha_i) \\ &= \frac{1}{2}||\omega||^2 - \sum_{i= 1}^{m} \alpha_i y_i (\omega \cdot x_i + b) + \sum_{i= 1}^{m} \alpha_i \\ &= \frac{1}{2}||\omega||^2 - \sum_{i= 1}^{m} \alpha_i y_i \omega \cdot x_i - \sum_{i= 1}^{m} \alpha_i y_i b + \sum_{i= 1}^{m} \alpha_i \\ &= \frac{1}{2}||\omega||^2 - \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 \end{aligned} \tag{7} \]

  根据拉格朗日对偶性,原始问题所对应的对偶问题就是和 \(L(\omega, b, \alpha)\) 有关的极大极小值问题,即:

\[ \max \limits_{\alpha} \min \limits_{\omega, b} L(\omega, b, \alpha) \tag{8} \]

  对于上面的公式,我们必须先求得 \(L(\omega, b, \alpha)\)对于 \(\omega, b\)的极小值,再求 \(L(\omega, b, \alpha)\) 对于 \(\alpha\) 的极大值。

\(L(\omega, b, \alpha)\) 对于 \(\omega, b\) 的极小值

  我们对上面的 \(L(\omega, b, \alpha)\) 分别求相对于 \(\omega, b\) 的偏导数,如下:

\[ \frac{\partial}{\partial \omega} L(\omega, b, \alpha)= \omega - \sum_{i= 1}^{m} \alpha_i y_i x_i \tag{9} \]

\[ \frac{\partial}{\partial b} L(\omega, b, \alpha) = - \sum_{i= 1}^{m} \alpha_i y_i \tag{10} \]

  分别令公式(8),(9)的偏导数为0,于是我们有:

\[ \omega = \sum_{i= 1}^{m} \alpha_i y_i x_i \tag{11} \]

\[ \sum_{i= 1}^{m} \alpha_i y_i = 0 \tag{12} \]

  将公式(11),(12)代入公式(7),可以得到:

\[ \begin{aligned} L(\omega, b, \alpha) &= \frac{1}{2}||\omega||^2 - \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 \\ &= \frac{1}{2} \omega \cdot \omega - \omega \cdot \omega + \sum_{i= 1}^{m} \alpha_i \\ &= -\frac{1}{2} \omega \cdot \omega + \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} \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} \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} & \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 \alpha_i \geq 0,\quad1 \leq i \leq m \end{aligned} \tag{15} \]

  以上就是我们需要求出的SVM原问题的对偶形式。

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

  我们求出最后满足公式(15)所设定的条件的最优解的 \(\alpha\)的数值之后,接下来就需要计算超平面的 \(\omega\)\(b\) 参数了。根据公式(11),再结合我们计算出的 \(\alpha\)的最优解,就可以计算出超平面的 \(\omega\)参数,即:

\[ \omega^* = \sum_{i= 1}^{m} \alpha_i y_i x_i \tag{16} \]

  由于超平面方程只和某些特定的数据样本有关,和很多数据样本无关,这些无关的样本点对应的 \(\alpha\) 参数为0。因此,我们可以选择某一个 \(\alpha\)的大于0的分量 \(\alpha_i\),就可以求得超平面的 \(b\) 参数。因为对于这类样本数据,我们可以知道它的函数间隔是1(或者-1),于是有:

\[ y_i (\omega^* \cdot x_i + b^*) = 1 \tag{17} \]

  由上可以计算出 \(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。

  在求解 \(\alpha\) 参数的过程中,我们发现 \(\alpha\) 的很多分量是0,这表明它在SVM中不贡献求解信息,那些 \(\alpha\) 的分量不是0的样本才是提供了计算超平面的数据,因此,我们将这一类数据称为支持向量

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


Comments

Your browser is out-of-date!

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

×