百面机器学习 #3 经典算法:01-3 核函数支撑向量机SVM

1.3 非线性SVM与核技巧

  • 非线性问题往往不好求解,所以希望能用解线性分类问题的方法解决这个问题。所采取的方法是进行一个非线性变换,将非线性问题变换为线性问题,通过解变换后的线性问题的方法求解原来的非线性问题。
  • 用线性分类方法求解非线性分类问题分为两步:
    • 首先使用一个变换将原空间的数据映射到新空间;
    • 然后在新空间里用线性分类学习方法从训练数据中学习分类模型。
1.3.1 核函数
  • 通过一个非线性变换将输入空间 X \mathcal X X(欧氏空间 R n \mathrm R^n Rn的子集或离散集合)对应于一个特征空间(希尔伯特空间 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 K K满足条件
    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)映射函数,式中 K K K为映射函数的的内积。
  • 核技巧的想法是,在学习与预测中只定义核函数 K ( x , z ) K(x,z) K(x,z),而不显式地定义映射函数 ϕ \phi ϕ,因为前者直接计算相对更简单。学习是隐式地在特征空间进行的,不需要显式地定义特征空间和映射函数.
  • 给定核函数,即使对应同一高维特征空间,也可取不同的映射函数。即核函数和映射函数是一对多的关系。
1.3.2 核技巧在支持向量机中的应用
  • 在线性支持向量机的对偶问题中,无论是目标函数还是决策函数(分离超平面)都只涉及输入实例与实例之间的内积
    • 对偶问题的目标函数
      1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} = \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}K(x_i,x_j)-\sum_{i=1}^{N} \alpha_{i} 21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi=21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi
    • 分类决策函数
      f ( x ) = sign ⁡ ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) = 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}\left(x \cdot x_{i}\right)+b^{*}\right) =\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}K(x,x_i)+b^{*}\right) f(x)=sign(i=1Nαiyi(xxi)+b)=sign(i=1NαiyiK(x,xi)+b)
1.3.3 常用核函数
  • 多项式核函数(polynomial kernel function)
    K ( x , z ) = ( x ⋅ z + 1 ) p K(x,z)=(x\cdot z+1)^p K(x,z)=(xz+1)p
    对应的支持向量机是一个p 次多项式分类器。分类决策函数成为
    f ( x ) = sign ⁡ ( ∑ i = 1 N α i ∗ y i ( x i ⋅ x + 1 ) p + b ∗ ) f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x_{i} \cdot x+1\right)^{p}+b^{*}\right) f(x)=sign(i=1Nαiyi(xix+1)p+b)
  • 高斯核函数(Gaussian kernel function)
    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)
    对应的支持向量机是高斯径向基函数(radial basis function)分类器。
    分类决策函数成为
    f ( x ) = sign ⁡ ( ∑ i = 1 N α i ∗ y i exp ⁡ ( − ∥ x − x i ∥ 2 2 σ 2 ) + b ∗ ) f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} \exp \left(-\frac{\left\|x-x_{i}\right\|^{2}}{2 \sigma^{2}}\right)+b^{*}\right) f(x)=sign(i=1Nαiyiexp(2σ2xxi2)+b)

1.4 其他问题

1.4.1 是否存在一组参数使SVM训练误差为0:是

分类决策函数为
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(x,x_i)+b^{*}\right) f(x)=sign(i=1NαiyiK(x,xi)+b)
这里我们先只考虑不取sign之前的预测结果 y ^ ( x ) = ∑ i = 1 N α i ∗ y i K ( x , x i ) + b ∗ \hat y(x)=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} K(x,x_i)+b^{*} y^(x)=i=1NαiyiK(x,xi)+b

使用高斯核的SVM,同时我们对任意 i i i,固定 α i = 1 \alpha_i=1 αi=1以及 b = 0 b=0 b=0,只保留高斯分布的参数 σ \sigma σ,得到

