机器学习理论之(6):由逻辑回归(对数几率)方法到 SVM;为什么 SVM 是最大间隔分类器

回顾对数几率

  • 在我上一篇文章:https://blog.csdn.net/qq_42902997/article/details/124255802?spm=1001.2014.3001.5501 中讲了逻辑回归的原理和优化目标:
    • 在每一次梯度下降执行的 step 中,我们都需要对每一个样本进行求算,对于样本 x i x_i xi,其标签为 y i y_i yi,他需要求算的参数的向量可以表示为 θ T \theta^T θT(这其中包含了 b b b
    • 我们可以认为 θ T ⋅ x i \theta^T\cdot x_i θTxi 经过 sigmoid 函数处理之后的结果是 y i ^ \hat{y_i} yi^ 即, y i ^ = σ ( θ T ⋅ x i ) \hat{y_i}=\sigma(\theta^T\cdot x_i) yi^=σ(θTxi)
    • 这样的话,我们对于每一个样本的损失可以表示为: L ( y i , y i ^ ) L(y_i, \hat{y_i}) L(yi,yi^) 又因为 y i y_i yi 的取值有两种不同的情况,而我们使用一个式子来统一表示这两种不同情况下的优化目标 L ( y i , y i ^ ) = − y i ^ y i ( 1 − y i ^ ) 1 − y i L(y_i, \hat{y_i})=-\hat{y_i}^{y_i}(1-\hat{y_i})^{1-y_i} L(yi,yi^)=yi^yi(1yi^)1yi,再经过 l o g log log 变换后得到对于一个样本最终的损失函数: L ( y i , y i ^ ) = − y i l o g ( y i ^ ) + ( 1 − y i ) l o g ( 1 − y i ^ )            ( 1 ) L(y_i, \hat{y_i})=-{y_i}log(\hat{y_i})+({1-y_i})log(1-\hat{y_i})~~~~~~~~~~(1) L(yi,yi^)=yilog(yi^)+(1yi)log(1yi^)          (1)
    • 由此,扩展到整个数据集中的 m m m 个样本的总的代价函数可以写成: − 1 m Σ i = 1 m y i l o g ( y i ^ ) + ( 1 − y i ) l o g ( 1 − y i ^ ) + λ 2 m Σ j = 1 n θ j 2            ( 2 ) -\frac{1}{m}\Sigma_{i=1}^m{y_i}log(\hat{y_i})+({1-y_i})log(1-\hat{y_i})+\frac{\lambda}{2m}\Sigma_{j=1}^n\theta_j^2~~~~~~~~~~(2) m1Σi=1myilog(yi^)+(1yi)log(1yi^)+2mλΣj=1nθj2          (2)

    公式中的第二个部分是正则化部分

  • 对数几率的核心是引入了一个 sigmoid 非线性函数,从而可以让线性回归的任务进化成分类任务,sigmoid 函数如下:
    在这里插入图片描述
    • 这里的符号 θ T x \theta^Tx θTx 表示的和上面的意义相同,这里的 z = θ T x z=\theta^Tx z=θTx其实等同于上文中的 y i ^ \hat{y_i} yi^
    • 当这个 x x x 对应的真实标签为 y = 1 y=1 y=1 的时候(正向样本),我们希望 h θ ( x ) h_\theta(x) hθ(x) 的值最好能够无限逼近 1 1 1,换言之,我们希望被 sigmoid 映射之前的 θ T x \theta^Tx θTx 越大越好,即 θ T x > > 0 \theta^Tx>>0 θTx>>0
    • 而当 y = 0 y=0 y=0 的时候(负向样本),我们又希望 h θ ( x ) h_\theta(x) hθ(x) 的值最好能够无限逼近 0 0 0, 即 θ T x < < 0 \theta^Tx<<0 θTx<<0

逻辑回归代价函数的另一视角

  • 再看公式(1)给出的代价函数:

L ( y i , y i ^ ) = − y i l o g ( y i ^ ) + ( 1 − y i ) l o g ( 1 − y i ^ ) L(y_i, \hat{y_i})=-{y_i}log(\hat{y_i})+({1-y_i})log(1-\hat{y_i}) L(yi,yi^)=yilog(yi^)+(1yi)log(1yi^)

  • 如果将式子写的更完整一些,带入 h θ ( x ) h_\theta(x) hθ(x) 的定义,并且去掉下标 i i i (因为我们暂时不研究整个数据集中的所有样本,我们只研究一个样本的情况,暂时不通过 i i i 来区分样本)我们可以得到下面的式子:

L ( y , y ^ ) = − y l o g ( 1 1 + e − θ T x ) + ( 1 − y ) l o g ( 1 − 1 1 + e − θ T x ) = y ( − l o g ( 1 1 + e − θ T x ) ) + ( 1 − y ) l o g ( 1 − 1 1 + e − θ T x )            ( 3 ) L(y, \hat{y})=-{y}log(\frac{1}{1+e^{-\theta^Tx}})+({1-y})log(1-\frac{1}{1+e^{-\theta^Tx}}) \\= {y}(-log(\frac{1}{1+e^{-\theta^Tx}}))+({1-y})log(1-\frac{1}{1+e^{-\theta^Tx}}) ~~~~~~~~~~(3) L(y,y^)=ylog(1+eθTx1)+(1y)log(11+eθTx1)=y(log(1+eθTx1))+(1y)log(11+eθTx1)          (3)

在这个公式(3)中让我们再单独看一下 y = 1 y=1 y=1 y = 0 y=0 y=0 时的情况,看看他们分别想要优化的目标:

  • y = 1 y=1 y=1 的时候 ( θ T x > > 0 ) \theta^Tx>>0) θTx>>0) 通过对公式 (3) 的代入可得结果只剩下前半部分 − l o g ( 1 1 + e − θ T x ) -log(\frac{1}{1+e^{-\theta^Tx}}) log(1+eθTx1),这时将 θ T x = z \theta^Tx=z θTx=z 我们可以得到一条跟随 z z z 值变化的曲线:
    在这里插入图片描述
    • z z z 的值逐渐增大的时候,这个函数的值是越来越趋于 0 0 0
    • 这也就解释了,为什么当 y = 1 y=1 y=1 的时候通常 θ T x \theta^Tx θTx 设置得很大。这是因为在 y = 1 y=1 y=1 的时候整个损失函数 L ( y , y ^ ) L(y,\hat{y}) L(y,y^) 只剩下了 − l o g ( 1 1 + e z ) -log(\frac{1}{1+e^z}) log(1+ez1) 这时候设置很大的 θ T x \theta^Tx θTx 就会导致整个 L ( y , y ^ ) L(y,\hat{y}) L(y,y^) 很小,也就达到了尽可能降低 loss 的目的。
  • 同理,对于 y = 0 y=0 y=0 的情况,你可以看到也会有一条曲线来代表这个时候的 L ( y , y ^ ) L(y,\hat{y}) L(y,y^):
    在这里插入图片描述
    • 也可以根据这个图很直观得到结论,当 y = 0 y=0 y=0 的时候,将 θ T x \theta^Tx θTx 设置很小,因为这个时候也会导致 L ( y , y ^ ) L(y,\hat{y}) L(y,y^) 很小

