支持向量机是一种二分类模型,其主要思想是最大化特征空间中两个类别之间的间隔。按照数据集是否线性可分,有:

  1. hard-margin SVM:数据集线性可分
  2. soft-margin SVM:数据集整体线性可分,但存在少量不可分的错误点
  3. kernel Method:数据集线性不可分,是非线性问题

    1. 支持向量机(hard-margin SVM)建模

    给定训练样本集 支持向量机 - 图4 ,其中 支持向量机 - 图5支持向量机 - 图6 。分类学习最基本的想法就是基于训练集 支持向量机 - 图7 在样本空间中找到一个划分超平面,将不同类别的样本分开。在样本空间中,划分超平面可通过如下线性方程来描述:
    支持向量机 - 图8
    其中 支持向量机 - 图9 为法向量,决定了超平面的方向; 支持向量机 - 图10 为位移项,决定了超平面与原点之间的距离。
    但能将训练样本分开的划分超平面可能有无数个,为了对训练样本局部扰动的容忍性最好,支持向量机要求超平面不仅能对训练样本进行正确分类,并且要满足使得两个类别之间的间隔最大化,可表示为:
    支持向量机 - 图11

支持向量机 - 图12但当 ~~支持向量机 - 图13支持向量机 - 图14 等比例缩放后超平面不变而函数间隔 支持向量机 - 图15 却变化了。所以需要将 支持向量机 - 图16 的大小固定,如将函数间隔除以 支持向量机 - 图17 以实现 支持向量机 - 图18 的归一化,此时 支持向量机 - 图19 ,代入 支持向量机 - 图20 得:~~ 支持向量机 - 图21 因为 ~~支持向量机 - 图22 ,故 支持向量机 - 图23 ,因函数间隔 支持向量机 - 图24 的值随着支持向量机 - 图25支持向量机 - 图26 等比例变化而变化,不妨令 支持向量机 - 图27 ,代入 支持向量机 - 图28 得:~~


更新:
其中支持向量机 - 图29,即支持向量机 - 图30为距分隔超平面支持向量机 - 图31最近的数据点的距离,根据点与平面距离公式可得:
支持向量机 - 图32
因为当 支持向量机 - 图33支持向量机 - 图34 等比例缩放时,超平面不变,而 支持向量机 - 图35 的值会变化,不妨令离分隔超平面最近的点满足支持向量机 - 图36,故上式为:
支持向量机 - 图37
因为支持向量机 - 图38大于0,故等价于支持向量机 - 图39,此时SVM如下:
支持向量机 - 图40
上式等价于:
支持向量机 - 图41
通过拉格朗日乘子法将带约束优化问题转换为无约束优化问题,即:
支持向量机 - 图42
支持向量机 - 图43
因该问题为二次凸优化问题,满足强对偶,即 支持向量机 - 图44支持向量机 - 图45 式等价于其对偶问题:
支持向量机 - 图46

2. 数学模型求解

1) 求 支持向量机 - 图47 :

首先解 支持向量机 - 图48 ,令 支持向量机 - 图49 ,带入 支持向量机 - 图50
支持向量机 - 图51
再令 支持向量机 - 图52 ,得 支持向量机 - 图53 ,带入 支持向量机 - 图54 式得:
支持向量机 - 图55

2) 求 支持向量机 - 图56

此时式 支持向量机 - 图57 可写为:
支持向量机 - 图58
通过SMO序列最小优化算法(Sequential Minimal Optimization, SMO)可迭代求得参数 支持向量机 - 图59 SMO算法:每次取 > 支持向量机 - 图60为未知数 ,令其他值 > 支持向量机 - 图61 为常数由 > 支持向量机 - 图62 ,可得 > 支持向量机 - 图63 与 > 支持向量机 - 图64 的线形关系,问题转化为一元函数对该一元函数求极值,可解得 > 支持向量机 - 图65 和 > 支持向量机 - 图66 的值如此反复迭代

3)求 支持向量机 - 图67

由KKT条件,训练样本集中的所有点都必须满足:
支持向量机 - 图68
当:

  • 支持向量机 - 图69 ,即 支持向量机 - 图70 ,样本点 支持向量机 - 图71 不是支持向量,此时 支持向量机 - 图72
  • 支持向量机 - 图73 ,即 支持向量机 - 图74 ,样本点 支持向量机 - 图75 是支持向量,此时 支持向量机 - 图76

