支持向量机(SVM)详解(三)

1. 前言

前文:
支持向量机(SVM)详解(一)
支持向量机(SVM)详解(二)
前文详细推导了支持向量机算法原理。本文将介绍支持向量机常用核函数、支持向量机解决多分类问题方法,以及支持向量机解决实际问题的一些经验。

2. 支持向量机的核函数

支持向量机库(如LIBSVM)一般会支持如下五种核函数:

  1. 线性内核(Linear): K ( X i , X j ) = X i T X j K(X_i,X_j)=X_i^TX_j K(Xi,Xj)=XiTXj
    显然,当 K ( X i , X j ) = X i T X j K(X_i,X_j)=X_i^TX_j K(Xi,Xj)=XiTXj,则低维到高维的映射 φ ( X ) = X \varphi(X)=X φ(X)=X。因此,如果使用线性核函数,则使用核函数求解支持向量机与不使用核函数获得的结果是完全一样的。
  2. 多项式核(Polynomial): K ( X i , X j ) = ( γ X i T X j + b ) d K(X_i,X_j)=(\gamma X_i^TX_j+b)^d K(Xi,Xj)=(γXiTXj+b)d
    γ \gamma γ b b b都是人为设置的超参数。多项式核是复杂度可以调节的核函数,可以证明,指数 d d d越大,则低维到高维的映射 φ ( X ) \varphi(X) φ(X)的维度越高。实际运用中,可以调节 d d d的大小来控制 φ ( X ) \varphi(X) φ(X)的维度,从而控制核函数的复杂度。
  3. 高斯径向基函数核(Radial basis function): K ( X i , X j ) = e − γ ∣ ∣ X i − X j ∣ ∣ 2 K(X_i,X_j)=e^{-\gamma||X_i-X_j||^2} K(Xi,Xj)=eγXiXj2
    γ \gamma γ是人为设置的超参数。可以证明,RBF核对应的映射函数 φ ( X ) \varphi(X) φ(X)的维度是无限维。
  4. Sigmoid核(Tanh): K ( X i , X j ) = t a n h ( γ X i T X j + b ) K(X_i,X_j)=tanh(\gamma{X_i^T}X_j+b) K(Xi,Xj)=tanh(γXiTXj+b),其中: t a n h ( x ) = e x − e − x e x + e − x tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+exexex
    γ \gamma γ b b b都是人为设置的超参数。该核函数对应的 φ ( X ) \varphi(X) φ(X)维度也是无限的。
  5. 自定义核(Precomputed kernel):
    K = [ K ( X 1 , X 2 ) … K ( X 1 , X n ) ⋮ ⋱ ⋮ K ( X n , X 1 ) ⋯ K ( X n , X n ) ] K= \begin{bmatrix} K(X_1,X_2) & \dots & K(X_1,X_n) \\ \vdots & \ddots & \vdots \\ K(X_n,X_1) & \cdots & K(X_n,X_n) \end{bmatrix} K=K(X1,X2)K(Xn,X1)K(X1,Xn)K(Xn,Xn)
    如果知道所有的 K ( X i , X j ) K(X_i,X_j) K(Xi,Xj)的值,则可以将这些值代入支持向量机优化问题求解问题中,解出所有 α \alpha α,从而完成对支持向量机的求解。

在实际应用中,如果数据特征维度较大,则首选线性核函数。如果线性核函数效果不理想,则考虑RBF核函数,其次再考虑使用其余核函数;
如果数据特征维度不是特别大,建议首选RBF核函数。RBF核函数是实际编程中公认的、最常用的核函数,如果在实际问题中不知道该用什么样的核函数,建议首先采用RBF核函数。

3. 支持向量机解决多分类问题

3.1 改造优化目标函数和限制条件

支持向量机解决多分类问题思路一是通过改造其优化目标函数和限制条件,使之能够处理多分类问题,具体参见Multi-Class Support Vector Machine

3.2 1类 vs k-1类

