支持向量机SVM(3)-非线性支持向量机与核函数

非线性支持向量机与核函数

本节包括以下内容

  • 1.非线性分类问题
  • 2.核函数的定义
  • 3.核技巧在支持向量机中的应用
  • 4.正定核    \; 核心问题:函数 K ( x , z ) K(x, z) K(x,z)满足什么条件才能称为核函数?
  • 5.常用核函数
  • 6.非线性支持向量机学习算法

1.非线性分类问题

非线性分类问题是指通过利用非线性模型才能很好地进行分类的问题。下图是一个例子,下图的左图是一个分类问题,由下图可见,无法用直线(线性模型)将正负实例正确分开,但可以用一条椭圆曲线(非线性模型将它们正确分开)。
对于给定的一个训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\} T={(x1,y1),(x2,y2),,(xN,yN)}其中实例 x i x_i xi属于输入空间, x i ∈ X = R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , ⋯   , N x_{i} \in \mathcal{X}=\mathbf{R}^{n}, \quad y_{i} \in \mathcal{Y}=\{+1,-1\}, \quad i=1,2, \cdots, N xiX=Rn,yiY={+1,1},i=1,2,,N y i y_i yi x i x_i xi的类标记,如果能用 R n R^n Rn中的一个超曲面将正负实例正确分开,则称这个问题为非线性可分问题

支持向量机SVM(3)-非线性支持向量机与核函数_第1张图片

非线性分类问题的求解思路:进行一个非线性变换,将非线性问题变换为线性问题,通过解变换后的线性问题求解原来的非线性问题.对于上图中的例子,通过变换,将左图中椭圆变换成右图中的直线,将非线性分类问题变换为线性分类问题。
符号推导如下
设原空间为 X ⊂ R 2 , x = ( x ( 1 ) , x ( 2 ) ) T ∈ X \mathcal{X} \subset \mathbf{R}^{2}, x=\left(x^{(1)}, x^{(2)}\right)^{\mathrm{T}} \in \mathcal{X} XR2,x=(x(1),x(2))TX,新空间为 Z ⊂ R 2 , z = ( z ( 1 ) , z ( 2 ) ) T ∈ Z \mathcal{Z} \subset \mathbf{R}^{2}, z=\left(z^{(1)}, z^{(2)}\right)^{T} \in \mathcal{Z} ZR2,z=(z(1),z(2))TZ,定义从原空间到新空间的变换(映射): z = ϕ ( x ) = ( ( x ( 1 ) ) 2 , ( x ( 2 ) ) 2 ) T z=\phi(x)=\left(\left(x^{(1)}\right)^{2},\left(x^{(2)}\right)^{2}\right)^{\mathrm{T}} z=ϕ(x)=((x(1))2,(x(2))2)T
经过变换 z = ϕ ( x ) z=\phi(x) z=ϕ(x),原空间 X ⊂ R 2 \mathcal{X} \subset \mathbf{R}^{2} XR2变换为新空间 Z ⊂ R 2 \mathcal{Z} \subset \mathbf{R}^{2} ZR2,原空间中的点相应地变换为新空间中的点,原空间中的椭圆
w 1 ( x ( 1 ) ) 2 + w 2 ( x ( 2 ) ) 2 + b = 0 w_{1}\left(x^{(1)}\right)^{2}+w_{2}\left(x^{(2)}\right)^{2}+b=0 w1(x(1))2+w2(x(2))2+b=0
变换为新空间中的直线 w 1 z ( 1 ) + w 2 z ( 2 ) + b = 0 w_{1} z^{(1)}+w_{2} z^{(2)}+b=0 w1z(1)+w2z(2)+b=0在变换后的新空间中,直线 w 1 z ( 1 ) + w 2 z ( 2 ) + b = 0 w_{1} z^{(1)}+w_{2} z^{(2)}+b=0 w1z(1)+w2z(2)+b=0可以将变换后的正负实例点正确分开.这样,原空间中的非线性可分问题就变成了新空间中的线性可分问题.

