十三、支持向量机SVM

SVM(Support Vector Machines)

    近年已被深度学习所替代

    SVM寻找区分两类的超平面(hyper plane),使边际(margin)最大


向量内积:

                 

范数:

当时,可以求余弦相似度:


算法推论

    转化为凸优化问题

    

    

——》,求最大值,即求


    而凸优化问题一般有三种情况:

        1、无约束优化问题:        费马定理

        2、带等式约束的优化问题:    

                -拉格朗日乘子法:

                    s.t.   

                    

        3、带不等式约束的优化问题:    

                -KKT条件

                    s.t.    

                              

                    

    而算法是在的条件下求

    实际上存在时,取1,即属于第2种情况

    广义拉格朗日乘子法

        

        

        

    而KKT条件(Karush-Kuhn-Tucker最优化条件)

        是拉格朗日乘子法的一种推广,可以处理有不等号的约束条件

    进一步简化为对偶问题

        

        上述问题可以改写成:

            

        可以等价为下列对偶问题:

            

            

                    

                    

            消除w,b——

            

            

            s.t.    

            

            s.t.    

            由此可得最优解,带入后得

                

SMO算法

    针对线性SVM和稀疏数据时性能更优

    

    s.t.   

    s.t.    

    基本思路是先根据约束条件随机给赋值,然后每次选举两个,调节这两个使得目标函数最小。然后再选取两个,调节使得目标函数最小。以此类推


线性不可分的情况

    引入松弛变量惩罚函数

    松弛变量

        

        约束条件没有体现错误分类的点要尽量接近分类边界

    惩罚函数

        

        使得分错的点越少越好,距离分类边界越近越好

    线性不可分下的对偶问题:

    ——》

            s.t.    

            s.t.    

eg:


    可知目标函数为:,    s.t.    ,

    其中    

                           

    然后,将带入目标函数,得到一个关于和的函数

                

    对求偏导,并令其为0

    可知在(1.5,-1)处取极值

    而(1.5,-1)不满足的约束条件,可推断最小值在边界上达到

    经计算,

        当时,

        当时,

    所以,在时取最小值

    此时可算出

    所以,不等于0,所以对应点和就应该是支持向量

    进而

        

    即。进而有

        

    因此最大间隔分类超平面为

        

    分类决策函数为

        

非线性的情况

    把低维空间的非线性问题映射到高维空间,变成求解线性问题

映射举例:

    3维输入向量

    转化到6维空间中去:

            

            

    新的决策超平面,其中和是向量,这个超平面是线性的,解出和之间,并且带回原方程

            

                     

存在的问题:

    1、维度灾难

    2、如何选择合理的非线性转换

            核函数


    我们可以构造核函数使得运算结果等同于非线性映射,同时运算量要远远小于非线性映射

        

    h次多项式核函数:    

    高斯径向基函数核函数:    

    S型核函数:    

SVM优点

    -算法复杂度由支持向量的个数决定,而非数据维度,所以不太易产生overfitting

    -SVM训练出来的模型完全依赖于支持向量(Support Vectors)即使训练集里面所有非支持向量的点都被去除,重复训练过程,结果仍会一样

    -一个SVM如果训练得出的支持向量个数比较小,SVM训练出的模型比较容易泛化

你可能感兴趣的:(十三、支持向量机SVM)