构造K个支持向量机:类别i VS 类别1,2,3,…,i-1,i+1,…,k(i从1到K)。对于每个优化问题,左边单一类别的标签为+1,右边k-1个类别的标签为-1。解出这k个优化问题后,获得k个 α \alpha α b b b的组合: α i ( k ) , b ( k ) ,    i = 1 ∼ n , k = 1 ∼ K \alpha_i^{(k)},b^{(k)},~~i=1\sim n,k=1\sim K αi(k),b(k),  i=1n,k=1K。对于一个测试样本 X t X_t Xt,将其类别判定为 k m a x = a r g m a x ∑ i = 1 n α i ( k ) y i K ( X i , X t ) + b ( k ) ,    k = 1 ∼ K k_{max}=argmax\sum_{i=1}^n\alpha_i^{(k)}y_iK(X_i,X_t)+b^{(k)},~~k=1\sim K kmax=argmaxi=1nαi(k)yiK(Xi,Xt)+b(k),  k=1K。即寻找与其它类间隔最大的一类,将之作为测试样本 X t X_t Xt的预测标签。

3.3 1类 vs 另一类

构造 k ( k − 1 ) 2 \frac{k(k-1)}{2} 2k(k1)个支持向量机,对于某个测试样本 X t X_t Xt,将其输入 k ( k − 1 ) 2 \frac{k(k-1)}{2} 2k(k1)个支持向量机中,分别获得相应的类别标签,然后采取投票的方式获得最后的结果。
当出现平票情况,将 s o r c e = ∑ i = 1 n α i y i K ( X i , X t ) + b sorce=\sum_{i=1}^n\alpha_iy_iK(X_i,X_t)+b sorce=i=1nαiyiK(Xi,Xt)+b的值作为进一步判断的依据。分别计算类别 i i i的k-1个支持向量机的分数和,最后识别结果为分数最高的类别。(总共构造了 k ( k − 1 ) 2 \frac{k(k-1)}{2} 2k(k1)个支持向量机,与类别 i i i相关的支持向量机个数均为k-1个)

通过支持向量机(SVM)详解(一)和支持向量机(SVM)详解(二)可知,支持向量机天生是为二分类问题设计的,3.1所述方法在实际运用中一般不被采用;
3.2所述方法存在严重的训练样本不平衡问题,即结果会偏向训练样本较多的一类;
实际运用中一般采用3.3所述方法。

4. 支持向量机的优缺点

4.1 优点

  • 有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题;
  • 能找出对任务至关重要的关键样本(支持向量);
  • 采用映射到高维的解决方法之后,可以处理非线性分类/回归任务;
  • 最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。

4.2 缺点

  • 训练时间长。当采用 SMO 算法时,由于每次都需要挑选一对参数,因此时间复杂度为 O ( n 2 ) O(n^2) O(n2),其中 n 为训练样本的数量;
  • 当采用核技巧时,如果需要存储核矩阵,则空间复杂度为 O ( n 2 ) O(n^2) O(n2)
  • 模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。因此支持向量机只适合小批量样本的任务,无法适应百万甚至上亿样本的任务。

5. 支持向量机训练经验

有关支持向量机使用详细经验可参见LIBSVM – A Library for Support Vector MachinesA Practical Guide to Support Vector Classification
在实际运用中,支持向量最多占训练样本的20%-30%,如果支持向量特别多,基本上说明模型没有训练好。极端情况下,会出现所有训练样本均为支持向量的情况。出现上述情况一般说明存在如下3个问题:

  1. 数据集没有什么规律;
  2. 支持向量机没有办法找到数据集的规律;
  3. 参数选择的不好。

6. 总结

至此,支持向量机详解全部完成。重点在于详解一和详解二两篇文章,这篇文章相当于做一些补充,同时也分享了支持向量机使用过程中常见的问题,以及出现相应问题的原因。有关支持向量机的训练经验,更多地还是建议去查看第5部分中提到的两个链接,其中包含了超参数的建议范围,为什么会出现过拟合现象等等。

7. 参考资料链接

  1. https://www.csie.ntu.edu.tw/~cjlin/libsvm/
  2. https://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf
  3. https://www.bilibili.com/video/BV1dJ411B7gh?from=search&seid=10165428540747855892
  4. https://zhuanlan.zhihu.com/p/77750026
  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
