zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

机器学习:在SVM中使用核函数来构造复杂的非线性决策边界

机器学习 函数 复杂 构造 SVM 边界 决策
2023-09-27 14:28:32 时间

用核函数衡量相似度

起初,在逻辑回归中如果我们遇到像下图这样看起来较复杂的非线性边界:
在这里插入图片描述
显然,只用线性的 θ 0 + θ 1 x 1 + θ 2 x 2 \theta_0+\theta_1x_1+\theta_2x_2 θ0+θ1x1+θ2x2无法划分这两个类别的样本,一种做法是向表达式中添加一些更高次的项,比如 x 1 2 , x 1 x 2 , x 1 6 x 2 7 x_1^2,x_1x_2,x_1^6x_2^7 x12,x1x2,x16x27等等,再此基础之上进行逻辑回归。

但是,这样的高次式有无限多可能,我们没法直观地判断出到底是 x 1 2 x_1^2 x12更好还是 x 1 x 2 x_1x_2 x1x2更好,在特征值数目更多的情况下这样的情况会更加严重。我们需要一个更有效的构造特征值的方式。

最终,相似度脱颖而出,成为我们构造特征值的上好选择。相似度描述的是两个向量之间的接近程度,有许多种函数都可以实现这个功能。在这里,我们选用的是高斯函数,定义两个向量 x ⃗ \vec{x} x l ⃗ \vec{l} l 之间的相似度为 f = similarity ( x ⃗ , l ⃗ ) = exp ⁡ ( − ∣ ∣ x ⃗ − l ⃗ ∣ ∣ 2 2 σ 2 ) f=\text{similarity}(\vec{x},\vec{l})=\exp(-\frac{||\vec{x}-\vec{l}||^2}{2\sigma^2}) f=similarity(x ,l )=exp(2σ2x l 2)
这样的函数,我们就称为核函数,核函数的函数值随着周围点距离核(也就是 l ⃗ \vec{l} l )的距离和参数 σ \sigma σ而改变。距离核越远,函数值越小,而 σ \sigma σ控制核函数的变化速率, σ \sigma σ越大,核函数的变化越平缓,反之越陡峭。
在这里插入图片描述

利用相似度构建回归

我们可以看到,通过核函数,我们就可以构造出一个圆形且从圆心向无穷远处递减的区域。如果我们将多个核函数组合在一起,就可以构造出一个复杂的非线性决策边界。那么,如何选取核函数的核呢?

一个简单的做法就是,把所有样本点都作为核,一个样本的特征值就是它与所有样本点的相似度。具体来讲,我们把一个样本向量 x i ⃗ \vec{x_i} xi 的特征值向量 f i ⃗ \vec{f_i} fi 定义为
f i ⃗ = [ similarity ( x i ⃗ , x 1 ⃗ ) similarity ( x i ⃗ , x 2 ⃗ ) ⋮ similarity ( x i ⃗ , x m ⃗ ) ] \vec{f_i}= \left[\begin{matrix} \text{similarity}(\vec{x_i},\vec{x_1})\\ \text{similarity}(\vec{x_i},\vec{x_2})\\ \vdots\\ \text{similarity}(\vec{x_i},\vec{x_m})\\ \end{matrix}\right] fi =similarity(xi ,x1 )similarity(xi ,x2 )similarity(xi ,xm )
而我们的假设函数 h θ h_\theta hθ则变为 θ T f \theta^Tf θTf,即
θ 0 f 0 + θ 1 f 1 + ⋯ + θ m f m \theta_0f_0+\theta_1f_1+\cdots+\theta_mf_m θ0f0+θ1f1++θmfm
所以我们需要最小化的代价函数 J ( θ ) J(\theta) J(θ)变为
C ∑ i = 1 m [ y ( i ) cost 1 ( θ T f ( i ) ) + ( 1 − y ( i ) ) cost 0 ( θ T f ( i ) ) ] + 1 2 ∑ j = 1 m θ j 2 C\sum_{i=1}^m[y^{(i)}\text{cost}_1(\theta^Tf^{(i)})+(1-y^{(i)})\text{cost}_0(\theta^Tf^{(i)})]+\frac{1}{2}\sum_{j=1}^m\theta_j^2 Ci=1m[y(i)cost1(θTf(i))+(1y(i))cost0(θTf(i))]+21j=1mθj2
看起来,似乎逻辑回归一样可以运用核函数。但根据吴恩达所说,核函数搭配逻辑回归的运算速度很慢,现有的许多优化都是针对SVM+核函数的,这两者搭配在一起才能事半功倍。

关于参数

和别的回归类似,我们可以通过控制参数来调整模型的偏差与方差, C C C的作用在上一篇博客已经讲过了,而核函数参数 σ \sigma σ的作用可以很容易的观察出来:当 σ \sigma σ较小时,核函数非常陡峭,只允许很小的偏差,所以是个低偏差高方差模型,反之是个高偏差低方差模型。
在这里插入图片描述