SVM 的改进

  • SVM 可以看做是在对数几率回归的基础上对损失函数进行了改进,logistic regression 的损失函数可以分为两个部分,也已经在上面论述过了,这里看看 SVM 的设计,他把这两个部分分别处于 1 1 1 − 1 -1 1 之间的值拉到 0 0 0 了,硬生生 y = 1 y=1 y=1 y = 0 y=0 y=0 的情况之间挖出了一道鸿沟。
    在这里插入图片描述

  • 在这种情况下如何用数学形式表示 SVM 的损失函数呢?

  • 我们把原先公式 (3) 中的损失分成前后两个部分,前面的部分写成 c o s t 1 ( z )    代 替    − l o g ( 1 1 + e − z )            ( 4 ) cost_1(z) ~~代替~~-log(\frac{1}{1+e^{-z}})~~~~~~~~~~(4) cost1(z)    log(1+ez1)          (4)

  • 后面的部分写成:
    c o s t 0 ( z )    代 替    − l o g ( 1 − 1 1 + e − z )            ( 5 ) cost_0(z)~~代替~~-log(1-\frac{1}{1+e^{-z}})~~~~~~~~~~(5) cost0(z)    log(11+ez1)          (5)

  • c o s t cost cost 的下标分别表示了 y = 1 y=1 y=1 ( c o s t 1 cost_1 cost1) 或者 y = 0 y=0 y=0 ( c o s t 0 cost_0 cost0) 的情况,所以对于一个样本 x x x,SVM 损失可以由 logistic regression 的损失演变而来,如下表示:
    L ( y , y ^ ) = y c o s t 1 ( θ T x ) + ( 1 − y ) c o s t 0 ( θ T x )            ( 6 ) L(y, \hat{y})={y}cost_1(\theta^Tx)+({1-y})cost_0(\theta^Tx)~~~~~~~~~~(6) L(y,y^)=ycost1(θTx)+(1y)cost0(θTx)          (6)

  • 进一步我们可以得到 SVM 表示下的整个样本集的代价可以表示为:
    1 m Σ i = 1 m y i c o s t 1 ( θ T x i ) + ( 1 − y i ) c o s t 0 ( θ T x i ) + λ 2 m Σ j = 1 n θ j 2            ( 7 ) \frac{1}{m}\Sigma_{i=1}^m{y_i}cost_1(\theta^Tx_i)+(1-y_i)cost_0(\theta^Tx_i)+\frac{\lambda}{2m}\Sigma_{j=1}^n\theta_j^2~~~~~~~~~~(7) m1Σi=1myicost1(θTxi)+(1yi)cost0(θTxi)+2mλΣj=1nθj2          (7)

  • 对于这个式子,我们采用一个 C C C 参数来控制第一项的比重,从而去掉正则化中的 λ \lambda λ m m m

  • C Σ i = 1 m y i c o s t 1 ( θ T x i ) + ( 1 − y i ) c o s t 0 ( θ T x i ) + 1 2 Σ j = 1 n θ j 2            ( 8 ) C\Sigma_{i=1}^m{y_i}cost_1(\theta^Tx_i)+(1-y_i)cost_0(\theta^Tx_i)+\frac{1}{2}\Sigma_{j=1}^n\theta_j^2~~~~~~~~~~(8) CΣi=1myicost1(θTxi)+(1yi)cost0(θTxi)+21Σj=1nθj2          (8)

  • S V M SVM SVM 还有一个特性,那就是最后不会输出一个概率值,而是更加干脆的 0 0 0 或者 1 1 1

