支持向量机(Support Vector Machine,SVM)简单介绍

本文介绍了SVM(支持向量机)的优化目标,从逻辑回归的角度过渡,指出SVM通过最大化分类间距实现高效分类。SVM的代价函数不同于逻辑回归,其要求分类超平面具有更大的间距,从而提高模型泛化能力。大间距分类器的特点在于即使存在噪声或异常点,仍能保持良好的分类效果。此外,文章还探讨了核函数的概念,通过核函数实现非线性决策边界的构造,以及如何选择和训练参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. SVM 的优化目标

前面讲了逻辑回归,SVM 和逻辑回归是很像的,我们试着从逻辑回归过渡到 SVM。

在这里插入图片描述

(图1)

如 (图1) 所示,在逻辑回归中,输入样本特征为 x \boldsymbol{x} x,模型参数为 θ \bm{\theta} θ

当样本标签为 y = 1 y=1 y=1 时,我们希望假设函数输出 h θ ( x ) ≈ 1 h_{\bm{\theta}}(\boldsymbol{x})\approx1 hθ(x)1,也就是说希望 θ T x \bm{\theta}^T\boldsymbol{x} θTx 远大于 0 0 0。( θ T x ≫ 0 \bm{\theta}^T\boldsymbol{x}\gg 0 θTx0
当样本标签为 y = 0 y=0 y=0 时,我们希望假设函数输出 h θ ( x ) ≈ 0 h_{\bm{\theta}}(\boldsymbol{x})\approx0 hθ(x)0,也就是说希望 θ T x \bm{\theta}^T\boldsymbol{x} θTx 远小于 0 0 0。( θ T x ≪ 0 \bm{\theta}^T\boldsymbol{x}\ll 0 θTx0



进一步观察逻辑回归的代价函数,对于单个样本: Cost ( h θ ( x ) , y ) = − (    y ⋅ log ⁡ ( h θ ( x ) ) + ( 1 − y ) ⋅ log ⁡ ( 1 − h θ ( x ) )    ) \text{Cost}(h_{\bm{\theta}}\left(\boldsymbol{x}\right),y ) = - \left( \; \textcolor{red}{ y \cdot \log(h_{\bm{\theta}}(\boldsymbol{x})) } + \color{blue}{(1-y) \cdot \log(1-h_{\bm{\theta}}(\boldsymbol{x})) } \;\right) Cost(hθ(x),y)=(ylog(hθ(x))+(1y)log(1hθ(x)))代入 h θ ( x ) h_{\bm{\theta}}(\boldsymbol{x}) hθ(x) Cost ( h θ ( x ) , y ) = − y log ⁡ ( 1 1 + e − θ T x ) − ( 1 − y ) ⋅ log ⁡ ( 1 − 1 1 + e − θ T x ) (1) \text{Cost}(h_{\bm{\theta}}\left(\boldsymbol{x}\right),y ) = \textcolor{red}{ -y \log (\dfrac{1}{1+e^{-\bm{\theta}^T\boldsymbol{x}}} ) } - \color{blue}{(1-y) \cdot \log(1- \dfrac{1}{1+e^{-\bm{\theta}^T\boldsymbol{x}}}) } \tag{1} Cost(hθ(x),y)=ylog(1+eθTx1)(1y)log(11+eθTx1)(1)


y = 1 y=1 y=1 时,式子(1)蓝色部分没有了。

此时代价函数 Cost = − log ⁡ ( 1 1 + e − θ T x ) \text{Cost}=\textcolor{red}{ -\log (\dfrac{1}{1+e^{-\bm{\theta}^T\boldsymbol{x}}} ) } Cost=log(1+eθTx1),函数曲线如下:

在这里插入图片描述
这里用 z z z 代替 θ T x \bm{\theta}^T\boldsymbol{x} θTx。为了让代价函数更小, z z z 会尽量往右边靠。

一般在 SVM 中,我们会换一种代价函数,如下图右边的曲线:

在这里插入图片描述

它和原来的形状很像,由两条直线线段组成。它的计算更方便,更适合 SVM 的优化。


y = 0 y=0 y=0 时,式子(1)红色部分没有了。

此时代价函数 Cost = − log ⁡ ( 1 − 1 1 + e − θ T x ) \text{Cost}=\color{blue}{- \log(1- \dfrac{1}{1+e^{-\bm{\theta}^T\boldsymbol{x}}}) } Cost=log(11+eθTx1),函数曲线如下:

在这里插入图片描述

z z z 会尽量往左边靠。同样地,对于 SVM,我们给它换一个代价函数:

在这里插入图片描述


现在我们再来写出完整的代价函数。

逻辑回归的代价函数:
min ⁡ θ 1 m [ ∑ i = 1 m y ( i ) ( − log ⁡ ( h θ ( x ( i ) ) ) ) + ( 1 − y ( i ) ) ( − log ⁡ ( 1 − h θ ( x ( i ) ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 \min_{\theta} \frac{1}{m} \left[ \sum^{m}_{i=1} y^{(i)} \textcolor{red}{ \left( -\log\left(h_{\bm{\theta}}(\boldsymbol{x}^{(i)}) \right) \right) } + (1-y^{(i)}) \color{blue}{ \left( - \log \left(1-h_{\bm{\theta}}(\boldsymbol{x}^{(i)}) \right) \right) } \right] + \frac{\lambda}{2m} \sum^{n}_{j=1} \theta_j^2 θminm1[i=1my(i)(log(hθ(x(i))))+(1y(i))(log(1hθ(x(i))))]+2mλj=1nθj2

然后把红色蓝色的部分换成前面讲的:
min ⁡ θ 1 m [ ∑ i = 1 m y ( i ) cost 1 ( θ T x ( i ) ) + ( 1 − y ( i ) ) cost 0 ( θ T x ( i ) ) ] + λ 2 m ∑ j = 1 n θ j 2 \min_{\theta} \frac{1}{m} \left[ \sum^{m}_{i=1} y^{(i)} \textcolor{red}{ \text{cost}_1(\bm{\theta}^T\boldsymbol{x}^{(i)}) } + (1-y^{(i)}) \textcolor{blue}{\text{cost}_0(\bm{\theta}^T\boldsymbol{x}^{(i)}) } \right] + \frac{\lambda}{2m} \sum^{n}_{j=1} \theta_j^2 θminm1[i=1my(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+2mλj=1nθj2

然后,常数项并不影响代价函数的优化,所以可以去掉 1 m \dfrac{1}{m} m1。同时把正则化权重 λ \lambda λ 换到左边的式子,用 C C C 表示:
min ⁡ θ C [ ∑ i = 1 m y ( i ) cost 1 ( θ T x ( i ) ) + ( 1 − y ( i ) ) cost 0 ( θ T x ( i ) ) ] + ∑ j = 1 n θ j 2 (2) \min_{\theta} C\left[ \sum^{m}_{i=1} y^{(i)} \text{cost}_1(\bm{\theta}^T\boldsymbol{x}^{(i)}) + (1-y^{(i)}) \text{cost}_0(\bm{\theta}^T\boldsymbol{x}^{(i)}) \right] + \sum^{n}_{j=1} \theta_j^2 \tag{2} θminC[i=1my(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+j=1nθj2(2)

你也可以当做是 C = 1 λ C=\dfrac{1}{\lambda} C=λ1 C C C 同样是正则化权重,决定我们更关心左边式子的优化还是右边式子的优化。

所以 式子(2) 就是支持向量机(SVM)的整个优化目标函数。 当你最小化这个函数,就得到了 SVM 的参数。

得到参数 θ \bm{\theta} θ 后,当 θ T x ⩾ 0 \bm{\theta}^T\boldsymbol{x} \geqslant 0 θTx0 时,SVM 的假设函数 h θ ( x ) h_{\bm{\theta}}(\boldsymbol{x}) hθ(x) 直接输出 1 1 1;否则直接输出 0 0 0

在这里插入图片描述




2. 大间距的理解

人们有时将支持向量机看作是大间距分类器(Large Margin Classifier),我们来看看这是怎么回事。
在这里插入图片描述
逻辑回归中,对于 y = 1 y=1 y=1 y = 0 y=0 y=0 的输出,只需要 θ T x ⩾ 0 \bm{\theta}^T\boldsymbol{x} \geqslant 0 θTx0 θ T x ⩽ 0 \bm{\theta}^T\boldsymbol{x} \leqslant 0 θTx0
{ y = 1 θ T x ⩾ 0 y = 0 θ T x ⩽ 0 \left\{ \begin{array}{cc} y=1 \qquad \bm{\theta}^T\boldsymbol{x} \geqslant 0 \\ y=0 \qquad \bm{\theta}^T\boldsymbol{x} \leqslant 0 \end{array} \right. {y=1θTx0y=0θTx0

而在 SVM 中,我们需要 θ T x ⩾ 1 \color{red}\bm{\theta}^T\boldsymbol{x} \geqslant 1 θTx1 θ T x ⩽ − 1 \color{red}\bm{\theta}^T\boldsymbol{x} \leqslant -1 θTx1
{ y = 1 θ T x ⩾ 1       y = 0 θ T x ⩽ − 1 (3) \left\{ \begin{array}{cc} y=1 \qquad \bm{\theta}^T\boldsymbol{x} \geqslant 1 \\ \; \; \,y=0 \qquad \bm{\theta}^T\boldsymbol{x} \leqslant -1 \end{array} \right. \tag{3} {y=1θTx1y=0θTx1(3)

从这里可以看出,SVM 的要求会更严格一点。



C C C 设得很大时,SVM 会得到一个比较大的分类间距:
在这里插入图片描述

普通的分类器只是简单地把两个类分开,勉强分开就行了。
而 SVM 会努力用一个最大的间距来分离样本,所以有时 SVM 被大间距分类器

如果这个时候出现了一个异常样本,继续用大的 C C C 值,就会像下面这样:
在这里插入图片描述
异常样本的出现,使它变得和普通分类器一样,不再具有大间隔。
虽然也能分开样本,但是没有完全分开,体现不出 SVM 的优势。

这个时候把 C C C 调小一点就好了。
C C C 不是非常非常大的时候,它可以忽略掉一些异常点的影响,得到更好的决策界。

回顾 C = 1 λ C=\dfrac{1}{\lambda} C=λ1,可以得知:
C C C 较大时,相当于 λ \lambda λ 较小,可能会导致过拟合,高方差。
C C C 较小时,相当于 λ \lambda λ 较大,可能会导致低拟合,高偏差。




3. 大间距分类器的数学理解

先介绍一下向量内积:

在这里插入图片描述

设有两个向量 u \boldsymbol{u} u v \boldsymbol{v} v
u = [ u 1 u 2 ] v = [ v 1 v 2 ] \boldsymbol{u} = \begin{bmatrix} u_1 \\ u_2 \end{bmatrix} \quad \boldsymbol{v} = \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} \quad u=[u1u2]v=[v1v2] 则向量的内积为 u ⋅ v = u T v = [ u 1    u 2 ] [ v 1 v 2 ] = u 1 v 1 + u 2 v 2 \boldsymbol{u} \cdot \boldsymbol{v} = \boldsymbol{u}^T\boldsymbol{v} = \begin{bmatrix} u_1 \; u_2 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = u_1 v_1 + u_2 v_2 uv=uTv=[u1u2][v1v2]=u1v1+u2v2

也可以表示为 u ⋅ v = ∥ u ∥ ∥ v ∥ cos ⁡ θ \boldsymbol{u} \cdot \boldsymbol{v} = \|\boldsymbol{u}\| \|\boldsymbol{v}\| \cos\theta uv=uvcosθ

其中 ∥ v ∥ \|\boldsymbol{v}\| v 表示向量 v \boldsymbol{v} v 的范数,或者说向量的模长: ∥ v ∥ = v 1 2 + v 2 2 \|\boldsymbol{v}\| = \sqrt{v_1^2 + v_2^2} v=v12+v22

从几何上看, p p p v \boldsymbol{v} v u \boldsymbol{u} u 上的投影,是一个长度: p = ∥ v ∥ cos ⁡ θ p =\|\boldsymbol{v}\| \cos\theta p=vcosθ

所以又可以写成: u T v = p ⋅ ∥ u ∥ \boldsymbol{u}^T\boldsymbol{v} = p \cdot \|\boldsymbol{u}\| uTv=pu

p p p 可能是负数,例如这样的情况:

在这里插入图片描述

夹角 θ \theta θ 大于 90 90 90 度, cos ⁡ θ \cos\theta cosθ 为负数,因此 p p p 为负数。






现在用一个特定的例子来分析大间距产生的原理。

假设我们的模型参数是 2 个( θ 1 , θ 2 \theta_1,\theta_2 θ1θ2),输入也是 2 个( x 1 , x 2 x_1,x_2 x1x2), θ T x = θ 1 x 1 + θ 2 x 2 \bm{\theta}^T\boldsymbol{x} = \theta_1 x_1 + \theta_2 x_2 θTx=θ1x1+θ2x2

把参数 θ \bm{\theta} θ 和输入 x \boldsymbol{x} x 都看做向量,根据上面介绍的内积知识,有:
θ T x = p ⋅ ∥ θ ∥ \bm{\theta}^T\boldsymbol{x} = p \cdot \| \bm{\theta} \| θTx=pθ 其中 p p p 是向量 x \boldsymbol{x} x 在向量 θ \bm{\theta} θ 上的投影长度:
在这里插入图片描述
根据某些数学原理,向量 θ \bm{\theta} θ 一定是垂直于决策边界的。



再看回我们的代价函数:
min ⁡ θ C [ ∑ i = 1 m y i cost 1 ( θ T x i ) + ( 1 − y i ) cost 0 ( θ T x i ) ] + ∑ j = 1 n θ j 2 (4) \min_{\theta} C\left[ \sum^{m}_{i=1} y^i \text{cost}_1(\bm{\theta}^T\boldsymbol{x}^i) + (1-y^i) \text{cost}_0(\bm{\theta}^T\boldsymbol{x}^i) \right] + \sum^{n}_{j=1} \theta_j^2 \tag{4} θminC[i=1myicost1(θTxi)+(1yi)cost0(θTxi)]+j=1nθj2(4)

由于 θ \bm{\theta} θ 是一个向量,当忽略 θ 0 \theta_0 θ0 时,式子(4)右边的 ∑ j = 1 n θ j 2 \sum\limits^{n}_{j=1} \theta_j^2 j=1nθj2 可以看做是 θ \bm{\theta} θ 的模长: ∥ θ ∥ 2 \| \bm{\theta} \|^2 θ2

在最小化代价函数时,当样本标签为 y = 1 y=1 y=1 时:

∙ \bullet 根据式子(3),我们希望 θ T x \bm{\theta}^T\boldsymbol{x} θTx 远大于 1 1 1,即 p ⋅ ∥ θ ∥ p \cdot \| \bm{\theta} \| pθ 尽量大。
∙ \bullet 根据式子(4),我们希望 ∑ j = 1 n θ j 2 \sum\limits^{n}_{j=1} \theta_j^2 j=1nθj2 尽量小,即 ∥ θ ∥ 2 \| \bm{\theta} \|^2 θ2 尽量小。

要满足上述约束,只能使 p p p 尽量大。所以最小化代价函数的过程会使 p p p 变大。

在这里插入图片描述
p p p x \boldsymbol{x} x θ \bm{\theta} θ 上投影的长度,样本 x \boldsymbol{x} x 已经确定,所以 θ \bm{\theta} θ 决定了 p p p 的大小。

上面的图展示了 2 种情况,形象地说, θ \bm{\theta} θ 指向样本聚集点时, p p p 最大,分类间距最大。

结合上述所讲,优化结束时使得 p p p 值较大,对应参数 θ \bm{\theta} θ,也得到最大决策边界。




4. 核函数 (kernels)

在这里插入图片描述

如上图所示,这种复杂的决策边界,没办法用线性模型来表示。

像之前用的 θ T x = θ 1 x 1 + θ 2 x 2 \bm{\theta}^T\boldsymbol{x} = \theta_1 x_1 + \theta_2 x_2 θTx=θ1x1+θ2x2 是无法做到的。

可能需要用到高级数的多项式模型,如: θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 x 2 + θ 4 x 1 2 + θ 5 x 2 2 + ⋯ \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \theta_3 x_1 x_2 + \theta_4 x_1^2 + \theta_5 x_2^2 + \cdots θ0+θ1x1+θ2x2+θ3x1x2+θ4x12+θ5x22+

x 1 x_1 x1 x 2 x_2 x2 可以有很多组合方式,每种组合方式表示一种特征。我们用 f f f 来表示特征:

例如 f 1 = x 1 , f 2 = x 2 , f 3 = x 1 x 2 , f 4 = x 1 2 , f 5 = x 2 2 f_1 = x_1,f_2=x_2,f_3=x_1 x_2,f_4 = x_1^2,f_5 = x_2^2 f1=x1f2=x2f3=x1x2f4=x12f5=x22

h θ ( x ) = θ 1 f 1 + θ 2 f 2 + ⋯ + θ n f n h_{\bm{\theta}}(\boldsymbol{x}) = \theta_1 f_1 + \theta_2 f_2 + \cdots + \theta_n f_n hθ(x)=θ1f1+θ2f2++θnfn


上面这样的特征组合形式太多了,有没有更好的办法来定义特征呢?我们可以用 核函数(kernels) 来计算。

举一个例子,现在有一组训练样本 x \boldsymbol{x} x,我们先选出一组 地标(landmarks) l ( 1 ) \boldsymbol{l}^{(1)} l(1) l ( 2 ) \boldsymbol{l}^{(2)} l(2) l ( 3 ) \boldsymbol{l}^{(3)} l(3)
根据 x \boldsymbol{x} x 与地标之间的近似程度来选取特征 f 1 f_1 f1 f 2 f_2 f2 f 3 f_3 f3
在这里插入图片描述
例如: f 1 = similarity ( x , l ( 1 ) ) = exp ⁡ ( − ∥ x − l ( 1 ) ∥ 2 2 σ 2 ) f_1 = \text{similarity}(\boldsymbol{x},\boldsymbol{l}^{(1)}) = \exp\left(-\dfrac{\|\boldsymbol{x}-\boldsymbol{l}^{(1)}\|^2}{2\sigma^2} \right) f1=similarity(xl(1))=exp(2σ2xl(1)2)

其中 ∥ x − l ( 1 ) ∥ 2 \|\boldsymbol{x}-\boldsymbol{l}^{(1)}\|^2 xl(1)2 表示向量 x \boldsymbol{x} x 与向量 l ( 1 ) \boldsymbol{l}^{(1)} l(1) 之间的欧氏距离。

同理 f 2 = similarity ( x , l ( 2 ) ) = exp ⁡ ( − ∥ x − l ( 2 ) ∥ 2 2 σ 2 ) f 3 = similarity ( x , l ( 3 ) ) = exp ⁡ ( − ∥ x − l ( 3 ) ∥ 2 2 σ 2 ) f_2 = \text{similarity}(\boldsymbol{x},\boldsymbol{l}^{(2)}) = \exp\left(-\dfrac{\|\boldsymbol{x}-\boldsymbol{l}^{(2)}\|^2}{2\sigma^2}\right) \\[1em] f_3 = \text{similarity}(\boldsymbol{x},\boldsymbol{l}^{(3)}) = \exp\left(-\dfrac{\|\boldsymbol{x}-\boldsymbol{l}^{(3)}\|^2}{2\sigma^2}\right) f2=similarity(xl(2))=exp(2σ2xl(2)2)f3=similarity(xl(3))=exp(2σ2xl(3)2)

这个 similarity \text{similarity} similarity 就叫做核函数(kernel function),而这里实际上就是个高斯核函数(Gaussian Kernel)
除了这个高斯核函数,还有其它的相似度度量函数,也就是别的核函数,之后再介绍。
为了简单起见,也把 similarity ( x , l ( 3 ) ) \text{similarity}(\boldsymbol{x},\boldsymbol{l}^{(3)}) similarity(xl(3)) 写成 k ( x , l ( 3 ) ) k(\boldsymbol{x},\boldsymbol{l}^{(3)}) k(xl(3))



下面来讲为什么核函数和地标有效。

把欧式距离展开: f 1 = similarity ( x , l ( 1 ) ) = exp ⁡ ( − ∥ x − l ( 1 ) ∥ 2 2 σ 2 ) = exp ⁡ ( − ∑ j = 1 n ( x j − l j ( 1 ) ) 2 2 σ 2 ) f_1 = \text{similarity}(\boldsymbol{x},\boldsymbol{l}^{(1)}) = \exp\left(-\dfrac{\|\boldsymbol{x}-\boldsymbol{l}^{(1)}\|^2}{2\sigma^2} \right) = \exp\left(-\dfrac{ \sum_{j=1}^{n} (x_j - l_j^{(1)})^2}{2\sigma^2}\right) f1=similarity(xl(1))=exp(2σ2xl(1)2)=exp(2σ2j=1n(xjlj(1))2)
假设有一个样本 x \boldsymbol{x} x 与地标 l ( 1 ) \boldsymbol{l}^{(1)} l(1) 很近, 那么欧式距离很小:
f 1 ≈ exp ⁡ ( − 0 2 σ 2 ) ≈ 1 f_1 \approx \exp\left(-\dfrac{0}{2\sigma^2} \right) \approx 1 f1exp(2σ20)1

如果样本 x \boldsymbol{x} x 与地标 l ( 1 ) \boldsymbol{l}^{(1)} l(1) 很远,那么欧式距离很大:
f 1 ≈ exp ⁡ ( − ∞ 2 σ 2 ) ≈ 0 f_1 \approx \exp\left(-\dfrac{\infty}{2\sigma^2} \right) \approx 0 f1exp(2σ2)0

其实在这个例子里 f 1 f_1 f1 就是一个二维的高斯函数(Gaussian Function)。

假设我们的地标 l ( 1 ) = ( 3 ,   5 ) \boldsymbol{l}^{(1)} = (3, \,5) l(1)=(3,5),则它的图像如下:

在这里插入图片描述

中心点 (那个山峰) 的 f 1 f_1 f1 值为 1 1 1 ,远离中心点时 f 1 f_1 f1 逐渐减小。

方差 σ 2 \sigma^2 σ2 决定了偏离中心点时函数值的下降速率。


现在我们选了 3 个标记点,由 3 个核函数决定预测结果。
假设我们已经训练得到参数: θ 0 = − 0.5 , θ 1 = 1 , θ 2 = 1 , θ 3 = 0 \theta_0=-0.5 ,\quad \theta_1=1, \quad \theta_2=1, \quad \theta_3=0 θ0=0.5θ1=1θ2=1θ3=0
下面这张图的红色圈圈就是决策边界。

在这里插入图片描述

图中 紫色 的点靠近 l ( 1 ) \boldsymbol{l}^{(1)} l(1),于是 f 1 ≈ 1 f_1 \approx 1 f11 f 2 f_2 f2 f 3 f_3 f3 接近 0 0 0
因此 h θ ( x ) = θ 0 + θ 1 f 1 + θ 2 f 2 + θ 3 f 3 = − 0.5 + 1 × 1 + 1 × 0 + 0 × 0 = 0.5 > 0 h_{\bm{\theta}}(\boldsymbol{x}) = \theta_0 + \theta_1 f_1 + \theta_2 f_2 + \theta_3 f_3 = -0.5 + 1\times1+1\times0 + 0\times0 = 0.5> 0 hθ(x)=θ0+θ1f1+θ2f2+θ3f3=0.5+1×1+1×0+0×0=0.5>0,预测 y = 1 y=1 y=1

同理 绿色 的点靠近 l ( 2 ) \boldsymbol{l}^{(2)} l(2),也预测 y = 1 y=1 y=1

浅蓝色 的点距离 3 个地标都远,因此预测 y = 0 y=0 y=0


通过定义 标记点核函数,我们就能训练出复杂的非线性边界。(接近标记点的数据预测 1 1 1,远离标记点的预测 0 0 0

以上就是关于核函数的部分概念,以及在支持向量机中的使用介绍。

剩下的问题是:如何选择标记点;是否还有其它的相似度方程。


标记点的选择

假设现在有 m m m 个样本: ( x ( 1 ) , y ( 1 ) ) (\boldsymbol{x}^{(1)},y^{(1)}) (x(1)y(1)) ( x ( 2 ) , y ( 2 ) ) (\boldsymbol{x}^{(2)},y^{(2)}) (x(2)y(2)) ⋯ \cdots ( x ( m ) , y ( m ) ) (\boldsymbol{x}^{(m)},y^{(m)}) (x(m)y(m))

那就直接在每个样本上建立标记点: l ( 1 ) = x ( 1 ) \boldsymbol{l}^{(1)} = \boldsymbol{x}^{(1)} l(1)=x(1) l ( 2 ) = x ( 2 ) \boldsymbol{l}^{(2)} = \boldsymbol{x}^{(2)} l(2)=x(2) ⋯ \cdots l ( m ) = x ( m ) \boldsymbol{l}^{(m)} = \boldsymbol{x}^{(m)} l(m)=x(m)。一共 m m m 个标记点。

对于输入样本 x \boldsymbol{x} x,我们算出它的特征向量 f \boldsymbol{f} f,即 x \boldsymbol{x} x 与每一个标记点之间的相似度:
f 1 = similarity ( x , l ( 1 ) ) f 2 = similarity ( x , l ( 2 ) ) ⋮ f m = similarity ( x , l ( m ) ) f_1 = \text{similarity}(\boldsymbol{x},\boldsymbol{l}^{(1)}) \\ f_2 = \text{similarity}(\boldsymbol{x},\boldsymbol{l}^{(2)}) \\ \vdots \\ f_m = \text{similarity}(\boldsymbol{x},\boldsymbol{l}^{(m)}) f1=similarity(xl(1))f2=similarity(xl(2))fm=similarity(xl(m))

f = [ f 1 f 2 ⋮ f m ] \boldsymbol{f} = \begin{bmatrix} f_1 \\ f_2 \\ \vdots \\ f_m \end{bmatrix} f=f1f2fm

θ T f ≥ 1 \bm{\theta}^T\boldsymbol{f} \geq 1 θTf1 时,预测 y = 1 y=1 y=1。 反之预测 y = 0 y=0 y=0


参数 θ \bm{\theta} θ 如何训练获得呢?修改之前的代价函数,把 θ T x \bm{\theta}^T\boldsymbol{x} θTx 换成 θ T f \bm{\theta}^T\boldsymbol{f} θTf 即可:
min ⁡ θ C [ ∑ i = 1 m y ( i ) cost 1 ( θ T f ( i ) ) + ( 1 − y ( i ) ) cost 0 ( θ T f ( i ) ) ] + ∑ j = 1 m θ j 2 \min_{\theta} C\left[ \sum^{m}_{i=1} y^{(i)} \text{cost}_1(\bm{\theta}^T\boldsymbol{f}^{(i)}) + (1-y^{(i)}) \text{cost}_0(\bm{\theta}^T\boldsymbol{f}^{(i)}) \right] + \sum^{m}_{j=1} \theta_j^2 θminC[i=1my(i)cost1(θTf(i))+(1y(i))cost0(θTf(i))]+j=1mθj2

这个代价函数使用了新的特征 f \boldsymbol{f} f,也就是我们的核函数,或者说是相似度函数。

最小化它,就能得到参数 θ \bm{\theta} θ


在实际操作过程不需要自己实现代价函数,也不需要手写优化算法,直接使用现有的软件包\工具即可。


使用高斯核函数时有两个参数 C C C σ \sigma σ

C C C 较大时,可能会导致过拟合,高方差;
C C C 较小时,可能会导致低拟合,高偏差;

σ \sigma σ 较大时,可能会导致低方差,高偏差;
σ \sigma σ 较小时,可能会导致低偏差,高方差。


在高斯核函数之外我们还有其他一些选择,如:

  • 多项式核函数(Polynomial Kernel)
  • 字符串核函数(String kernel)
  • 卡方核函数( chi-square kernel)
  • 直方图交集核函数(histogram intersection kernel)

等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值