支持向量机 (二): 软间隔 svm 与 核函数
软间隔最大化(线性不可分类svm)
上一篇求解出来的间隔被称为 “硬间隔(hard margin)“,其可以将所有样本点划分正确且都在间隔边界之外,即所有样本点都满足 \(y_{i}(\boldsymbol{w}^{\top} \boldsymbol{x}_{i}+b) \geqslant 1\) 。
但硬间隔有两个缺点:1. 不适用于线性不可分数据集。 2. 对离群点(outlier)敏感。
比如下图就无法找到一个超平面将蓝点和紫点完全分开:
下图显示加入了一个离群点后,超平面发生了很大的变动,最后形成的间隔变得很小,这样最终的泛化效果可能不会太好。
为了缓解这些问题,引入了 “软间隔(soft margin)”,即允许一些样本点跨越间隔边界甚至是超平面。如下图中一些离群点就跨过了间隔边界。
于是为每个样本点引入松弛变量 \(\large{\xi_i}\),优化问题变为:
\[
\begin{aligned}
\min\limits_{\boldsymbol{w}, b,\boldsymbol{\xi}} & \;\; \frac12 ||\boldsymbol{w}||^2 + C \,\sum\limits_{i=1}^m \xi_i \\[1ex]
{\text { s.t. }} & \;\; y_{i}\left(\boldsymbol{w}^{\top} \boldsymbol{x}_{i}+b\right) \geq 1 - \xi_i, \quad i=1,2, \ldots, m \\[1ex]
& \;\; \xi_i \geq 0, \quad i=1,2, \ldots m
\end{aligned} \tag{1.1}
\]
由上式可以看出:
离群点的松弛变量值越大,点就离间隔边界越远。
所有没离群的点松弛变量都等于0,即这些点都满足 \(y_{i}\left(\boldsymbol{w}^{\top} \boldsymbol{x}_{i}+b\right) \geqslant 1\) 。
\(C > 0\) 被称为惩罚参数,即为 scikit-learn 中的 svm 超参数C。当C设的越大,意味着对离群点的惩罚就越大,最终就会有较少的点跨过间隔边界,模型也会变得复杂。而C设的越小,则较多的点会跨过间隔边界,最终形成的模型较为平滑。
该优化问题的求解方法与前篇类似,为每条约束引入拉格朗日乘子: \(\alpha_i \geqslant 0, \; \beta_i \geqslant 0\) ,\((1.1)\) 式的拉格朗日函数为:
\[
\mathcal{L}(\boldsymbol{w}, b, \boldsymbol{\xi}, \boldsymbol{\alpha}, \boldsymbol{\beta}) = \frac12 ||\boldsymbol{w}||^2 + C \sum\limits_{i=1}^m\xi_i + \sum\limits_{i=1}^m\alpha_i \left[1 - \xi_i - y_i(\boldsymbol{w}^{\top} \boldsymbol{x}_i + b)\right] + \sum\limits_{i=1}^m \beta_i(-\xi_i)
\]
其对偶问题为:
\[
\begin{aligned}
\max_{\boldsymbol{\alpha}, \boldsymbol{\beta}}\min_{\boldsymbol{w},b,\boldsymbol{\xi}} &\;\; \mathcal{L}(\boldsymbol{w}, b, \boldsymbol{\xi}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \\[1ex]
\text{s.t.} &\;\; \alpha_i \geq 0, \quad i=1,2, \ldots m \\[1ex]
& \;\;\beta_i \geq 0, \quad i = 1,2, \ldots m
\end{aligned} \tag{1.3}
\]
上式内层对 \((\boldsymbol{w}, b, \boldsymbol{\xi})\) 的优化属于无约束优化问题,则令偏导为零:
\[
\begin{align}
\frac{\partial \mathcal{L}}{\partial \boldsymbol{w}} = \boldsymbol{0} & \implies \boldsymbol{w} = \sum\limits_{i=1}^m \alpha_i y_i \boldsymbol{x}_i \qquad\qquad \tag{1.4} \\
\frac{\partial \mathcal{L}}{\partial b} = 0 & \implies \sum\limits_{i=1}^m \alpha_iy_i = 0 \qquad\qquad\quad\; \tag{1.5} \\
\frac{\partial \mathcal{L}}{\partial \boldsymbol{\xi}} = \boldsymbol{0} & \implies \beta_i = C - \alpha_i \qquad\qquad\quad\; \tag{1.6}
\end{align}
\]
将 \((1.4) \sim (1.6)\) 式代入 \((1.2)\) 式得:
\[
\begin{aligned}
\mathcal{L}(\boldsymbol{w}, b, \boldsymbol{\xi}, \boldsymbol{\alpha}, \boldsymbol{\beta}) &= \frac12 \sum\limits_{i=1}^m\sum\limits_{j=1}^m \alpha_i\alpha_jy_iy_j\boldsymbol{x}_i^{\top}\boldsymbol{x}_j + C\sum\limits_{i=1}^m \xi_i + \sum\limits_{i=1}^m\alpha_i(1 - \xi_i) - \sum\limits_{i=1}^m(C - \alpha_i)\xi_i \\[1ex]
& = \sum\limits_{i=1}^m \alpha_i - \frac12 \sum\limits_{i=1}^m\sum\limits_{j=1}^m \alpha_i\alpha_jy_iy_j\boldsymbol{x}_i^{\top}\boldsymbol{x}_j
\end{aligned}
\]
又由 \((1.6)\) 式: \(\beta_i = C - \alpha_i \geqslant 0\) ,因而 \(0 \leqslant \alpha_i \leqslant C\) ,于是最后的优化问题化简为:
\[
\begin{aligned}
\max_\alpha &\;\; \sum\limits_{i=1}^m \alpha_i - \frac12 \sum\limits_{i=1}^m\sum\limits_{j=1}^m \alpha_i\alpha_jy_iy_j\boldsymbol{x}_i^{\top}\boldsymbol{x}_j \\[1ex]
\text{s.t.} & \;\; \sum\limits_{i=1}^m \alpha_iy_i = 0 \\[1ex]
& \;\; 0 \leqslant \alpha_i \leqslant C, \quad i = 1,2,\ldots m
\end{aligned} \tag{1.7}
\]
与硬间隔 svm 一样,软间隔 svm 的超平面参数 \((\boldsymbol{w}, b)\) 同样由支持向量决定,然而对于软间隔 svm 中支持向量的讨论是一件比较搞脑子的事情,因为可分类的情况众多,下面进行详细讨论。不过首先回顾一下前文中硬间隔 svm 的支持向量 —— 就两种情况: (1) \(\alpha_i > 0, \;y_i(\boldsymbol{w}^{\top}\boldsymbol{x}_i + b) = 1\) ,表示在间隔边界上的样本为支持向量; (2) \(\alpha_i = 0, \; y_i(\boldsymbol{w}^{\top}\boldsymbol{x}_i + b) > 1\) ,不是支持向量。
对于软间隔 svm ,推导其支持向量需要的仍然是 \((1.3)\) 式最优解的 KKT 条件:
\[
\begin{cases}
原始问题可行: & \begin{cases} 1 - \xi_i - y_i(\boldsymbol{w}^{\top}\boldsymbol{x}_i + b) \leq 0 \qquad\qquad\quad\;\;\,\, (1.8)\\[1ex]
-\xi_i \leq 0 \qquad\qquad\qquad\qquad\qquad\qquad\quad\;\;\; (1.9) \end{cases} \\[4ex]
对偶问题可行: & \begin{cases} \alpha_i \geq 0 \qquad\qquad\qquad\qquad\qquad\qquad\qquad\; (1.10) \\[1ex]
\beta_i = C - \alpha_i \geq 0 \qquad\qquad\qquad\qquad\qquad (1.11) \end{cases} \\[4ex]
互补松弛: & \begin{cases} \alpha_i(1 - \xi_i - y_i(\boldsymbol{w}^{\top}\boldsymbol{x}_i + b)) = 0 \qquad\qquad (1.12) \\[1ex]
\beta_i \xi_i = 0 \qquad\qquad\qquad\qquad\qquad\qquad\quad\;\,\, (1.13) \end{cases}
\end{cases}
\]
下面分情况讨论:
\((1) \;\; \alpha_i = 0\), 由 \((1.4)\) 式 \(\boldsymbol{w} = \sum\limits_{i=1}^m \alpha_iy_i\boldsymbol{x}_i = 0\) ,不是支持向量。
\((2) \;\, 0 < \alpha_i < C \implies (1.11)式:\; \beta_i > 0 \implies (1.13)式:\; \xi_i = 0 \implies (1.12)式:\; y_i(\boldsymbol{w}^{\top}\boldsymbol{x}_i + b) = 1\) ,该样本在间隔边界上。 为什么不会出现 \(\xi_i > 0\) 的情况? 回顾 [拉格朗日乘子法 - KKT条件 - 对偶问题] 第二节 KKT 条件:
\[
\begin{cases} g(\boldsymbol{x}) < 0, & \lambda = 0
\\[1ex] g(\boldsymbol{x}) = 0, & \lambda > 0 \end{cases} \quad \iff \quad \lambda \geqslant 0, \;\;\lambda \,g(\boldsymbol{x}) = 0
\]
因而若 \((1.13)\) 式中拉格朗日乘子 \(\beta_i > 0\) ,则 \(\xi_i = 0\) 。
\((3) \;\; \alpha_i = C \implies (1.11) 式:\; \beta_i = 0 \implies (1.13)式:\; \xi_i > 0 \implies\)
\[
\qquad
\begin{cases}
0 < \xi_i < 1, \quad (1.12)式:\; y_i(\boldsymbol{w}^{\top}\boldsymbol{x}_i + b) = 1 - \xi_i \in (0,1),\;\; 样本在间隔边界和分离超平面之间 \\[2ex]
\xi = 1, \qquad\quad\, (1.12)式:\; y_i(\boldsymbol{w}^{\top}\boldsymbol{x}_i + b) = 1 - \xi_i = 0,\qquad\, 样本在分离超平面上 \\[2ex]
\xi > 1, \quad\qquad\, (1.12)式:\; y_i(\boldsymbol{w}^{\top}\boldsymbol{x}_i + b) = 1 - \xi_i < 0,\qquad\, 样本在分离超平面另一侧,意味着其被误分类
\end{cases}
\]
有了上述讨论后,我们来看软间隔 svm 如何得到最终的参数 \((\boldsymbol{w}, b)\) 。其中 \(\boldsymbol{w}\) 和硬间隔一样由 \((1.4)\) 式得出,而 \(b\) 的情况则不同。选择一个支持向量 \((\boldsymbol{x}_s, y_s)\) 使得 \(\alpha_i > 0\) ,则由 \((1.12)\) 式并利用 \(y_s^2 =1\) :
\[
1 - \xi_s - y_s(\boldsymbol{w}^{\top}\boldsymbol{x}_s + b) = y_s^2 - y_s^2\xi_s - y_s(\boldsymbol{w}^{\top}\boldsymbol{x}_s + b) = 0 \;\;\large\color{lime}{\implies}\;\; \color{black}\normalsize b = y_s - y_s\xi_s - \boldsymbol{w}^{\top}\boldsymbol{x}_s
\]
现在由于 \(b\) 还未求出,所以我们不知道超平面的具体样貌,如果选择了一个 \(\xi_s > 0\) 的支持向量,就无法得知 \(\xi_s\) 的具体值是多少 (由 (1.12) 式: \(\xi_s = 1 - y_i(\boldsymbol{w}^{\top}\boldsymbol{x}_i + b)\) ),也就无法求出 \(b\) 。因此这里需要使 \(\xi_s = 0\) 才能求出 \(b\) ,由上文讨论可知只有 \(0 < \alpha_s < C\) ,即样本在间隔边界上时,\(\xi_s = 0\) 。因而不同于硬间隔 svm, 软间隔求 \(b\) 选择的支持向量不是任一支持向量,而是必须满足条件的支持向量,这说明软间隔 svm 的超平面确实刻意忽略了间隔边界之内的那些离群点,因为这些点都有 \(\xi_i > 0\) 。
当然也可以对此类支持向量求平均得到 \(b\):
\[
b = \frac{1}{|SV_{<C}|} \sum\limits_{s \in SV_{<C}} \left( y_s - \sum\limits_{i \in SV_{<C}} \alpha_i y_i \boldsymbol{x}_i^\top\boldsymbol{x}_s \right)
\]
其中 \(SV_{<C}\) 表示满足 \(0 < \alpha_s<C\) 的支持向量。
二、核函数(非线性svm)
前面展示的硬间隔和软间隔 svm 主要是用于处理线性分类问题,然而现实中很多分类问题是非线性的,如下图所示,无论怎样一个线性超平面都无法很好地将样本点分类:
所以在此引入核函数(kernel function),构造非线性svm,如下图所示,左图使用的是多项式核函数,右图使用的是高斯核函数,二者均能将样本点很好地分类:
核函数的主要作用是将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。下图显示原来在二维空间不可分的两类样本点,在映射到三维空间后变为线性可分 :
但回到原来的二维空间中,决策边界就变成非线性的了:
核函数是如何将原始空间映射到高维的特征空间的? 下面先举个例子:
假设做一个2维到3维的映射,\(\large{\Phi}: \;\mathbb{R}^2 \longrightarrow \mathbb{R}^3\)
\[
\phi(\boldsymbol{x}) = \phi \begin{pmatrix}x_1 \\ x_2 \end{pmatrix} = \begin{pmatrix} x_1^2 \\ \sqrt{2}\,x_1x_2 \\ x_2^2\end{pmatrix}
\]
求 \(\phi(\boldsymbol{a})\) 和 \(\phi(\boldsymbol{b})\) 的内积:
\[
\begin{aligned}
\phi(\textbf{a})^T \phi(\textbf{b}) & =
\begin{pmatrix}
a_1^2 \\
\sqrt2 \, a_1a_2 \\
a_2^2
\end{pmatrix}^T \cdot
\begin{pmatrix}
b_1^2 \\
\sqrt2 \, b_1b_2 \\
b_2^2
\end{pmatrix} =
a_1^2b_1^2 + 2a_1b_1a_2b_2 + a_2^2b_2^2 \\[1ex]
& = (a_1b_1 + a_2b_2)^2 = \begin{pmatrix}\begin{pmatrix} a_1 \\ a_1 \end{pmatrix}^T \begin{pmatrix} b_1 \\ b_1 \end{pmatrix}\end{pmatrix}^2 = ({\textbf{a}}^T {\textbf{b}})^2
\end{aligned}
\]
可以看出转换后向量的内积等于原向量内积的平方,即 \(\phi (\textbf{a})^T \phi(\textbf{b}) = (\textbf{a}^T \textbf{b})^2\) 。
函数 \(\kappa(\textbf{a}, \textbf{b}) = (\textbf{a}^T\textbf{b})^2\) 被成为二次多项核函数,于是如果想计算高维特征空间的内积 \(\phi(\textbf{a})^T \phi(\textbf{b})\),我们只需计算核函数,即原向量内积的平方 \((\textbf{a}^T\textbf{b})^2\) 就可以了。这样做的好处有:
将样本点由原始空间映射到高维空间后,有大概率使原来线性不可分的问题变为线性可分。
核函数的计算是在低维特征空间计算的,它避免了在高维特征空间下计算内积的超高计算量。
下图也能看出在原始空间和高维空间下计算量的巨大差异:
接下来对问题作正式的定义: 数据在原始特征空间 \(\mathbb{R}^d\) 不是线性可分的,则希望通过一个映射 \(\large{\Phi}: \;\mathbb{R}^d \longrightarrow \mathbb{R}^\tilde{d}\) ,使得数据在新的特征空间 \(\mathbb{R}^\tilde{d}\) 中线性可分,则软间隔 svm 基本型变为:
\[
\begin{aligned}
\min\limits_{\boldsymbol{w}, b,\boldsymbol{\xi}} & \;\; \frac12 ||\boldsymbol{w}||^2 + C \,\sum\limits_{i=1}^m \xi_i \\[1ex]
{\text { s.t. }} & \;\; y_{i}\left(\boldsymbol{w}^{\top} \phi(\boldsymbol{x}_{i})+b\right) \geq 1 - \xi_i, \quad i=1,2, \ldots, m \\[1ex]
& \;\; \xi_i \geq 0, \quad i=1,2, \ldots m
\end{aligned}
\]
找到一个核函数 \(\mathcal{K} (\boldsymbol{x}_i, \boldsymbol{x}_j) = \phi(\boldsymbol{x}_i)^{\top} \phi(\boldsymbol{x}_j)\) ,则相应的对偶型转化为核函数型:
\[
\begin{aligned}
\max_\alpha &\;\; \sum\limits_{i=1}^m \alpha_i - \frac12 \sum\limits_{i=1}^m\sum\limits_{i=1}^m \alpha_i\alpha_jy_iy_j \phi(\boldsymbol{x}_i)^{\top}\phi(\boldsymbol{x}_j) \\[1ex]
\text{s.t.} & \;\; \sum\limits_{i=1}^m \alpha_iy_i = 0 \\[1ex]
& \;\; 0 \leqslant \alpha_i \leqslant C, \quad i = 1,2,\ldots m
\end{aligned} \quad \Large{\implies} \normalsize \quad
\begin{aligned}
\max_\alpha &\;\; \sum\limits_{i=1}^m \alpha_i - \frac12 \sum\limits_{i=1}^m\sum\limits_{i=1}^m \alpha_i\alpha_jy_iy_j \kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) \\[1ex]
\text{s.t.} & \;\; \sum\limits_{i=1}^m \alpha_iy_i = 0 \\[1ex]
& \;\; 0 \leqslant \alpha_i \leqslant C, \quad i = 1,2,\ldots m
\end{aligned}
\]
这样使得计算复杂度由 \(\mathcal{O}(\tilde{d})\) 降为 \(\mathcal{O} (d)\) 。求解后的分离超平面为:
\[
\begin{aligned}
f(\boldsymbol{x}) & = \boldsymbol{w}^{\top} \phi(\boldsymbol{x}) + b \\[1ex]
& = \sum\limits_{i \in SV} \alpha_i y_i \phi(\boldsymbol{x}_i)\phi(\boldsymbol{x}) + b \\[1ex]
& = \sum\limits_{i \in SV} \alpha_i y_i \kappa(\boldsymbol{x}_i, \boldsymbol{x}) + b
\end{aligned}
\]
其中 \(SV\) 代表所有支持向量的集合。这样我们就能以较小的计算量解决非线性分类问题,甚至都不需要知道低维空间的数据是怎样映射到高维空间的,只需要在原来的低维空间计算核函数就行了。
常见核函数比较:
名称 | 形式 | 优点 | 缺点 |
---|---|---|---|
线性核 | \(\kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) = \boldsymbol{x}_i^{\top}\boldsymbol{x}_j\) | 速度快,可解释性强。 | 无法解决非线性可分问题。 |
多项式核 | \(\kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) = (\lambda \, \boldsymbol{x}_i^{\top}\boldsymbol{x}_j + \eta)^d\) | 比线性核更一般,\(d\) 直接描述了被映射空间的复杂度。 | 参数多 (有 \(\lambda, \eta, d\) 要选),且当 \(d\) 很大时会导致计算不稳定。 |
RBF 核 | \(\kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) = \text{exp} \left(- \frac{||\boldsymbol{x}_i- \boldsymbol{x}_j||^2}{2 \sigma^2} \right)\) | 只有一个参数,无计算不稳定问题,拟合能力强。 | 可解释性差,计算慢,易过拟合。 |
由于 RBF 核是目前最主流的核函数,所以在这里以其举例介绍:
RBF 核函数全称径向基函数 (Radial Basis Function),其表达式 \(\kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) = \text{exp} \left(- \frac{||\boldsymbol{x}_i- \boldsymbol{x}_j||^2}{2 \sigma^2} \right)\) 亦可写为 \(\kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) =\text{exp} (- \gamma||\boldsymbol{x}_i- \boldsymbol{x}_j||^2)\) ,范围为 \((0, 1]\) ,其中 \(\gamma = \frac{1}{2\sigma^2}\) 。
RBF 核可理解为两个样本点的相似程度,若两点 \((\boldsymbol{x}_i, \boldsymbol{x}_j)\) 的相似程度很大,则距离 \(||\boldsymbol{x}_i - \boldsymbol{x}_j||^2\) 越小,使得 \(\text{exp} (- \gamma||\boldsymbol{x}_i- \boldsymbol{x}_j||^2)\) 越大,这意味着高斯核具有“局部(local)”特征,只有相对邻近的样本点会对测试点的分类产生较大作用。 \(\gamma > 0\),即为 scikit-learn 中的 svm 超参数 \(\gamma\),\(\gamma\) 越大,意味着两个点只有相当接近时才会被判为相似,这样决策边界会变得较为扭曲,容易过拟合,因为只取决于较少的几个样本点。相反,\(\gamma\) 越小,大量的点被判为近似,在模型中起了作用,因而导致模型变得简单,容易欠拟合。
RBF 核还有个吸引人的特性,那就是可以从原始空间映射到无限维特征空间,下面举例说明式如何做到的: 设 \(\sigma = \sqrt{\frac12}\) ,则 RBF 核的转换如下 (两种颜色分别表示 \(\boldsymbol{x}_i\) 和 \(\boldsymbol{x}_j\) 对应的部分):
\[
\begin{align*}
\kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) & = \text{exp}(-||\color{blue}{\boldsymbol{x}_i} - \color{fuchsia}{\boldsymbol{x}_j} ||^2) \tag{2.1} \\
& = \color{blue}{\text{exp}(-||\boldsymbol{x}_i||^2)} \,\color{fuchsia}{\text{exp}(-||\boldsymbol{x}_j||^2)} \text{exp} (2\color{blue}{||\boldsymbol{x}_i||} \, \color{fuchsia}{||\boldsymbol{x}_j||}) \tag{2.2} \\
& = \color{blue}{\text{exp}(-||\boldsymbol{x}_i||^2)} \,\color{fuchsia}{\text{exp}(-||\boldsymbol{x}_j||^2)} \text{exp} \left(\sum\limits_{n=0}^\infty \frac{(2\color{blue}{||\boldsymbol{x}_i||} \, \color{fuchsia}{||\boldsymbol{x}_j||})^n}{n\, !}\right) \tag{2.3} \\
& = \sum\limits_{n=0}^\infty\left(\color{blue}{\text{exp}(-||\boldsymbol{x}_i||^2}) \color{fuchsia}{\text{exp} (-||\boldsymbol{x}_j||^2})\color{blue}{\sqrt{\frac{2^n}{n\,!}}}\color{fuchsia}{\sqrt{\frac{2^n}{n\,!}}} \color{blue}{||\boldsymbol{x}_i||^n} \color{fuchsia}{||\boldsymbol{x}_j||^n}\right) \tag{2.4} \\
& = \color{blue}{\phi(\boldsymbol{x}_i)}^{\top}\color{fuchsia}{\phi(\boldsymbol{x}_j)}
\end{align*}
\]
因而映射的无限维空间为 \(\phi(\boldsymbol{x}) = \text{exp}(-||\boldsymbol{x}||^2) \begin{bmatrix} 1 \\ \sqrt{\frac{2}{1!}}x \\ \sqrt{\frac{2^2}{2!}}x^2 \\ \vdots \\ \sqrt{\frac{x^\infty}{\infty!}}x^\infty \end{bmatrix}\)
上面的 \((2.2)\) 式到 \((2.3)\) 式使用了 \(e^x\) 的泰勒展开,泰勒公式的简单解释就是用多项式函数去逼近原函数,因为用多项式函数往往求解更加容易,而多项式中各项的系数则为原函数在某一点的n阶导数值除以n阶乘。
已知函数 \(f(x)\) 在 \(x=x_0\) 处 \(n\) 阶可导,那么:
\[
\begin{aligned}
f(x) &= f(x_0) + f'(x_0)(x-x_0) + \frac{f''(x_0)}{2!}(x-x_0)^2 + \cdots + \frac{f^{(n)}(x_0)}{n!}(x-x_0)^n \\
& = \sum\limits_{n=0}^{\infty}\frac{f^{(n)}x_0}{n!}(x - x_0)^n
\end{aligned}
\]
例如,\(x_0 = 0, \;\; f(x) = e^x\)时,\(e^x = \sum\limits_{n=0}^{\infty}\frac{x^n}{n!} = 1+x+\frac{x^2}{2!} + \frac{x^3}{3!} + \cdots\) , 明白了这个后相信不难理解上面 RBF 核的推导。
/
支持向量机 (二): 软间隔 svm 与 核函数的更多相关文章
- 线性可分支持向量机与软间隔最大化--SVM(2)
线性可分支持向量机与软间隔最大化--SVM 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 我们说可以通过间隔最 ...
- 支持向量机(SVM)的推导(线性SVM、软间隔SVM、Kernel Trick)
线性可分支持向量机 给定线性可分的训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习到的分离超平面为 \[w^{\ast }x+b^{\ast }=0\] 以及相应的决策函数 \[f\le ...
- <老古董>线性支持向量机中的硬间隔(hard margin)和软间隔(soft margin)是什么
_________________________________________________________________________________________________ Th ...
- SVM中的软间隔最大化与硬间隔最大化
参考文献:https://blog.csdn.net/Dominic_S/article/details/83002153 1.硬间隔最大化 对于以上的KKT条件可以看出,对于任意的训练样本总有ai= ...
- 支持向量机(SVM)必备概念(凸集和凸函数,凸优化问题,软间隔,核函数,拉格朗日乘子法,对偶问题,slater条件、KKT条件)
SVM目前被认为是最好的现成的分类器,SVM整个原理的推导过程也很是复杂啊,其中涉及到很多概念,如:凸集和凸函数,凸优化问题,软间隔,核函数,拉格朗日乘子法,对偶问题,slater条件.KKT条件还有 ...
- SVM支持向量机——核函数、软间隔
支持向量机的目的是寻找一个能讲两类样本正确分类的超平面,很多时候这些样本并不是线性分布的. 由此,可以将原始特征空间映射到更高维的特征空间,使其线性可分.而且,如果原始空间是有限维,即属性数量有限, ...
- SVM核函数与软间隔
核函数 在上文中我们已经了解到使用SVM处理线性可分的数据,而对于非线性数据需要引入核函数的概念它通过将数据映射到高维空间来实现线性可分.在线性不可分的情况下,支持向量机通过某种事先选择的非线性映射( ...
- 5. 支持向量机(SVM)软间隔
1. 感知机原理(Perceptron) 2. 感知机(Perceptron)基本形式和对偶形式实现 3. 支持向量机(SVM)拉格朗日对偶性(KKT) 4. 支持向量机(SVM)原理 5. 支持向量 ...
- 6. 支持向量机(SVM)核函数
1. 感知机原理(Perceptron) 2. 感知机(Perceptron)基本形式和对偶形式实现 3. 支持向量机(SVM)拉格朗日对偶性(KKT) 4. 支持向量机(SVM)原理 5. 支持向量 ...
随机推荐
- Win7的diskpart硬盘分区
Windows7 给硬盘分区有两个特点: 1.默认所有是主分区. 2.会有一个 100MB 大小的隐藏分区,为"系统预留". 假设喜欢折腾计算机,这两个特点会造成非常多麻烦.能不能 ...
- 显示dll里的QWidget
1 新建库->C++库 2 命名(此处为mydll)并选择共享库--下一步--下一步 3 选择所需要的模块(有使用到的都选上)此处勾选前三项QtCore+QtGui+QtWidgets 4 完成 ...
- WPF中取得系统字体列表
原文:WPF中取得系统字体列表 在GDI+中,我们可以通过如下方式取得系统所有字体: foreach(FontFamily f in FontFamily.Families){ // 处理代码} ...
- Efficient store queue architecture
One embodiment of the present invention provides a store queue that applies the stores to a memory s ...
- JDBC数据源DBCP源代码情景分析
在之前的一篇博文从JDBC到commons-dbutils 中,我曾经写到,对于获取数据库连接,有一个解决方案,那就是数据源.业界用到的比较普遍的开源数据源解决方案有很多,DBCP是其中一种,今天,我 ...
- Effective JavaScript Item 38 调用父类的构造函数在子类的构造函数
作为这一系列Effective JavaScript的读书笔记. 在一个游戏或者图形模拟的应用中.都会有场景(Scene)这一概念.在一个场景中会包括一个对象集合,这些对象被称为角色(Actor). ...
- the solution about "messy code" in elicpse
I use the Elicpse IDE to develope the ansdroid app.Sometime encounter the messy code in the Elicpse ...
- TemplatePart用法说明
原文:TemplatePart用法说明 TemplatePart(Name="PART_Decrease", Type=typeof(RepeatButton)) 一直没明白这是干 ...
- 【 D3.js 入门系列 --- 6 】 如何使移动图表
我的个人博客是: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢. [5.1]节中制作了一个比較完好的图表.但它是静态的.想做出它的动 ...
- WPF 悬浮键盘
原文:WPF 悬浮键盘 public class TouchScreenKeyboard : Window { #region Property & Variable & Constr ...