### 回答1: 支持向量机(Support Vector Machine, SVM)是一种监督学习算法,旨在寻找最佳的超平面,将不同类别的数据分开。从分类问题的角度来看,SVM要求找到一个超平面,使得不同类别的样本点在该超平面两侧,同时离该超平面的距离最大。该最大距离被称为margin,而最佳的超平面被称为最大间隔超平面。 SVM的核心思想是将数据映射到高维空间中,使得数据在高维空间中更容易线性可分。在高维空间中,由于数据点增多,出现维度灾难的问题,而此时SVM可以通过核函数来避免该问题。 在求解最大间隔超平面时,SVM依赖于一些向量,称为支持向量。这些支持向量是最接近最大间隔超平面的样本点,它们对求解最大间隔超平面起到了至关重要的作用。 SVM可以应用于二分类、多分类以及回归问题,并且在实际应用中表现出色。在实际使用中,需要根据具体问题选择适当的核函数,并且需要对超参数进行调整。此外,还需要注意数据的标准化处理,以避免不同维度的数据误导模型。 总之,SVM是一种强大的分类器,具有多种核函数可供选择,能够适用于不同类型数据的分类问题。 ### 回答2: 支持向量机SVM)是一种监督学习算法,可以用于分类和回归问题。它的优点是可以处理非线性分类问题,并且对于数据集中的噪声有较好的鲁棒性。SVM利用最大化分类边界来进行分类,最终得到的分类器是一个高维空间中的超平面。 SVM的原理是基于寻找最优超平面,这个超平面能够把不同类别的样本点分开。在二维平面上,这个超平面可以是一条直线,但是在高维空间中,它是一个超平面。SVM通过最大化边缘来寻找最优的超平面。边缘是一个超平面到两边最近样本点的距离,它表明了模型的泛化能力,即分类器对于新的数据的表现能力。 支持向量机的核心思想是寻找一条最大间隔的线性分割超平面。在非线性分类任务中,使用核方法将特征向量转换为高维空间中的特征向量。在这个高维空间中,数据点可以被更好地分割,即可能会出现线性可分的情况。 关键的问题是如何解决分割垂直于某个维度的问题,此时支持向量机利用核函数的技巧将数据集映射到高维空间,并在这个高维空间中采用线性可分的方法来进行分类。通常情况下,核函数常用的有线性核、多项式核和径向基函数核。 其中,径向基函数核(RBF kernel)是最常用的核函数之一。这个核函数可以将数据点映射到一个无限维的特征空间上。径向基函数核使用一个参数gamma来决定核函数的变化速度。当gamma的值很小的时候,核函数的变化会很慢,分类的边界将会很宽。当gamma的值很大的时候,核函数的变化会很快,分类的边界将会很窄。 SVM的优化问题可以通过拉格朗日乘子法来解决。可以使用拉格朗日乘子来构造一个拉格朗日函数,并使用约束条件来推导对偶形式的SVM问题。这个对偶形式的问题可以使用高效的SMO算法来求解。 SVM是一种强大的分类方法,它适用于许多不同的应用场景,并在许多任务中实现了很好的结果。支持向量机具有较好的泛化性能、能够处理高维数据、适用于不同类型的输入数据,并且能够快速训练分类器。 ### 回答3: SVM是一种二分类模型,它的主要思想是通过线性或非线性的方式找到最优的超平面,将不同类别的数据点分开。SVM支持向量机通过选择支持向量,来定义最优的超平面。支持向量是离超平面最近的数据点,它们对最终分类结果起到决定性的作用。在选取支持向量的过程中,SVM支持向量机尝试选择最少的支持向量,以达到泛化能力强的效果。 SVM支持向量机的分类器可以采用不同的核函数进行拟合,从而实现非线性分类。其中,常用的核函数包括线性核、多项式核、高斯核等。利用核函数的基本原理,我们可以把数据从原本空间映射到更高维的空间中。在高维空间,数据点在非线性情况下更容易区分,从而提高了分类的准确率。 SVM支持向量机的训练过程可以利用现有的优化算法求解,例如序列最小优化算法(SMO)和改进的SMO算法等。这些算法通过不断迭代优化模型参数,直至达到最优的分类效果。在模型训练完成之后,我们可以利用模型进行分类预测,从而实现新数据的分类。 总之,SVM支持向量机是一种基于分类边界找寻的算法,在分类效果、泛化能力和计算效率等方面具有优势,因此在分类领域有着广泛的应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RuizhiHe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值