2.核函数的定义

定义6(核函数) X \mathcal{X} X是输入空间(欧氏空间 R n R^n Rn的子集或离散集合),又设 H \mathcal H H为特征空间(希尔伯特空间),如果存在一个 X \mathcal X X H \mathcal H H的映射 ϕ ( x ) : X → H \phi(x) : \mathcal{X} \rightarrow \mathcal{H} ϕ(x):XH使得对所有 x , z ∈ X x, z \in \mathcal{X} x,zX,函数 K ( x , z ) K(x, z) K(x,z)满足条件
K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x, z)=\phi(x) \cdot \phi(z) K(x,z)=ϕ(x)ϕ(z)则称 K ( x , z ) K(x, z) K(x,z)为核函数, ϕ ( x ) \phi(x) ϕ(x)为映射函数,式中 ϕ ( x ) ⋅ ϕ ( z ) \phi(x)\cdot\phi(z) ϕ(x)ϕ(z)为和 ϕ ( z ) \phi(z) ϕ(z)的内积。
以下为本节的最重要技术核技巧,核技巧巧妙地利用线性分类学习方法与核函数解决非线性问题的技术.
核技巧的思路:在学习和预测中只定义核函数 K ( x , z ) K(x, z) K(x,z),而不显式地定义映射函数 ϕ ( x ) \phi(x) ϕ(x).通常,直接计算 K ( x , z ) K(x, z) K(x,z)比较容易,而通过 ϕ ( x ) \phi(x) ϕ(x) ϕ ( z ) \phi(z) ϕ(z)计算 K ( x , z ) K(x, z) K(x,z)并不容易.注意, ϕ ( x ) \phi(x) ϕ(x)是输入空间 R n R^n Rn到特征空间 H \mathcal H H的映射,特征空间 H \mathcal H H一般是高维的,甚至是无穷维的.可以看到,对于给定的核 K ( x , z ) K(x, z) K(x,z),特征空间 H \mathcal H H和映射函数 ϕ ( x ) \phi(x) ϕ(x)的取法并不唯一,可以取不同的特征空间,即便是在同一特征空间里也可以取不同的映射.
下例说明核函数和映射函数的关系.
假设输入空间是 R 2 R^2 R2,核函数是 K ( x , z ) = ( x ⋅ z ) 2 K(x, z)=(x \cdot z)^{2} K(x,z)=(xz)2,试找出其相关的特征空间 H \mathcal H H和映射 ϕ ( x ) : R 2 → H \phi(x) : \mathbf{R}^{2} \rightarrow \mathcal{H} ϕ(x):R2H.
解 取特征空间 H = R 3 \mathcal{H}=\mathbf{R}^{3} H=R3,记 x = ( x ( 1 ) , x ( 2 ) ) T , z = ( z ( 1 ) , z ( 2 ) ) T x=\left(x^{(1)}, x^{(2)}\right)^{\mathrm{T}}, \quad z=\left(z^{(1)}, z^{(2)}\right)^{\mathrm{T}} x=(x(1),x(2))T,z=(z(1),z(2))T,由于 ( x ⋅ z ) 2 = ( x ( 1 ) z ( 1 ) + x ( 2 ) z ( 2 ) ) 2 = ( x ( 1 ) z ( 1 ) ) 2 + 2 x ( 1 ) z ( 1 ) x ( 2 ) z ( 2 ) + ( x ( 2 ) z ( 2 ) ) 2 (x \cdot z)^{2}=\left(x^{(1)} z^{(1)}+x^{(2)} z^{(2)}\right)^{2}=\left(x^{(1)} z^{(1)}\right)^{2}+2 x^{(1)} z^{(1)} x^{(2)} z^{(2)}+\left(x^{(2)} z^{(2)}\right)^{2} (xz)2=(x(1)z(1)+x(2)z(2))2=(x(1)z(1))2+2x(1)z(1)x(2)z(2)+(x(2)z(2))2
所以可以取映射 ϕ ( x ) = ( ( x ( 1 ) ) 2 , 2 x ( 1 ) x ( 2 ) , ( x ( 2 ) ) 2 ) T \phi(x)=\left(\left(x^{(1)}\right)^{2}, \sqrt{2} x^{(1)} x^{(2)},\left(x^{(2)}\right)^{2}\right)^{\mathrm{T}} ϕ(x)=((x(1))2,2 x(1)x(2),(x(2))2)T容易验证 ϕ ( x ) ⋅ ϕ ( z ) = ( x ⋅ z ) 2 = K ( x , z ) \phi(x) \cdot \phi(z)=(x \cdot z)^{2}=K(x, z) ϕ(x)ϕ(z)=(xz)2=K(x,z)
仍取 H = R 3 \mathcal{H}=\mathbf{R}^{3} H=R3以及 ϕ ( x ) = 1 2 ( ( x ( 1 ) ) 2 − ( x ( 2 ) ) 2 , 2 x ( 1 ) x ( 2 ) , ( x ( 1 ) ) 2 + ( x ( 2 ) ) 2 ) T \phi(x)=\frac{1}{\sqrt{2}}\left(\left(x^{(1)}\right)^{2}-\left(x^{(2)}\right)^{2}, 2 x^{(1)} x^{(2)},\left(x^{(1)}\right)^{2}+\left(x^{(2)}\right)^{2}\right)^{\mathrm{T}} ϕ(x)=2 1((x(1))2(x(2))2,2x(1)x(2),(x(1))2+(x(2))2)T同样有 ϕ ( x ) ⋅ ϕ ( z ) = ( x ⋅ z ) 2 = K ( x , z ) \phi(x) \cdot \phi(z)=(x \cdot z)^{2}=K(x, z) ϕ(x)ϕ(z)=(xz)2=K(x,z)
还可以取 H = R 4 \mathcal{H}=\mathbf{R}^{4} H=R4 ϕ ( x ) = ( ( x ( 1 ) ) 2 , x ( 1 ) x ( 2 ) , x ( 1 ) x ( 2 ) , ( x ( 2 ) ) 2 ) T \phi(x)=\left(\left(x^{(1)}\right)^{2}, x^{(1)} x^{(2)}, x^{(1)} x^{(2)},\left(x^{(2)}\right)^{2}\right)^{\mathrm{T}} ϕ(x)=((x(1))2,x(1)x(2),x(1)x(2),(x(2))2)T