为什么 SVM 叫最大间隔分类器

在这里插入图片描述

  • 在 SVM 中由于我们采用了更加严格的措施,即不只是希望 θ T x > = 0 \theta^Tx >=0 θTx>=0 就分类其为正样本,我们希望判别的标准严格到 θ T x > = 1 \theta^Tx>=1 θTx>=1; 同样的,对于负向的样本,我们也希望能够是判别的标准严格到 θ T x < = − 1 \theta^Tx<=-1 θTx<=1 而不只是小于 0 0 0

  • 所以我们把这个区别于 logistic regression 作为 SVM 的约束条件:

    θ T x > = 1 ,    i f    y i = 1 \theta^Tx>=1, ~~if~~ y_i=1 θTx>=1,  if  yi=1
    θ T x < = − 1 ,    i f    y i = 0 \theta^Tx<=-1, ~~if~~ y_i=0 θTx<=1,  if  yi=0

  • 通过公式 (8) 我们可以知道,当我们再 SVM 的优化过程中选用一个特别大的 C C C 那么我们的优化过程就会期望第一项的值 Σ i = 1 m y i c o s t 1 ( θ T x i ) + ( 1 − y i ) c o s t 0 ( θ T x i ) \Sigma_{i=1}^m{y_i}cost_1(\theta^Tx_i)+(1-y_i)cost_0(\theta^Tx_i) Σi=1myicost1(θTxi)+(1yi)cost0(θTxi) 尽可能地小,越接近 0 0 0 越好,因为只有这样,整个 loss 的值才不会很大,才能符合优化的目标。

  • 这种情况下我们假设我们达到了目的,使得 C C C 后面的项足够小,假设达到了 0 0 0,所以整个损失函数可以简写成:
    C ⋅ 0 + 1 2 Σ j = 1 n θ j 2            ( 9 ) C\cdot 0+\frac{1}{2}\Sigma_{j=1}^n\theta_j^2~~~~~~~~~~(9) C0+21Σj=1nθj2          (9)

  • 因此优化目标变成了最小化 1 2 Σ j = 1 n θ j 2 \frac{1}{2}\Sigma_{j=1}^n\theta_j^2 21Σj=1nθj2而这个部分就是最大间隔的保证 下面我们来详细分析一下。

