传统机器学习-SVM(吴恩达机器学习笔记)补充

优化目标

从logistic回归引发SVM

logistic回归:

     

     模型: h_\theta(x)=1/(1+e^{-\theta^Tx})

              若y=1,我们希望h_\theta(x)\approx 1,即\theta^Tx\gg 0

              若y=0,我们希望h_\theta(x)\approx 0,即\theta^Tx\ll 0

     单个样本对损失函数的贡献:

              -(ylog(h_{\theta}x)+(1-y)log(1-h_{\theta}(x))) \\ =-ylog\frac{1}{1+e^{-\theta^Tx}}-(1-y)log(1-\frac{1}{1+e^{-\theta^Tx}})

     当y=1时(我们希望\theta^Tx\gg 0),下图黑色的曲线。现在对logistic回归的代价函数(红色方框部分)做一点修改,将其中的曲线(黑色)改为两段直线(紫色),新的部分在大于等于1时,贡献为0,在小于1时大于0(不用太关注下图斜线的斜率)。

          

     当y=0时(我们希望\theta^Tx\ll 0),下图黑色的曲线。现在对logistic回归的代价函数(红色方框部分)做一点修改,将其中的曲线(黑色)改为两段直线(紫色),新的部分在小于-1时,贡献为0,在大于-1时大于等于0(不用太关注下图斜线的斜率)。

          

      logistic回归损失函数如下:
              J(\theta) = \frac{1}{m}\sum_{i=1}^{m}[y(-log(h_{\theta}x^{(i)}))+(1-y)(-log(1-h_{\theta}(x^{(i)})))] + \frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2

      过渡到SVM损失函数:       

              J(\theta) = \frac{1}{m}\sum_{i=1}^{m}[ycost_1(\theta^Tx^{(i)})+(1-y)cost_0(\theta^Tx^{(i)})] + \frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2

     依据SVM的惯用写法,将上式改为

              J(\theta) =C\sum_{i=1}^{m}[ycost_1(\theta^Tx^{(i)})+(1-y)cost_0(\theta^Tx^{(i)})] + \frac{1}{2}\sum_{j=1}^n\theta_j^2         

     还有一点与logitsic区别的是,原本的SVM不输出概率,直接输出分类结果:

              h_\theta(x)=\left\{\begin{matrix} 1& if \ \theta^Tx \gg 0\\ 0 & otherwise \end{matrix}\right.    

直观上对大间隔的理解

     \min_\theta C\sum_{i=1}^{m}[ycost_1(\theta^Tx^{(i)})+(1-y)cost_0(\theta^Tx^{(i)})] + \frac{1}{2}\sum_{j=1}^n\theta_j^2

     若y=1,我们期待\theta^Tx\geqslant 1,而不是仅仅\theta^Tx\geqslant 0

     若y=1,我们期待\theta^Tx\leqslant -1,而不是仅仅\theta^Tx\leqslant 0

     这就相当于在SVM构建了一个安全因子,一个安全间距。

      当C很大的时候,第一部分要尽可能小(接近于0),损失函数才会小,当对于任意一个正样本(y=1)都恒有\theta^Tx^{(i)}\geqslant 1,当对于任意一个负样本(y=0)都恒有\theta^Tx^{(i)}\leqslant -1,则我们的优化目标就变为(大间隔分类器,C很大)。

      min_\theta\frac{1}{2}\theta_j^2 \\ \begin{aligned} s.t. \ \theta^Tx^{(i)} &\geqslant 1, \ \ \ if \ y^{(i)}=1 \\ \theta^Tx^{(i)} &\leqslant -1, \ if \ y^{(i)}=0 \end{aligned}

      当C很大的时候,该算法对异常点很敏感。

大间隔分类器的数学原理

     min_\theta\frac{1}{2}\theta_j^2 \rightarrow min_\theta\frac{1}{2}||\theta||^2 \\ \begin{aligned} s.t. \ \theta^Tx^{(i)} & \geqslant 1, \ \ \ if \ y^{(i)}=1 \\ \theta^Tx^{(i)}& \leqslant -1, \ if \ y^{(i)}=0 \end{aligned}

     下面我们来感受一下\theta^Tx^{(i)}是个啥,我们忽略\theta_0,即假设\theta_0=0,若\theta是二维向量,如下图:

       

       \begin{aligned} \theta^Tx^{(i)} & =p^{(i)}||\theta|| \\ & = \theta_1x_1^{(i)} + \theta_2x_2^{(i)}\end{aligned}  ,其中p^{(i)}是向量x^{(i)}在向量\theta上的投影,可正可负。

       则,优化目标可转化成,从中我们也可以看出支撑向量的概念,因为该方法不像之前的logistic回归一样,损失函数是对整个样本进行求和的,此处只针对参数的平方和(带约束条件),\theta的模要最小且还要保证满足约束条件,故在参数给定的情况下,\theta模的最小值由距离决策边界最近的样本(支撑向量)决定(因为只要最近的都满足约束条件,则所有的均满足):

        \left.\begin{matrix} min_\theta\frac{1}{2}\theta_j^2 \rightarrow min_\theta\frac{1}{2}||\theta||^2 \\ \begin{aligned} s.t. \ \theta^Tx^{(i)} & \geqslant 1, \ \ \ if \ y^{(i)}=1 \\ \theta^Tx^{(i)}& \leqslant -1, \ if \ y^{(i)}=0 \end{aligned} \end{matrix}\right| \Rightarrow \left.\begin{matrix} min_\theta\frac{1}{2}\theta_j^2 \rightarrow min_\theta\frac{1}{2}||\theta||^2 \\ \begin{aligned} s.t. \ p^{(i)}||\theta|| & \geqslant 1, \ \ \ if \ y^{(i)}=1 \\ p^{(i)}||\theta|| & \leqslant -1, \ if \ y^{(i)}=0 \end{aligned} \end{matrix}\right|

       其中p^{(i)}依旧是向量x^{(i)}在向量\theta上的投影,且设\theta_0 = 0\theta_0 = 0,则决策边界必过原点)。我们来感受一下SVM决策边界的选择,即为啥会选择右图:

        

        若选左图:决策边界是绿色的线,其法向量是 \theta 向量,则正样本在x^{(1)}\theta上的投影p^{(1)}就会非常小,同理负样本的p^{(2)}的绝对值也会非常小,这样要保证每一个样本都满足约束条件,则\theta必须相对较大,而我们目标是冲着最小化\theta的二范数去的,故矛盾。

        若选右图:决策边界是绿色的线,其法向量是 \theta 向量,则正样本在x^{(1)}\theta上的投影p^{(1)}就会相对较大,同理负样本的p^{(2)}的绝对值也会相对较大,这样要保证每一个样本都满足约束条件,则\theta相对而言可以小,且我们目标是冲着最小化\theta的二范数去的,完美。         

发布了46 篇原创文章 · 获赞 1 · 访问量 5031

猜你喜欢

转载自blog.csdn.net/qq_xuanshuang/article/details/105361122