3.核技巧在支持向量机中的应用

注意到在线性支持向量机的对偶问题中,目标函数和决策函数都只涉及输入实例和实例之间的内积 x i ⋅ x j x_{i} \cdot x_{j} xixj。在对偶问题的目标函数中的内积可以用核函数 K ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) K\left(x_{i}, x_{j}\right)=\phi\left(x_{i}\right) \cdot \phi\left(x_{j}\right) K(xi,xj)=ϕ(xi)ϕ(xj)来代替,此时对偶问题的目标函数成为 W ( α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i W(\alpha)=\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} K\left(x_{i}, x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} W(α)=21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi同样,分类决策函数中的内积也可以用核函数代替,而分类决策函数为
f ( x ) = sign ⁡ ( ∑ i = 1 N s a i ∗ y i ϕ ( x i ) ⋅ ϕ ( x ) + b ∗ ) = sign ⁡ ( ∑ i = 1 N s a i ∗ y i K ( x i , x ) + b ∗ ) f(x)=\operatorname{sign}\left(\sum_{i=1}^{N_{s}} a_{i}^{*} y_{i} \phi\left(x_{i}\right) \cdot \phi(x)+b^{*}\right)=\operatorname{sign}\left(\sum_{i=1}^{N_{s}} a_{i}^{*} y_{i} K\left(x_{i}, x\right)+b^{*}\right) f(x)=sign(i=1Nsaiyiϕ(xi)ϕ(x)+b)=sign(i=1NsaiyiK(xi,x)+b)等价于经过映射将原来的输入空间变换到一个新的特征空间,将输入空间中的内积变换为特征空间的内积在新的特征空间里从训练样本中学习线性支持向量机。当映射函数是非线性函数时,学习到的含有核函数的支持向量机是非线性分类模型.学习是隐式地在特征空间进行的,不需要显示地定义特征空间和映射函数.这样的技巧称为核技巧。在实际应用中,往往依赖领域知识直接选择核函数,核函数选择的有效性需要通过实验验证