y ^ ( x ) = ∑ i = 1 N α i ∗ y i exp ⁡ ( − ∥ x − x i ∥ 2 2 σ 2 ) + b ∗ = ∑ i = 1 N y i exp ⁡ ( − ∥ x − x i ∥ 2 2 σ 2 ) \hat y(x)=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} \exp \left(-\frac{\left\|x-x_{i}\right\|^{2}}{2 \sigma^{2}}\right)+b^{*} =\sum_{i=1}^{N} y_{i} \exp \left(-\frac{\left\|x-x_{i}\right\|^{2}}{2 \sigma^{2}}\right) y^(x)=i=1Nαiyiexp(2σ2xxi2)+b=i=1Nyiexp(2σ2xxi2)
对任意一个训练样本 x j x_j xj代入有
y ^ ( x j ) − y j = ∑ i = 1 N s y i exp ⁡ ( − ∥ x j − x i ∥ 2 2 σ 2 ) − y j = ∑ i = 1 , i ≠ j N y i exp ⁡ ( − ∥ x j − x i ∥ 2 2 σ 2 ) \hat y(x_j)-y_j=\sum_{i=1}^{N_{s}} y_{i} \exp \left(-\frac{\left\|x_j-x_{i}\right\|^{2}}{2 \sigma^{2}}\right)-y_j =\sum_{i=1,i\not=j}^{N} y_{i} \exp \left(-\frac{\left\|x_j-x_{i}\right\|^{2}}{2 \sigma^{2}}\right) y^(xj)yj=i=1Nsyiexp(2σ2xjxi2)yj=i=1,i=jNyiexp(2σ2xjxi2)
∥ y ^ ( x j ) − y j ∥ = ∥ ∑ i = 1 , i ≠ j N y i exp ⁡ ( − ∥ x j − x i ∥ 2 2 σ 2 ) ∥ ≤ ∑ i = 1 , i ≠ j N ∥ y i exp ⁡ ( − ∥ x j − x i ∥ 2 2 σ 2 ) ∥ = ∑ i = 1 , i ≠ j N exp ⁡ ( − ∥ x j − x i ∥ 2 2 σ 2 ) \begin{aligned} \|\hat y(x_j)-y_j\| &=\left\|\sum_{i=1,i\not=j}^{N} y_{i} \exp \left(-\frac{\left\|x_j-x_{i}\right\|^{2}}{2 \sigma^{2}}\right)\right\| \\ &\le\sum_{i=1,i\not=j}^{N} \left\|y_{i} \exp \left(-\frac{\left\|x_j-x_{i}\right\|^{2}}{2 \sigma^{2}}\right)\right\|\\ &=\sum_{i=1,i\not=j}^{N} \exp \left(-\frac{\left\|x_j-x_{i}\right\|^{2}}{2 \sigma^{2}}\right) \end{aligned} y^(xj)yj=i=1,i=jNyiexp(2σ2xjxi2)i=1,i=jNyiexp(2σ2xjxi2)=i=1,i=jNexp(2σ2xjxi2)
若给定训练集中不存在在同一位置的两个点,即我们可以认为 ∥ x i − x j ∥ ≥ ϵ \|x_i-x_j\|\ge \epsilon xixjϵ,其中 ϵ \epsilon ϵ是一个非0的数。
ϵ 2 2 σ 2 = log ⁡ N ⇒ \frac{\epsilon^{2}}{2 \sigma^{2}}=\log N \Rightarrow 2σ2ϵ2=logN
∑ i = 1 , i ≠ j N exp ⁡ ( − ∥ x j − x i ∥ 2 2 σ 2 ) ≤ ∑ i = 1 , i ≠ j N exp ⁡ ( − ϵ 2 2 σ 2 ) = ∑ i = 1 , i ≠ j N exp ⁡ ( − log ⁡ N ) = ∑ i = 1 , i ≠ j N 1 N = N − 1 N < 1 \begin{aligned} \sum_{i=1,i\not=j}^{N} \exp \left(-\frac{\left\|x_j-x_{i}\right\|^{2}}{2 \sigma^{2}}\right) &\le \sum_{i=1,i\not=j}^{N} \exp \left(-\frac{\epsilon^{2}}{2 \sigma^{2}}\right)\\ &=\sum_{i=1,i\not=j}^{N} \exp \left(-\log N\right)\\ &=\sum_{i=1,i\not=j}^{N}\frac{1}{N}=\frac{N-1}{N}<1 \end{aligned} i=1,i=jNexp(2σ2xjxi2)i=1,i=jNexp(2σ2ϵ2)=i=1,i=jNexp(logN)=i=1,i=jNN1=NN1<1
所以,对于任意一个样本 x j x_j xj,它的预测结果 y ^ ( x j ) \hat y(x_j) y^(xj)和真实结果 y j y_j yj的距离小于1,即当真实标签 y j = 1 y_j=1 yj=1 y ^ ( x j ) > 0 , sign ⁡ ( y ^ ( x j ) ) = 1 \hat y(x_j)>0,\operatorname{sign}(\hat y(x_j))=1 y^(xj)>0,sign(y^(xj))=1,即预测正确。同理真实标签 y j = − 1 y_j=-1 yj=1也预测正确。
综上,我们可以找到这样一组 α i , b , σ 2 \alpha_i,b,\sigma^2 αi,b,σ2得到训练误差为0.
但是这组参数不一定是SVM的解。

