SVM介绍及常见面试题

SVM的原理

SVM是一种二分类模型, 基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器. 如果数据线性可分, 可以直接使用硬间隔SVM; 如果数据近似可分, 引入松弛变量, 使用软间隔SVM; 如果数据不可分, 通过引入核函数, 使用非线性SVM.

SVM具体推导过程

硬间隔原问题

求最大间隔分离超平面可以转换成以下约束最优化问题:
max ⁡ w , b γ ^ ∣ ∣ w ∣ ∣ s . t . y i ( w ⋅ x i + b ) ≥ γ ^ , i = 1 , 2 , . . . N \begin{aligned} &\max_{w,b} \quad \frac{\hat{\gamma}}{||w||}\\ &s.t. \quad y_i(w \cdot x_i + b) \ge \hat{\gamma}, i = 1,2,...N \end{aligned} w,bmaxwγ^s.t.yi(wxi+b)γ^,i=1,2,...N注: γ \gamma γ为超平面(w,b)关于训练数据集中所有样本点 ( x i , y i ) (x_i, y_i) (xi,yi)的函数间隔的最小值. γ ^ = min ⁡ i = 1 , . . . , N γ i ^ \hat{\gamma}=\min_{i=1,...,N} \hat{\gamma_i} γ^=i=1,...,Nminγi^
另外, 由于函数间隔 γ ^ \hat{\gamma} γ^ 的取值不会影响最优化问题的解, 因此可以取 γ ^ = 1 \hat{\gamma}=1 γ^=1, 又因为最大化 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} w1 和最小化 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21w2 等价, 所以得到线性可分支持向量机的原问题:
min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w ⋅ x i + b ) − 1 ≥ 0 , i = 1 , 2 , . . . N \begin{aligned} &\min_{w,b} \quad \frac{1}{2}||w||^2\\ &s.t. \quad y_i(w \cdot x_i + b)-1 \ge 0, i = 1,2,...N \end{aligned} w,bmin21w2s.t.yi(wxi+b)10,i=1,2,...N

硬间隔对偶问题

应用拉格朗日对偶性, 可以将原问题转换成与之等价的对偶问题:
min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 α i ≥ 0 , i = 1 , 2 , . . . N \begin{aligned} &\min_{\alpha} \quad \frac{1}{2}\sum^N_{i=1}\sum^N_{j=1}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j) - \sum^N_{i=1}\alpha_i \\ &s.t. \quad \sum^N_{i=1}\alpha_iy_i=0 \\ &\qquad \alpha_i \ge0, \quad i = 1,2,...N \end{aligned} αmin21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαis.t.i=1Nαiyi=0αi0,i=1,2,...N

软间隔原问题

通过引入松弛变量, 得到近似线性可分数据集的软间隔分离超平面, 转换成最优化问题:
min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ξ i s . t . y i ( w ⋅ x i + b ) ≥ 1 − ξ i , i = 1 , 2 , . . . N ξ i ≥ 0 , i = 1 , 2 , . . . N \begin{aligned} &\min_{w,b} \quad \frac{1}{2}||w||^2 + C\sum^N_{i=1}\xi_i \\ &s.t. \quad y_i(w \cdot x_i + b) \ge 1-\xi_i, \quad i = 1,2,...N \\ &\qquad \xi_i \ge 0, \quad i=1,2,...N \end{aligned} w,bmin21w2+Ci=1Nξis.t.yi(wxi+b)1ξi,i=1,2,...Nξi0,i=1,2,...N