4.正定核

核心问题:函数 K ( x , z ) K(x, z) K(x,z)满足什么条件才能称为核函数?
已知映射函数 ϕ ( x ) \phi(x) ϕ(x),通过 ϕ ( x ) \phi(x) ϕ(x) ϕ ( z ) \phi(z) ϕ(z)的内积求得核函数 K ( x , z ) K(x, z) K(x,z),不用构造映射 ϕ ( x ) \phi(x) ϕ(x)能否直接判断一个给定的函数 K ( x , z ) K(x, z) K(x,z)是不是核函数?
假设 K ( x , z ) K(x, z) K(x,z)是定义在上的对称函数,并且对任意的 x 1 , x 2 , ⋯   , x m ∈ X x_{1}, x_{2}, \cdots, x_{m} \in \mathcal{X} x1,x2,,xmX K ( x , z ) K(x, z) K(x,z)关于 x 1 , x 2 , ⋯   , x m ∈ X x_{1}, x_{2}, \cdots, x_{m} \in \mathcal{X} x1,x2,,xmX的Gram矩阵是半正定的.可以依据函数 K ( x , z ) K(x, z) K(x,z),构成一个希尔伯特空间(Hilbert space),其步骤是:首先定义映射 ϕ ( x ) \phi(x) ϕ(x)并构成向量空间 S S S;然后在 S S S上定义内积构成内积空间;最后将 S S S完备化构成希尔伯特空间。

定理5(正定核的充要条件) K : X × X → R K : \mathcal{X} \times \mathcal{X} \rightarrow \mathbf{R} K:X×XR是对称函数,则 K ( x , z ) K(x, z) K(x,z)为正定核函数的充要条件是对任意 x i ∈ X , i = 1 , 2 , ⋯   , m x_{i} \in \mathcal{X}, \quad i=1,2, \cdots, m xiX,i=1,2,,m K ( x , z ) K(x, z) K(x,z)对应的Gram矩阵:
K = [ K ( x i , x j ) ] m × m K=\left[K\left(x_{i}, x_{j}\right)\right]_{m \times m} K=[K(xi,xj)]m×m是半正定矩阵。
定理给出了正定核的充要条件,因此可以作为正定核,即核函数的另一定义.

定义7(正定核的等价定义) X ⊂ R n \mathcal{X} \subset \mathbf{R}^{n} XRn K ( x , z ) K(x, z) K(x,z)是定义在 X × X \mathcal{X} \times \mathcal{X} X×X上的对称函数,如果对任意的 x i ∈ X , i = 1 , 2 , ⋯   , m x_{i} \in \mathcal{X}, \quad i=1,2, \cdots, m xiX,i=1,2,,m,对应的Gram矩阵: K = [ K ( x i , x j ) ] m × m K=\left[K\left(x_{i}, x_{j}\right)\right]_{m \times m} K=[K(xi,xj)]m×m是半正定矩阵,则称是正定核。

5.常用核函数

1).多项式核函数 K ( x , z ) = ( x ⋅ z + 1 ) p K(x, z)=(x \cdot z+1)^{p} K(x,z)=(xz+1)p对应的支持向量机是一个多项式分类器,在此情形下,分类决策函数成为

