#线性不可分 我们的SVM是找到一条分割直线,但是如果线性不可分怎么办?如下图:

可以看出,是有一个明显的分割线的,但是不是直线,这种情况下我们怎么用SVM呢?我们可以找到一种变化,让变换后的数据线性可分,用图形象的表示为:

图中的ϕ<script type="math/tex" id="MathJax-Element-3976">\phi</script>就是我们找到的线性变化。至此我们就能解决线性不可分问题。

核函数

我们接着说线性不可分问题。我们怎么找ϕ<script type="math/tex" id="MathJax-Element-4057">\phi</script>呢?有个想法是这样的:
比如原始数据满足的是二次函数规律那把原来的X,扩展成[X | X2]的形式,这样我们就又能进行线性回归了。同理,如果是三次,就扩展成[X | X2| X3],记作ϕ(x)<script type="math/tex" id="MathJax-Element-4058">\phi(x)</script>。
正常线性可分问题dual问题为:

maxαipαi12i,j=1pyiyjαiαjxTixj
<script type="math/tex; mode=display" id="MathJax-Element-4059">\mathop{max}_{\alpha} \sum_{i}^{p}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{p}y_iy_j\alpha_i\alpha_jx_i^{\mathop{T}}\cdot x_j</script>
现在改写成:
maxαipαi12i,j=1pyiyjαiαjϕ(xi)Tϕ(xj)
<script type="math/tex; mode=display" id="MathJax-Element-4060">\mathop{max}_{\alpha} \sum_{i}^{p}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{p}y_iy_j\alpha_i\alpha_j\phi(x_i)^{\mathop{T}}\cdot \phi(x_j)</script>
接下来我们就要说核函数了(kernel)。注意到先变换再内积的复杂(二维就是2×2,三维就是3×3),我们就像有没有函数κ<script type="math/tex" id="MathJax-Element-4061">\kappa</script>它满足这样优良的性质:
ϕ(xi)Tϕ(xj)=κ(xixj)
<script type="math/tex; mode=display" id="MathJax-Element-4062">\phi(x_i)^{\mathop{T}}\cdot \phi(x_j)=\kappa(x_i, x_j)</script>
即它能把问题变成先低维预算,再直接映射的效果,我们把κ<script type="math/tex" id="MathJax-Element-4063">\kappa</script>就叫做核函数。
常见的核函数有:
名称表达式参数
线性核κ(xi,xj)=xTixj<script type="math/tex" id="MathJax-Element-4064">\kappa(x_i,x_j)=x_i^{\mathop{T}}\cdot x_j</script>
多项式核κ(xi,xj)=(xTixj)d<script type="math/tex" id="MathJax-Element-4065">\kappa(x_i,x_j)=(x_i^{\mathop{T}}\cdot x_j)^d</script>d1<script type="math/tex" id="MathJax-Element-4066">d\geq1为多项式的次数</script>
高斯核κ(xi,xj)=exp(||xixj||22σ2)<script type="math/tex" id="MathJax-Element-4067">\kappa(x_i,x_j)=exp(-\frac{||x_i-x_j||^2}{2\sigma^2})</script>σ>0<script type="math/tex" id="MathJax-Element-4068">\sigma>0为高斯核的带宽</script>
拉普拉斯核κ(xi,xj)=exp(||xixj||σ)<script type="math/tex" id="MathJax-Element-4069">\kappa(x_i,x_j)=exp(-\frac{||x_i-x_j||}{\sigma})</script>σ>0<script type="math/tex" id="MathJax-Element-4070">\sigma>0</script>
Sigmoid核κ(xi,xj)=tank(βxTixj+θ)<script type="math/tex" id="MathJax-Element-4071">\kappa(x_i,x_j)=tank(\beta x_i^{\mathop{T}}\cdot x_j+\theta)</script>tanh为双曲正切函数,β>0,θ<0<script type="math/tex" id="MathJax-Element-4072">\beta>0,\theta<0</script>

下图是高斯核的例子:


Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