向量点积

在这里插入图片描述

  • 对于两个向量 u ⃗ = [ u 1 , u 2 ] T , v ⃗ = [ v 1 , v 2 ] T \vec{u}=[u_1, u_2]^T, \vec{v}=[v_1,v_2]^T u =[u1,u2]T,v =[v1,v2]T
  • 这两个向量的点积可以看成是 v ⃗ \vec{v} v 在向量 u ⃗ \vec{u} u 上的投影,投影的长度为 p p p u ⃗ \vec{u} u 的长度可以表示成 ∣ ∣ u ∣ ∣ ||u|| u 所以两个向量的点积可以表示成: u ⃗ ⋅ v ⃗ = p ⋅ ∣ ∣ u ∣ ∣ = u 1 v 1 + u 2 v 2 \vec{u} \cdot \vec{v}=p\cdot ||u|| = u_1v_1 + u_2v_2 u v =pu=u1v1+u2v2

根据点积这个预备知识,要达到 m i n θ 1 2 Σ j = 1 n θ j 2 min_\theta\frac{1}{2}\Sigma_{j=1}^n\theta_j^2 minθ21Σj=1nθj2 相当于 m i n θ 1 2 Σ j = 1 n ∣ ∣ θ j ∣ ∣ 2 min_\theta\frac{1}{2}\Sigma_{j=1}^n||\theta_j||^2 minθ21Σj=1nθj2 并且原来的约束条件:

θ T x > = 1 ,    i f    y i = 1 \theta^Tx>=1, ~~if~~ y_i=1 θTx>=1,  if  yi=1
θ T x < = − 1 ,    i f    y i = 0 \theta^Tx<=-1, ~~if~~ y_i=0 θTx<=1,  if  yi=0
就可以写作:
p i ⋅ ∣ ∣ θ ∣ ∣ > = 1 ,    i f    y i = 1 p_i\cdot ||\theta|| >=1,~~if~~ y_i=1 piθ>=1,  if  yi=1
p i ⋅ ∣ ∣ θ ∣ ∣ < = − 1 ,    i f    y i = 0 p_i\cdot ||\theta|| <=-1,~~if~~ y_i=0 piθ<=1,  if  yi=0

为什么 SVM 不选择小的 margin

  • 假设现在有一堆点需要被分开(红色和蓝色)
  • 假设有一个可选的决策边界(绿色直线),它的 margin 非常小,下面我们来看为什么 SVM 不会选择这种情形下的决策。