2).高斯核函数 K ( x , z ) = exp ⁡ ( − ∥ x − z ∥ 2 2 σ 2 ) K(x, z)=\exp \left(-\frac{\|x-z\|^{2}}{2 \sigma^{2}}\right) K(x,z)=exp(2σ2xz2)对应的支持向量机是高斯径向基函数(radical basis function)分类器,在此情况下,分类决策函数成为
f ( x ) = sign ⁡ ( ∑ i = 1 N s a i ∗ y i exp ⁡ ( − ∥ x − z ∥ 2 2 σ 2 ) + b ∗ ) f(x)=\operatorname{sign}\left(\sum_{i=1}^{N_{s}} a_{i}^{*} y_{i} \exp \left(-\frac{\|x-z\|^{2}}{2 \sigma^{2}}\right)+b^{*}\right) f(x)=sign(i=1Nsaiyiexp(2σ2xz2)+b)
3).字符串核函数(string kernel function)
核函数不仅可以定义在欧氏空间上,还可以定义在离散数据的集合上.比如,字符串核是定义在字符串集合上的核函数,字符串核函数在文本分类、信息检索、生物信息学等方面都有应用
考虑一个有限字符表 Σ \Sigma Σ.字符串 s s s是从 Σ \Sigma Σ中提取的有限个字符的序列,包括空字符串,字符串 s s s的长度用 ∣ s ∣ |s| s表示,它的元素记作 s ( 1 ) s ( 2 ) ⋯ s ( ∣ s ∣ ) s(1) s(2) \cdots s(|s|) s(1)s(2)s(s).两个字符串 s s s t t t的连接记作 s t st st,所有长度为 n n n的字符串的集合记作 Σ n \Sigma^{n} Σn,所有字符串的集合记作 Σ ∗ = ⋃ n = 0 ∞ Σ n \Sigma^{*}=\bigcup_{n=0}^{\infty} \Sigma^{n} Σ=n=0Σn
考虑字符串 s s s的子串 u u u.给定一个指标 i = ( i 1 , i 2 , ⋯   , i ∣ u ∣ ) i=\left(i_1, i_{2}, \cdots, i_{|u|}\right) i=(i1,i2,,iu) , s s s的子串 u u u定义为 u = s ( i ) = s ( i 1 ) s ( i 2 ) ⋯ s ( i ∣ u ∣ ) u=s(i)=s\left(i_{1}\right) s\left(i_{2}\right) \cdots s\left(i_{|u|}\right) u=s(i)=s(i1)s(i2)s(iu),其长度记作 l ( i ) = i ∣ u ∣ − i 1 + 1 l(i)=i_{\mathrm|{u} |}-i_{1}+1 l(i)=iui1+1,如果是连续的(没有空格),则 l ( i ) = ∣ u ∣ l(i)=|u| l(i)=u;否则, l ( i ) > ∣ u ∣ l(i)>|u| l(i)>u.
假设 S S S是长度大于或等于 n n n字符串的集合, s s s S S S的元素。现在要建立字符串集合 S S S到特征空间 H n = R Σ n \mathcal{H}_{n}=R^{\Sigma^{n}} Hn=RΣn的映射 ϕ n ( s ) \phi_{n}(s) ϕn(s) R Σ n R^{\Sigma^{n}} RΣn表示定义在上的实数空间,其每一维对应一个字符串 u ∈ Σ n u \in \Sigma^{n} uΣn,映射 ϕ n ( s ) \phi_{n}(s) ϕn(s)
将字符串 s s s对应于空间 R Σ n R^{\Sigma^{n}} RΣn的一个向量,其在 u u u维上的取值为
[ ϕ n ( s ) ] u = ∑ i : s ( i ) = u λ l ( i ) \left[\phi_{n}(s)\right]_{u}=\sum_{i : s(i)=u} \lambda^{l(i)} [ϕn(s)]u=i:s(i)=uλl(i)这里, 0 < λ ⩽ 1 0<\lambda \leqslant 1 0<λ1是一个衰减函数, l ( i ) l(i) l(i)表示字符串的长度,求和在 s s s中所有于 u u u相同的子串上进行.
例如,假设 Σ \Sigma Σ为英文字符集, n n n为3,为长度大于或等于3的子串集合.考虑将字符集 S S S映射到特征空间 H 3 H_3 H3 H 3 H_3 H3的一维对应于字符串 a s d asd asd,这时字符串  "Nasdaq"  \text { "Nasdaq" }  "Nasdaq"   "lass das"  \text { "lass das" }  "lass das" 在这一维上的值分别是
[ ϕ 3 (  Nasdaq  ) ] a s d = λ 3 \left[\phi_{3}(\text { Nasdaq })\right]_{a s d}=\lambda^{3} [ϕ3( Nasdaq )]asd=λ3 [ ϕ 3 (  lass das  ] ] a d = 2 λ 5 \left[\phi_{3}(\text { lass das }]\right]_{a d}=2 \lambda^{5} [ϕ3( lass das ]]ad=2λ5.在第1个字符串中, a s d asd asd是连续的字符串,在第2个字符串中, a s d asd asd是长度为5的不连续子串,共出现2次。
两个字符串 s s s t t t上的字符串核函数是基于映射 ϕ n \phi_n ϕn的特征空间的内积:
k n ( s , t ) = ∑ u ∈ Σ n [ ϕ n ( s ) ] u [ ϕ n ( t ) ] u = ∑ u ∈ Σ n ∑ ( i , j ) s ( i ) = t ( j ) = u λ l ( i ) λ l ( j ) k_{n}(s, t)=\sum_{u \in \Sigma^{n}}\left[\phi_{n}(s)\right]_{u}\left[\phi_{n}(t)\right]_{u}=\sum_{u \in \Sigma^{n}} \sum_{(i, j) s(i)=t(j)=u} \lambda^{l(i)} \lambda^{l(j)} kn(s,t)=uΣn[ϕn(s)]u[ϕn(t)]u=uΣn(i,j)s(i)=t(j)=uλl(i)λl(j)字符串核函数 k n ( s , t ) k_{n}(s, t) kn(s,t)给出了字符串 s s s t t t中长度等于 n n n的所有子串组成的特征向量的余弦相似度,直观上,两个字符串相同的子串越多,它们就越相似,字符串核函数的值越大,字符串核函数可以由动态规划快速地计算.

