机器学习——SVM支持向量机

重新学习一下机器学习十大经典算法,该文章参考https://zhuanlan.zhihu.com/p/77750026进行梳理

  1. 支持向量
    1.1 线性可分
    在二维空间上,两类点被一条直线完全分开叫做线性可分。

    严格的数学定义:
    D 1 D_1 D1 D 2 D_2 D2 n n n维欧式空间中的两个点集。如果存在 n n n维向量 w w w和实数 b b b,使得所有属于 D i D_i Di的点 x i x_i xi都有 w x i + b < 0 wx_i+b<0 wxi+b<0,则我们称 D 0 D_0 D0 D 1 D_1 D1线性可分。
    1.2 最大间隔超平面
    从二维空间扩展到多维空间时,将 D 0 D_0 D0 D 1 D_1 D1分开的 w x i + b = 0 wx_i+b=0 wxi+b=0就变成了超平面。
    a) 两类样本分别分割在改超平面的两侧
    b) 两侧距离超平面最近的样本点到超平面的距离被最大化了
    1.3 支持向量
    样本中距离超平面最近的点被称为支持向量。

    1.4 SVM最优化问题
    SVM想要的就是找到各类样本点到超平面的距离最远,也就是找到最大的间隔超平面 w x i + b = 0 wx_i+b=0 wxi+b=0
    二维空间点到直线 A x + B y + C = 0 Ax+By+C=0 Ax+By+C=0的距离公式是: ∣ A x + B y + C ∣ A 2 + B 2 \frac{|Ax+By+C|}{\sqrt{A^2+B^2}} A2+B2 Ax+By+C
    扩展到 n n n维空间后,点 x = ( x 1 , x 2 . . . . . . x n ) x = (x_1, x_2...... x_n) x=(x1,x2......xn)到直线 w T x + b = 0 w^Tx+b=0 wTx+b=0的距离为 d = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ d=\frac{|w^Tx+b|}{||w||} d=wwTx+b,其中 ∣ ∣ w ∣ ∣ = w 1 2 + w 2 2 . . . . . . + w n 2 ||w|| = \sqrt{w_1^2 + w_2^2......+ w_n^2} w=w12+w22......+wn2
    如下图所示,支持向量到超平面的距离为 d d d,其他点到超平面的距离大于 d d d

    于是,我们可以得到一个公式:
    f ( x ) = { w T x + b ∣ ∣ w ∣ ∣ ≥ d , y = 1 w T x + b ∣ ∣ w ∣ ∣ ≤ d , y = − 1 f(x)=\left\{ \begin{aligned} \frac{w^Tx+b}{||w||}\ge d, && y=1\\ \frac{w^Tx+b}{||w||}\le d , && y=-1\\ \end{aligned} \right. f(x)=wwTx+bd,wwTx+bd,y=1y=1
    稍作转化可以得到
    f ( x ) = { w T x + b ∣ ∣ w ∣ ∣ d ≥ 1 , y = 1 w T x + b ∣ ∣ w ∣ ∣ d ≤ − 1 , y = − 1 f(x)=\left\{ \begin{aligned} \frac{w^Tx+b}{||w||d}\ge 1, && y=1\\ \frac{w^Tx+b}{||w||d}\le -1 , && y=-1\\ \end{aligned} \right. f(x)=wdwTx+b1,wdwTx+b1,y=1y=1
    ∣ ∣ w ∣ ∣ d ||w||d wd是正数,为了便于计算令其为1(对其推导无影响),故:
    f ( x ) = { w T x + b ≥ 1 , y = 1 w T x + b ≤ − 1 , y = − 1 f(x)=\left\{ \begin{aligned} {w^Tx+b}\ge 1, && y=1\\ {w^Tx+b}\le -1 , && y=-1\\ \end{aligned} \right. f(x)={wTx+b1,wTx+b1,y=1y=1
    将两个方程合并:
    y ( w T x + b ) ≥ 1 y(w^Tx+b)\ge1 y(wTx+b)1
    至此,我们就得到最大间隔超平面的上下两个超平面

    由以上公式可得: d = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ = y ( w T x + b ) ∣ ∣ w ∣ ∣ d=\frac{|w^Tx+b|}{||w||}=\frac{y(w^Tx+b)}{||w||} d=wwTx+b=wy(wTx+b)
    最大化这个距离 m a x 2 ∗ y ( w T x + b ) ∣ ∣ w ∣ ∣ max2* \frac{y(w^Tx+b)}{||w||} max2wy(wTx+b) m a x 2 ∣ ∣ w ∣ ∣ max\frac2{||w||} maxw2 m i n ∣ ∣ w ∣ ∣ 2 min\frac{||w||}2 min2w
    m i n ∣ ∣ w ∣ ∣ 2 2 s . t . y i ( w T x i + b ) ≥ 1 \begin{aligned} min\frac{||w||^2}2&&s.t.&& y_i(w^Tx_i+b)\ge1 \end{aligned} min2w2s.t.yi(wTxi+b)1
  2. 对偶问题
    2.1 拉格朗日乘数法
    2.2.1 等式约束化问题
    m i n f ( x 1 , x 2 … … x n ) s . t . h k ( x 1 , x 2 … … x n ) = 0 , k = 1 , 2 … … l \begin{aligned} minf(x_1, x_2……x_n)&&s.t.&& h_k(x_1, x_2……x_n)=0,k=1,2……l \end{aligned} minf(x1,x2xn)s.t.hk(x1,x2xn)=0k=1,2l L ( x , λ ) = f ( x ) + Σ k = 1 l λ k h k ( x ) \begin{aligned} L(x,λ)=f(x)+Σ^l_{k=1}λ_kh_k(x) \end{aligned} L(x,λ)=f(x)+Σk=1lλkhk(x)函数L称为拉格朗日函数,λ为拉格朗日乘子,对x于λ分别求偏导,计算可能的极值点。
    2.2.2 不等式约束化问题
    引入松弛变量,松弛变量也是优化变量。
    m i n f ( x ) = ∣ ∣ w ∣ ∣ 2 2 s . t . g i ( w ) = 1 − y i ( w T x i + b ) ≤ 0 \begin{aligned} minf(x)=\frac{||w||^2}2&&s.t.&& g_i(w)=1-y_i(w^Tx_i+b)\le0 \end{aligned} minf(x)=2w2s.t.gi(w)=1yi(wTxi+b)0引入松弛变量 a i 2 a^2_i ai2得到 h i ( w , a i ) = g i ( w ) + a i 2 = 0 h_i(w, a_i)=g_i(w)+a^2_i=0 hi(w,ai)=gi(w)+ai2=0
    由此,我们将不等式约束转换成等式约束,并得到拉格朗日函数: L ( w , λ , a ) = f ( x ) + Σ i = 1 n λ i h i ( x ) = f ( w ) + Σ i = 1 n λ i [ g i ( w ) + a i 2 ] λ i ≥ 0 \begin{aligned} L(w,λ,a)=f(x)+Σ^n_{i=1}λ_ih_i(x)\\ =f(w)+Σ^n_{i=1}λ_i[g_i(w)+a^2_i]&&λ_i\ge0 \end{aligned} L(w,λ,a)=f(x)+Σi=1nλihi(x)=f(w)+Σi=1nλi[gi(w)+ai2]λi0分别对 w , λ , a w,λ,a w,λ,a求偏导,其中 Σ i = 1 n λ i a i 2 ≥ 0 Σ^n_{i=1}λ_ia^2_i\ge0 Σi=1nλiai20,问题转化为 L ( w , λ ) = f ( x ) + Σ i = 1 n λ i g i ( w ) \begin{aligned} L(w,λ)=f(x)+Σ^n_{i=1}λ_ig_i(w) \end{aligned} L(w,λ)=f(x)+Σi=1nλigi(w)故我们的最优化问题转化为 m i n w m a x λ L ( w , λ ) min_wmax_λL(w,λ) minwmaxλL(w,λ)
    考虑两种情况: m a x λ L ( w , λ ) = { ∞ g i ( w ) ≥ 0 ∣ ∣ w ∣ ∣ 2 2 g i ( w ) ≤ 0 max_λL(w,λ)=\left\{ \begin{aligned} \infty&&g_i(w)\ge0\\ \frac{||w||^2}2&&g_i(w)\le0 \end{aligned} \right. maxλL(w,λ)=2w2gi(w)0gi(w)0所以, m i n ( ∞ , ∣ ∣ w ∣ ∣ 2 2 ) = ∣ ∣ w ∣ ∣ 2 2 min(\infty,\frac{||w||^2}2)=\frac{||w||^2}2 min(,2w2)=2w2,所以转化后的式子和原来是一样的。
    2.2 强对偶性
    对偶问题是指 m i n w m a x λ L ( w , λ ) min_wmax_λL(w,λ) minwmaxλL(w,λ)变成了 m a x λ m i n w L ( w , λ ) max_λmin_wL(w,λ) maxλminwL(w,λ)
    强对偶是指上述两式子相等。
  3. SVM优化
    1)构造拉格朗日函数
    2)利用强对偶性转化对 w w w b b b求偏导
    3)将求导结果带回原函数,得到 m a x λ [ Σ j = 1 n λ i − 1 2 Σ i = 1 n Σ j = 1 n λ i λ j y i y j ( x i . x j ) ] s . t . Σ i = 1 n λ i y i = 0 λ i ≥ 0 \begin{aligned} max_λ[Σ^n_{j=1}λ_i-\frac12Σ^n_{i=1}Σ^n_{j=1}λ_iλ_jy_iy_j(x_i.x_j)]&&s.t.&&Σ^n_{i=1}λ_iy_i=0&&λ_i\ge0 \end{aligned} maxλ[Σj=1nλi21Σi=1nΣj=1nλiλjyiyj(xi.xj)]s.t.Σi=1nλiyi=0λi0
    二次规划问题,问题规模正比于训练样本数,常用SMO(序列最小优化算法)求解。其核心思想非常简单:每次只优化一个参数,其他参数先固定住,仅求当前这个优化参数的极值。由于 Σ i = 1 n λ i y i = 0 Σ^n_{i=1}λ_iy_i=0 Σi=1nλiyi=0,每次必须优化两个参数,固定其他参数
    4)多次迭代至收敛,求解出最优λ
    5)求解 w w w b b b,得到最大分割超平面公式
  4. 软间隔
    4.1 解决问题
    在实际应用中,完全线性可分的样本是很少的,如果遇到了不能够完全线性可分的样本,我们应该怎么办?比如下面这个:
    于是我们就有了软间隔,相比于硬间隔的苛刻条件,我们允许个别样本点出现在间隔带里面,比如:
    我们允许部分样本点不满足约束条件: 1 − y i ( w T x i + b ) ≤ 0 1-y_i(w^Tx_i+b)\le0 1yi(wTxi+b)0为了度量这个间隔软到何种程度,我们为每个样本引入一个松弛变量 ζ i \zeta_i ζi,令 ζ i ≥ 0 \zeta_i\ge0 ζi0,且 1 − y i ( w T x i + b ) − ζ i ≤ 0 1-y_i(w^Tx_i+b)-\zeta_i\le0 1yi(wTxi+b)ζi0,如下图所示:
    求解步骤与上述相似
    这边要注意一个问题,在间隔内的那部分样本点也是支持向量。
  5. 核函数
    5.1 线性不可分
    我们刚刚讨论的硬间隔和软间隔都是在说样本的完全线性可分或者大部分样本点的线性可分。但我们可能会碰到的一种情况是样本点不是线性可分的,比如:
    这种情况的解决方法就是:将二维线性不可分样本映射到高维空间中,让样本点在高维空间线性可分,比如:

    对于在有限维度向量空间中线性不可分的样本,我们将其映射到更高维度的向量空间里,再通过间隔最大化的方式,学习得到支持向量机,就是非线性 SVM。
    我们用 x 表示原来的样本点,用 φ ( x ) φ(x) φ(x)表示 x 映射到特征新的特征空间后到新向量。那么分割超平面可以表示为: f ( x ) = w φ ( x ) + b f(x)=wφ(x)+b f(x)=wφ(x)+b
    5.2 核函数的作用
    我们不禁有个疑问:只是做个内积运算,为什么要有核函数的呢?
    这是因为低维空间映射到高维空间后维度可能会很大,如果将全部样本的点乘全部计算好,这样的计算量太大了。
    但如果我们有这样的一核函数 k ( x , y ) = ( φ ( x ) , φ ( y ) ) k(x,y)=(φ(x),φ(y)) k(x,y)=(φ(x),φ(y)) x x x y y y在特征空间的内积等于它们在原始样本空间中通过函数 k ( x , y ) k(x,y) k(x,y)计算的结果,我们就不需要计算高维甚至无穷维空间的内积了。
    5.3 常见核函数
    我们常用核函数有:
    线性核函数 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 ) d k(x_i,x_j)=(x_i^Tx_j)^d k(xi,xj)=(xiTxj)d
    高斯核函数 k ( x i , x j ) = e x p ( − ∣ ∣ x i − x j ∣ ∣ 2 δ 2 ) k(x_i,x_j)=exp(-\frac{||x_i-x_j||}{2\delta^2}) k(xi,xj)=exp(2δ2xixj)
    这三个常用的核函数中只有高斯核函数是需要调参的。
  6. 优缺点
    6.1 优点
    1)有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题;
    2)能找出对任务至关重要的关键样本(即:支持向量);
    3)采用核技巧之后,可以处理非线性分类/回归任务;
    4)最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。
    6.2 缺点
    1)训练时间长。当采用 SMO 算法时,由于每次都需要挑选一对参数,因此时间复杂度为 O ( N 2 ) O(N^2) O(N2) ,其中 N 为训练样本的数量;
    2)当采用核技巧时,如果需要存储核矩阵,则空间复杂度为 O ( N 2 ) O(N^2) O(N2)
    3)模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。
    因此支持向量机目前只适合小批量样本的任务,无法适应百万甚至上亿样本的任务。
  7. 适用场景
    SVM在很多数据集上都有优秀的表现。
    相对来说,SVM尽量保持与样本间距离的性质导致它抗攻击的能力更强。
    和随机森林一样,这也是一个拿到数据就可以先尝试一下的算法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值