zoukankan      html  css  js  c++  java
  • 初识支持向量机

    支持向量机(Support Vector Machine)

    ​ 支持向量机(SVM)为监督式机器学习方法的一种,广泛地应用于统计分类、回归分析、二类问题(binary classification)的模式识别中,其最大特点是既能够最小化经验损失(也叫做经验风险、或者经验误差),同时又能够最大化几何间距(分类器的置信度),因此SVM又被称为最大边缘区(间距)的分类器。

    ​ 机的意思就是算法,机器学习领域里面常常用“机”这个字表示算法。支持向量意思就是数据集种的某些点,位置比较特殊,我们找这条直线的时候,一般就看聚集在一起的两类数据,它们各自的最边缘位置的点,也就是最靠近划分直线的那几个点,而其他点对这条直线的最终位置的确定起不了作用,故称这些点为“支持点”(即有用的点),但是在数学上,没这种说法,数学里的点,又可以叫向量,比如二维点(x,y)就是二维向量,三维度的就是三维向量(x,y,z)。所以“支持点”改叫“支持向量”。

    目标优化

    ​ 我们从逻辑回归来引入SVM,假设函数为:(h_ heta(x)=frac {1}{1+e^{- heta^Tx}})

    如果y=1,我们希望假设函数计算值(h_ heta(x)approx 1),从下图可以看出( heta^Tx)需要远大于0,

    同样y=0,我们希望假设函数计算值(h_ heta(x)approx 0),从下图可以看出( heta^Tx)需要远小于0。

    ![1.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhcvovssz8j209w06t0ss.jpg)
    代价函数为:$-(ylogh_ heta(x)+(1-y)log(1-h_ heta(x)))$=$-ylogfrac{1}{1+e^{- heta^Tx}}-(1-y)log(1-frac{1}{1+e^{- heta^Tx}})$
    ![2.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhcvow5iguj207f067q30.jpg) ![3.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhcvow9y7mj207o06b0ss.jpg)
    图中的蓝色折线(先不用考虑斜线的斜率)在不同y取值下表示cost\_1,cost\_0。

    逻辑回归代价函数:

    ![4.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhcvownamej20jx01tq2z.jpg)
    同时删除两侧的$frac{1}{m}$,对于优化参数theta效果不发生任何变化,同时将参数lambda删除,以$C=frac{1}{lambda}$补充有:![5.jpg](http://wx2.sinaimg.cn/mw690/7b8d2108gy1fhcvox5uqqj20hp01yjrd.jpg)

    大间距分类器的直观表现

    ​ 前面曾提到SVM又称为大间距分类器(Large Margin),下式为支持向量机的代价函数,分别画出对z的代价函数cost1(z)、cost0(z)(如上图蓝色折线)。

    ![5.jpg](http://wx2.sinaimg.cn/mw690/7b8d2108gy1fhcvox5uqqj20hp01yjrd.jpg)

    6.jpg 7.jpg

    若y=1,欲代价函数最小,则从图中有$z= heta^Tx$需要大于等于1,y=0则需要小于等于-1。*(注意这里不再是之前逻辑递归中仅大于等于0或小于等于0)*现在将代价函数中的常数值C设置为非常大的数如:100,000,这时最小化SVM的代价函数时应该尽量使前一项中的计算结果为零,此时就应该让$z= heta^Tx$需要大于等于1,或小于等于-1。

    ​ 下面通过一个线性可分的案例加以说明SVM的决策边界:

    ![8.jpg](http://wx2.sinaimg.cn/mw690/7b8d2108gy1fhcvoyunm3j20be08g76r.jpg)
    ​ 异常点(outliers)在大间距分类器的影响:
    ![9.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhcvoz9yqzj20fa07bmxl.jpg)
    **大间距分类器背后的数学原理**

    ​ 首先,两个向量的内积(Inner Product),设向量为:10.jpg向量u的模(范数)表示为:(left | u ight |=length of vetor = sqrt{u_1^2+u_2^2})(u^Tv=p*left | u ight |),其中p表示v在u上的投影长度(其值可以为负数)。

    SVM的决策边界

    ​ 在SVM的代价函数中常数C为很大的情况下(如:C=100,000),最小化代价函数为(min_ hetafrac{1}{2}sum_{j=1}^{n} heta_j^2),s.t.(约束条件-subject to)为:11.jpg

    根据上面对于向量长度的定义,1.jpg

    方便起见,我们设( heta_0=0)(反应为在坐标轴上的截距),参数( heta = [ heta_1 heta_2]),则约束条件中德( heta^Tx)可以表示为:2.jpg。其中(p^{(i)})为x(i)在参数theta上的投影长度,如下图所示:

    ![3.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhdixe2cngj208i05n3yj.jpg)
    ​ 现在我们再来看看SVM的决策边界问题,数据样本如图所示![4.jpg](http://wx1.sinaimg.cn/mw690/7b8d2108gy1fhdixe9hdcj209105dwem.jpg)

    ​ 绿色直线可能是两侧数据的分界线,但因为间距margin太小了,最小化SVM代价函数时是不会选择它的,具体原因如下,蓝色的参数theta线与分界线成90度关系,是绿色决策界的参数theta向量。如前所述,为简化方便theta_0的值设为零,则两条线都过零点。

    ![5.jpg](http://wx4.sinaimg.cn/mw690/7b8d2108gy1fhdixewuflj2095057dge.jpg)
    ​ 现在任意选取两个点$x^{(1)}$,$x^{(2)}$,做其在参数theta上的投影,长度分别用红色与粉色标明,$p^{(1)}$,$p^{( 2)}$表示,从中能看出投影的长度p很小,而前述的约束条件s.t.中应该$z= heta^Tx$需要大于等于1,y=0则需要小于等于-1,因此theta的范数就会很大很大,这与最小话代价函数$min_ hetafrac{1}{2}sum_{j=1}^{n} heta_j^2$相悖。
    ![6.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhdixf5qraj209105jgmq.jpg) ![7.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhdixfm42xj20cd06kac8.jpg)
    ​ 相反,选取下图中的决策线将会使theta变小。
    ![8.jpg](http://wx1.sinaimg.cn/mw690/7b8d2108gy1fhdixgbyspj20b9070wgc.jpg)
    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
  • 相关阅读:
    Linux环境下配置Google Test、TBB、OpenMP和OpenCV
    构建一个真实的应用电子商务SportsStore(六)
    编写简单的c运行库(一)
    构建一个真实的应用电子商务SportsStore(七)
    Entity Framework性能测试
    C++在VS下创建、调用dll
    Contextfree Grammar的编译器设计和实现
    XP方法概述
    项目代码风格要求
    WCF学习 第三天 事务的使用
  • 原文地址:https://www.cnblogs.com/SrtFrmGNU/p/7141170.html
Copyright © 2011-2022 走看看