关于软间隔SVM的优化目标函数(上式), 除了可以由最大化几何间隔得到, 还有另外一种解释, 即: 合页损失函数+正则化项: min ⁡ w , b ∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∣ ∣ w ∣ ∣ 2 \min_{w,b} \quad \sum^N_{i=1}[1-y_i(w \cdot x_i+b)]_{_+} + \lambda||w||^2 w,bmini=1N[1yi(wxi+b)]++λw2
其中,
[ z ] + = { z , z > 0 0 , z ≤ 0   [z]_{_+}=\left\{ \begin{aligned} z, \quad z > 0 \\ 0, \quad z \le0\ \end{aligned} \right. [z]+={z,z>00,z0 
可以这样理解, 当样本点 ( x i , y i ) (x_i, y_i) (xi,yi)被正确分类且函数间隔(确信度) y i ( w ⋅ x i + b ) y_i(w \cdot x_i + b) yi(wxi+b) 大于1时, 损失是0, 否则损失是 1 − y i ( w ⋅ x i + b ) 1-y_i(w \cdot x_i + b) 1yi(wxi+b)

两种理解得到的目标函数等价

软间隔对偶问题

min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C , i = 1 , 2 , . . . N \begin{aligned} &\min_{\alpha} \quad \frac{1}{2}\sum^N_{i=1}\sum^N_{j=1}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j) - \sum^N_{i=1}\alpha_i \\ &s.t. \quad \sum^N_{i=1}\alpha_iy_i=0 \\ &\qquad 0 \le \alpha_i \le C, \quad i = 1,2,...N \end{aligned} αmin21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαis.t.i=1Nαiyi=00αiC,i=1,2,...N α \alpha α 的最优解为 α ∗ \alpha^* α, 则原问题中 w , b w,b w,b 的解为:
w ∗ = ∑ i = 1 N α i ∗ y i x i b ∗ = y j − ∑ i = 1 N y i α i ∗ ( x i ⋅ x j ) \begin{aligned} &w^* = \sum^N_{i=1}\alpha_i^*y_ix_i \\ &b^* = y_j - \sum^N_{i=1}y_i\alpha_i^*(x_i \cdot x_j) \end{aligned} w=i=1Nαiyixib=yji=1Nyiαi(xixj)得到分离超平面 w ∗ ⋅ x + b ∗ = 0 w^* \cdot x + b^* = 0 wx+b=0分类决策函数为: f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x) = sign(w^* \cdot x + b^*) f(x)=sign(wx+b)

核函数

在线性支持向量机的对偶问题中, 无论是目标函数还是决策函数(分离超平面), 都只涉及输入实例与实例之间的内积 x i ⋅ x j x_i \cdot x_j xixj. 用核函数 K ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) K(x_i, x_j) = \phi(x_i) \cdot \phi(x_j) 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 s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C , i = 1 , 2 , . . . N \begin{aligned} & W(\alpha) = \frac{1}{2}\sum^N_{i=1}\sum^N_{j=1}\alpha_i\alpha_jy_iy_jK(x_i, x_j) - \sum^N_{i=1}\alpha_i \\ & s.t. \quad \sum^N_{i=1}\alpha_iy_i=0 \\ &\qquad 0 \le \alpha_i \le C, \quad i = 1,2,...N \end{aligned} W(α)=21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαis.t.i=1Nαiyi=00αiC,i=1,2,...N分类决策函数变为: f ( x ) = s i g n ( ∑ i = 1 N α ∗ y i ϕ ( x i ) ⋅ ϕ ( x ) + b ∗ ) = s i g n ( ∑ i = 1 N α ∗ y i K ( x i , x j ) + b ∗ ) f(x) = sign(\sum^N_{i=1}\alpha^*y_i\phi(x_i)\cdot \phi(x)+b^*) = sign(\sum^N_{i=1}\alpha^*y_iK(x_i, x_j)+b^*) f(x)=sign(i=1Nαyiϕ(xi)ϕ(x)+b)=sign(i=1NαyiK(xi,xj)+b)这等价于经过映射函数 ϕ \phi ϕ 将原来的输入空间变换到一个新的特征空间. 从而在特征空间中利用线性分类器做分类. 在实际应用中, 往往以来领域知识直接选择核函数.

常用核函数

  1. 线性核, 即不使用核函数(Linear kernel function)
  2. 多项式核函数(Polynomial kernel function) K ( x , z ) = ( x ⋅ z + 1 ) p K(x,z) = (x \cdot z + 1)^p K(x,z)=(xz+1)p对应的SVM决策函数为: f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i ( x i ⋅ x + 1 ) p + b ∗ ) f(x) = sign(\sum^N_{i=1}\alpha^*_iy_i(x_i \cdot x + 1)^p + b^*) f(x)=sign(i=1Nαiyi(xix+1)p+b)
  3. 高斯核函数(Gaussian kernel function) K ( x , z ) = e x p ( − ∣ ∣ x − z ∣ ∣ 2 2 σ 2 ) K(x,z) = exp(-\frac{||x-z||^2}{2\sigma^2}) K(x,z)=exp(2σ2xz2)对应的SVM决策函数为: f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i e x p ( − ∣ ∣ x − z ∣ ∣ 2 2 σ 2 ) + b ∗ ) f(x) = sign(\sum^N_{i=1}\alpha^*_iy_iexp(-\frac{||x-z||^2}{2\sigma^2}) + b^*) f(x)=sign(i=1Nαiyiexp(2σ2xz2)+b)

SMO算法(序列最小最优化算法)

SMO是一种启发式算法,其基本思想是:如果所有变量的解都满足了此最优化问题的KKT条件,那么这个最优化问题的解就得到了。否则,选择两个变量,固定其它变量,针对这两个变量构建一个二次规划问题,然后关于这个二次规划的问题的解就更接近原始的二次归还问题的解,因为这个解使得需要优化的问题的函数值更小。重要的是,这时子问题可以通过解析的方法求解,这样就可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反KKT条件最严重的哪一个,另一个由约束条件自动确定,如此,SMO算法将原问题不断分解为子问题并对子问题进行求解,进而达到求解原问题的目的。