所以 支持向量机 - 图77 所对应的样本点 支持向量机 - 图78 即为支持向量
理论上,可选取任意支持向量并通过求解式子 支持向量机 - 图79 获得 支持向量机 - 图80 ,但现实任务中常采用一种更鲁棒的做法:使用所有支持向量求解的平均值:
支持向量机 - 图81

3. 软间隔支持向量机

在之前的讨论中,我们一直假定训练样本在特征空间中是线形可分的,然而在现实任务中训练样本中往往有一些数据点不能满足线性可分,为此,要引入“软间隔”,在最大化间隔的同时,使不满足约束的样本尽可能少。定义loss为:
支持向量机 - 图82
合并成一项为 支持向量机 - 图83 ,这就是hinge loss。令 支持向量机 - 图84 ,数学模型变为:
支持向量机 - 图85
通过拉格朗日乘子法可得到式 支持向量机 - 图86 的拉格朗日函数:
支持向量机 - 图87
其中 支持向量机 - 图88 是拉格朗日乘子。
支持向量机 - 图89支持向量机 - 图90 的偏导为零可得:
支持向量机 - 图91
支持向量机 - 图92 代入 支持向量机 - 图93 即可得到式 支持向量机 - 图94 的对偶问题:
支持向量机 - 图95
由KKT条件中 支持向量机 - 图96 ,当 支持向量机 - 图97支持向量机 - 图98 ,该样本点是支持向量:

  • 支持向量机 - 图99 ,由 支持向量机 - 图100 ,有 支持向量机 - 图101 ,又因 支持向量机 - 图102 ,所以 支持向量机 - 图103 ,即该样本点恰在最大间隔边界上。
  • 支持向量机 - 图104支持向量机 - 图105 ,则 支持向量机 - 图106 。此时若 支持向量机 - 图107 ,样本点在最大间隔内部;若 支持向量机 - 图108 ,则该样本点被错误分类。

    4. 核函数

    在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。核函数是为处理非线性情况,若直接映射到高维计算恐维度爆炸,故在低维计算,等效高维表现。
    如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。

    5. 总结

    1)LR与SVM

    相同:

  • 都是线性分类器。本质上都是求一个最佳分类超平面

  • 都是监督学习算法
  • 都是判别模型。判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后用差别来简单对给定的一个信号进行分类。常见的判别模型有:KNN、SVM、LR,常见的生成模型有:朴素贝叶斯,隐马尔可夫模型

    不同:

  • LR是参数模型,svm是非参数模型

  • 从目标函数来看,区别在于逻辑回归采用的是logistical loss,SVM采用的是hinge loss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重
  • SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重
  • 逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算
  • logic 能做的 svm能做,但可能在准确率上有问题,svm能做的logic有的做不了
  • LR适合数据量大的场景(计算速度快),SVM适合数据量较小的场景(只有支持向量决定决策面)。

    2)核函数的选择

  • 特征多用linear(高维空间通常线性可分)

  • 特征少用RBF(高斯核函数对数据进行升维,使数据线性可分,通常时间较长)

    3)线性分类器与非线形分类器

  • 线性分类器可解释性好,计算复杂度较低,不足之处是模型的拟合效果相对弱些。
    LR,贝叶斯分类,单层感知机、线性回归

  • 非线性分类器效果拟合能力较强,不足之处是数据量不足容易过拟合、计算复杂度高、可解释性不好。
    决策树、RF、GBDT、多层感知机

    4)求对偶问题的好处

  • 对偶问题往往更容易求解

  • SVM的对偶问题中输入向量涉及的恰好都是向量间的内积,可自然引入核函数进而推广到非线性分类问题

    5)kkt条件

    最后由kkt条件中的互补条件可求支持向量机 - 图109
    支持向量机 - 图110

    6)核函数

    支持向量机 - 图111是输入空间,支持向量机 - 图112是特征空间,支持向量机 - 图113是输入空间到特征空间的映射,若对所有支持向量机 - 图114,满足:
    支持向量机 - 图115
    则称支持向量机 - 图116为核函数。