6.非线性支持向量机学习算法

(1).选取适当的核函数 K ( x , z ) K(x, z) K(x,z)(正定核函数)和适当的参数 C C C,构造并求解最优化问题 min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i \min _{\alpha} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} K\left(x_{i}, x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} αmin21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi  s.t.  ∑ i = 1 N α i y i = 0 \text { s.t. } \quad \sum_{i=1}^{N} \alpha_{i} y_{i}=0  s.t. i=1Nαiyi=0 0 ⩽ α i ⩽ C , i = 1 , 2 , ⋯   , N 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2, \cdots, N 0αiC,i=1,2,,N求得最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯   , α N ∗ ) T \alpha^{*}=\left(\alpha_{1}^{*}, \alpha_{2}^{*}, \cdots, \alpha_{N}^{*}\right)^{\mathrm{T}} α=(α1,α2,,αN)T
(2).选择 α ∗ \alpha^* α的一个正分量 0 < α j ∗ < C 0<\alpha_{j}^{*}<C 0<αj<C,计算 b ∗ = y j − ∑ i = 1 N α i ∗ y i K ( x i ⋅ x j ) b^{*}=y_{j}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} K\left(x_{i} \cdot x_{j}\right) b=yji=1NαiyiK(xixj)(3).构造决策函数
f ( x ) = sign ⁡ ( ∑ i = 1 N α i ∗ y i K ( x ⋅ x i ) + b ∗ ) f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} K\left(x \cdot x_{i}\right)+b^{*}\right) f(x)=sign(i=1NαiyiK(xxi)+b)

参考: 李航《统计学习方法》

你可能感兴趣的:(统计机器学习)