SVM理解之核函数

核函数是什么

在使用SVM分类器处理非线性问题时,核函数是绕不过的坎,其实关于核函数,首先需要记住这两句话:

  1. 核函数可以使向量直接在原来的低维空间中进行内积计算,避免了直接在高维空间中的复杂计算。
  2. 计算两个向量在隐式映射过后的空间中的内积的函数叫做核函数。

现在不懂这两句话也没有关系,别急,我一直认为,抽象的东西举一个例子就可以把它纠下神坛。所以下边我们带着这两句话看一个例子。但是要记住,一定要一边嘴里念叨着这两句话一边看实例:

假设有两个向量
X 1 = ( a 1 , a 2 ) T X_1=(a_1,a_2)^T ,
X 2 = ( b 1 , b 2 ) T X_2=(b_1,b_2)^T
那么,我们对向量做一个映射,映射函数是 ϕ ( X ) = ( 2 x 1 , x 1 2 , 2 x 2 , x 2 2 , 2 x 1 x 2 , 1 ) \phi(X) = (\sqrt2x_1,x_1^2,\sqrt2x_2,x_2^2,\sqrt2x_1x_2,1)
那么 X 1 = ( 2 a 1 , a 1 2 , 2 a 2 , a 2 2 , 2 a 1 a 2 , 1 ) X'_1=(\sqrt2a_1,a_1^2,\sqrt2a_2,a_2^2,\sqrt2a_1a_2,1)
X 2 = ( 2 b 1 , b 1 2 , 2 b 2 , b 2 2 , 2 b 1 b 2 , 1 ) X'_2=(\sqrt2b_1,b_1^2,\sqrt2b_2,b_2^2,\sqrt2b_1b_2,1)

我们求映射后的内积如下:
< X 1 , X 2 > = a 1 b 1 + ( a 1 b 1 ) 2 + a 2 b 2 + ( a 2 b 2 ) 2 + a 1 a 2 b 1 b 2 + 1 <X'_1,X'_2> = a_1b_1+(a_1b_1)^2+a_2b_2+(a_2b_2)^2+a_1a_2b_1b_2+1

接下来,我们可以求一个内积的变换:
( < X 1 , X 2 > + 1 ) 2 = 2 a 1 b 1 + ( a 1 b 1 ) 2 + 2 a 2 b 2 + ( a 2 b 2 ) 2 + 2 a 1 a 2 b 1 b 2 + 1 (<X_1,X_2>+1)^2=2a_1b_1+(a_1b_1)^2+2a_2b_2+(a_2b_2)^2+2a_1a_2b_1b_2+1 (别问我为什么会求这个公式,凑出来的,没啥道理!)

amazing!可以发现,除了部分系数之外,所有项都相同,但是我们可以直接在原来的低维空间中进行计算,而不需要映射在高维空间之后再求解,这就是核函数的妙用。

以上,我们可以把 K ( X 1 , X 2 ) = ( < X 1 , X 2 > + 1 ) 2 K(X_1,X_2) = (<X_1,X_2>+1)^2 叫做X1,X2的核函数。
(注意:核函数只是向量内积在低维空间映射到了高维空间,两个维度下向量并没有其他关系。也就是说,在核函数下,我们只需要关注内积操作相似,不需要考虑内部怎么变化的。)

但是上边的例子也可以看到,公式只是根据这个特例凑出来的,并没有什么遵循的依据,有很大的巧合性。所以,数学家们就又发明了一些通用的核函数。

常用的核函数
  1. 线性核函数
    在这里插入图片描述
  2. 多项式核函数,显然刚才我们举的例子是这里多项式核的一个特例(R = 1,d =2)多项式核函数,显然刚才我们举的例子是这里多项式核的一个特例(R = 1,d =2)
    在这里插入图片描述
  3. 高斯核函数,高斯核非常灵活,也是使用最广泛的核函数之一。
    A=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
发布了63 篇原创文章 · 获赞 189 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/u013044310/article/details/82891394
今日推荐