SVM常见面试题

  • SVM什么时候选择线性核, 什么时候选择高斯核?
    答: 当m(数据量)比较小而n(特征数量)比较大的时候, 应该用线性核. 因为此时特征空间已经很高维了, 而数据量不够多, 线性核足够分类了, 如果用高斯核投影到高维空间的话容易造成过拟合.
    当m比较大而n比较小的时候, 应该用高斯核. 比如数据量很大的2维训练集, 此时可能线性不可分, 需要高斯核投影到高维空间进行线性分类.

  • 在使用高斯核之前需要对数据进行处理吗?
    答: 需要进行特征缩放, 因为高斯核需要两个点之间的欧式距离, 如果不进行特征缩放的话数量级较大的特征对核函数的结果有决定性影响, 而数量级小的特征会被忽略.

  • SVM中如何解决数据不平衡问题?
    答: 数据不平衡在SVM中导致的主要问题是数量少的样本分布空间不如数量多的广, 支持向量总体会向数量少的分类偏移. 解决办法是给样本少的分类更大的惩罚因子C, 表示我们更重视这部分样本. C+和C-可以按样本数量比例分, 或者按空间超球体的半径比例分, 具体结合实际问题考虑.

  • SVM中原始问题为什么要转化成对偶问题进行求解?
    答: 1. 改变算法复杂度. 对偶问题往往更容易求解. 2. 转化为对偶问题才能得到内积的形式, 引入核函数, 进而推广到非线性分类问题.

  • SVM为什么采用间隔最大化?
    答: 当数据线性可分时, 有无穷多个超平面可以将数据分开, 利用间隔最大化可以求得最优分离超平面, 解是唯一的, 此时的分离超平面的分类结果是最鲁棒的, 对未知数据的泛化能力最强.

  • 为什么SVM要引入核函数?
    答: SVM在求解对偶问题的时候, 会出现数据点的内积的形式, 而分类决策函数也只需要内积的结果, 因此可以通过引入核函数把样本映射到高维空间, 隐式地在高维空间中进行分类. 当样本在原始空间线性不可分时, 通过核函数将样本映射到更高维的特征空间, 样本在这个特征空间将线性可分或者接近线性可分.

  • 核函数理论上可以应用在别的分类算法上比如LR, 为什么不建议这么做?
    答: 分类模型的结果就是计算决策面,模型训练的过程就是决策面的计算过程。在计算决策面时,SVM转化为对偶问题后,只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的),这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算量。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。​

  • SVM相对于LR有什么不同?
    答: 1.样本点对于模型的作用不同. SVM中只有支持向量对模型有影响, 而LR中所有点都有影响. 2.损失函数不同. SVM采用的是合页损失函数, LR采用的是对率损失函数. 3.输出不同. LR输出的是对样本点是否属于给定分类的概率, SVM只能判断是否属于某一分类. 4.处理非线性问题的能力不同. SVM可以通过核函数灵活的将非线性问题转化为线性问题求解, 而LR需要手动进行特征转换.

  • SVM的优点?
    答: 1.用内积核函数代替向高维空间的非线性映射. 2.间隔最大化的思想, 取得最优分类超平面. 3.最终结果只由支持向量决定, 剔除了大量的冗余样本, 因此具有一定的鲁棒性. 4.决策函数也只由支持向量决定, 降低了计算复杂度. 5.有坚实的理论基础.

  • SVM的缺点?
    答: 1.涉及m阶矩阵的计算, 当m很大时候计算的空间复杂度和时间复杂度都很高. 2.传统的SVM只能给出二分类的结果, 对于多分类需要需要用到组合分类器. 3.对数据缺失敏感, 对参数与核函数选择敏感.

  • 为什么SVM对数据缺失敏感?
    答: 因为SVM中涉及了距离度量, 缺失的数据可能对距离的影响很大, 如果处理不好, 结果就会差很多.

  • SVM如何做多分类?
    答: 1-V-rest:将某一类归为正类,其余全部是负类。
    该方法的最大缺陷是数据集的不平衡,因为某一类的实例往往只占一小部分。当然解决不平衡的问题可以进行降采样或者上采样,但是上采样中数据集过多重合,易导致过拟合,而降采样使得数据利用率不足,不能学习整个模型的特性。
    1-V-1:k类的数据集中,单独为每两类的样本设计SVM,进行分类。最终必须设计k(k-1)/2个分类器,最终用投票的方式进行选择。这也是libsvm采用的方法,但是当类别比较多的时候, 效率很低.

注: 拉格朗日乘子法和KKT条件原理参考: 如何理解拉格朗日乘子法?, 如何理解拉格朗日乘子法和KKT条件?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值