再补充一个小知识, θ T \theta^T θT 这个向量是与决策边界垂直的。例如如果我有一个超平面 y = − x y=-x y=x 作为决策边界(这里为了简化暂时使用截距为 0 0 0 θ 0 = 0 \theta_0=0 θ0=0) 的假设情况), y = − x y=-x y=x 还可以写作: x + y = 0 x+y=0 x+y=0 所以他的 θ T \theta^T θT 向量表示为 θ T = [ 1 , 1 ] \theta^T = [1, 1] θT=[1,1]
所以综上所述,决策边界是一条斜率为 − 1 -1 1 的直线,而对应的 θ T \theta^T θT 向量确实指向右斜上方的,如下图所示:
在这里插入图片描述

  • 继续看当前的这种情况,根据我们上面的点积已有的知识,我们可以得到距离决策边界最近的两个点的损失可以分别表示为:
    • p 1 ⋅ ∣ ∣ θ ∣ ∣ p_1\cdot ||\theta|| p1θ
    • p 2 ⋅ ∣ ∣ θ ∣ ∣ p_2\cdot ||\theta|| p2θ
      在这里插入图片描述
  • 而由于这个 margin 非常小,就意味着 p 1 p_1 p1 p 2 p_2 p2 非常小,别忘了我们上面的约束条件:

    p i ⋅ ∣ ∣ θ ∣ ∣ > = 1 ,    i f    y i = 1 p_i\cdot ||\theta|| >=1,~~if~~ y_i=1 piθ>=1,  if  yi=1
    p i ⋅ ∣ ∣ θ ∣ ∣ < = − 1 ,    i f    y i = 0 p_i\cdot ||\theta|| <=-1,~~if~~ y_i=0 piθ<=1,  if  yi=0

  • 因此如果 p 1 p_1 p1 p 2 p_2 p2 非常小,我们就必须保证 ∣ ∣ θ ∣ ∣ ||\theta|| θ 很大才能满足结果 > = 1 >=1 >=1 或者 < = − 1 <=-1 <=1 的要求
  • ∣ ∣ θ ∣ ∣ ||\theta|| θ 很大就意味着违反了优化目标 m i n θ 1 2 Σ j = 1 n θ j 2 min_\theta\frac{1}{2}\Sigma_{j=1}^n\theta_j^2 minθ21Σj=1nθj2
  • 所以为了不使得优化目标和约束条件发生矛盾,我们就得保证决策边界的 margin 比较大。因此下面我们看一个正确的情况,并且进行相应的分析。

当 SVM 选择合理的 margin

在这里插入图片描述

  • 在这个情境下,假设 margin 的直线可以用 x = 0 x=0 x=0 来表示;也就是可以表示为 x + 0 y = 0 x+0y=0 x+0y=0 所以对应的向量 θ T = [ 1 , 0 ] \theta^T = [1,0] θT=[1,0]

  • 这个时候对于两个离决策边界最近的正负样本的损失分别为:
    在这里插入图片描述

    • p 1 ⋅ ∣ ∣ θ ∣ ∣ p_1\cdot ||\theta|| p1θ
    • p 2 ⋅ ∣ ∣ θ ∣ ∣ p_2\cdot ||\theta|| p2θ
    • 而由于 p 1 p_1 p1, p 1 p_1 p1 相对较大,所以 θ T \theta^T θT 可以在保证 ∣ ∣ θ ∣ ∣ ||\theta|| θ 的情况下达到约束条件:

    p i ⋅ ∣ ∣ θ ∣ ∣ > = 1 ,    i f    y i = 1 p_i\cdot ||\theta|| >=1,~~if~~ y_i=1 piθ>=1,  if  yi=1
    p i ⋅ ∣ ∣ θ ∣ ∣ < = − 1 ,    i f    y i = 0 p_i\cdot ||\theta|| <=-1,~~if~~ y_i=0 piθ<=1,  if  yi=0

  • 因此对比两种不同的 SVM 决策边界,由于第二种可以在 ∣ ∣ θ ∣ ∣ ||\theta|| θ 较小的情况下保证约束条件的成立,所以 SVM 会选择大的 margin 的分类策略。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

暖仔会飞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值