1.4.2 训练误差为0的SVM分类器一定存在吗:是

SVM的解要求 y j ⋅ y ^ ( x j ) = y j ( w ⋅ x j + b ) ≥ 1 y_j\cdot\hat y(x_j)=y_j(w\cdot x_j +b)\ge1 yjy^(xj)=yj(wxj+b)1,这比前述的预测正确的条件更强。
我们仍然固定 b = 0 b=0 b=0
y j ⋅ y ^ ( x j ) = y j ∑ i = 1 N α i ∗ y i K ( x j , x i ) = ∑ i = 1 , i ≠ j N α i ∗ y j y i K ( x j , x i ) + α j ∗ y j y j K ( x j , x j ) = ∑ i = 1 , i ≠ j N α i ∗ y j y i K ( x j , x i ) + α j \begin{aligned} y_j\cdot\hat y(x_j)&=y_j\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} K(x_j,x_i)\\ &=\sum_{i=1,i\not=j}^{N} \alpha_{i}^{*}y_j y_{i} K(x_j,x_i)+\alpha_{j}^{*}y_j y_{j} K(x_j,x_j)\\ &=\sum_{i=1,i\not=j}^{N} \alpha_{i}^{*}y_j y_{i} K(x_j,x_i)+\alpha_{j} \end{aligned} yjy^(xj)=yji=1NαiyiK(xj,xi)=i=1,i=jNαiyjyiK(xj,xi)+αjyjyjK(xj,xj)=i=1,i=jNαiyjyiK(xj,xi)+αj
取很大的 α j \alpha_j αj,同时很小的 σ \sigma σ是的核映射项很小,则很大的、占主导地位的项 α j \alpha_j αj一定大于1,满足SVM的解的约束。
因此,存在SVM最优解分类误差为0.

1.4.3 加入松弛变量的SVM的训练误差可以为0吗:不一定

使用SMO算法训练的加入松弛变量的SVM不一定能得到训练误差为0的模型。
当松弛参数 C C C选取较小的值,(正则项) 1 2 ∥ w ∥ 2 \frac{1}{2}\|w\|^2 21w2将占据优化目标函数的较大比重。这样,一个带有训练误差、但参数较小的点将成为更优的结果。
一个简单的特例是,当C取0时,w也取0即可达到优化目标,但是显然此时我们的训练误差不一定能达到0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值