机器学习----支持向量机(核函数)
·
#线性不可分
我们的SVM是找到一条分割直线,但是如果线性不可分怎么办?如下图:
现在改写成:
接下来我们就要说核函数了(kernel)。注意到先变换再内积的复杂(二维就是2×2,三维就是3×3),我们就像有没有函数κ<script type="math/tex" id="MathJax-Element-4061">\kappa</script>它满足这样优良的性质:
即它能把问题变成先低维预算,再直接映射的效果,我们把κ<script type="math/tex" id="MathJax-Element-4063">\kappa</script>就叫做核函数。
常见的核函数有:

可以看出,是有一个明显的分割线的,但是不是直线,这种情况下我们怎么用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αi−12∑i,j=1pyiyjαiαjxTi⋅xj
<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αi−12∑i,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)=κ(xi,xj)
<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)=xTi⋅xj<script type="math/tex" id="MathJax-Element-4064">\kappa(x_i,x_j)=x_i^{\mathop{T}}\cdot x_j</script> | |
| 多项式核 | κ(xi,xj)=(xTi⋅xj)d<script type="math/tex" id="MathJax-Element-4065">\kappa(x_i,x_j)=(x_i^{\mathop{T}}\cdot x_j)^d</script> | d≥1为多项式的次数<script type="math/tex" id="MathJax-Element-4066">d\geq1为多项式的次数</script> |
| 高斯核 | κ(xi,xj)=exp(−||xi−xj||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(−||xi−xj||σ)<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(βxTi⋅xj+θ)<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> |
下图是高斯核的例子:
更多推荐
所有评论(0)