• 支持向量机学习总结


    1.支持向量机是什么?

        支持向量机是一个超平面分类算法,他通过对已有标记的数据进行训练得出分类的超平面,对未知标记的点进行分类.

    2.支持向量机的工作原理?

        线性可分情况:

            1.求平面wx+b=0,即求w和b的值.使得样本集中的点到平面的距离min yi(wTxi+b)/||w||的值关于xi最小.实际上是求

            maxw,b (minxi (yi(wTxi+b)/||w||))

            因为w,b前加一个系数不影响平面,所以令所有的yi(wTxi+b)>=1.其中最小的那些取等号.取等号的即为支持向量.

            这里实际上是对w和b做了一次变换,设最小的那个点到平面的距离为r.令w'=w/r,b'=b/r.

            2.转化为lagrange dual problem.

            在加入假设之后实际上是求

            maxw,b 1/||w||==>可以转化为minw ||w||2/2

            s.t. yi(wTxi+b)>=1 i=1,...n

            其lagrange函数为

    minw,b θ(w)=minw,b maxαi,αi>0 L(α,w,b)=||w||2/2-Σiαi(yi(wTxi+b)-1)

            因为是对αi求最值,所以lagrange函数问题θ(w)与原问题等价.这相当于把二次规划的限制条件放到了目标函数中去了.

            这里是先求max再求min.因为svm的lagrange函数满足slater条件,同时满足KKT条件.所以先求max再求min与先求min再求max得出的结果是一样的.如果不满足条件则

    max min f(x,y) 是 min max f(x,y)的一个下界.一个是顶上最矮的,一个是地上最高的. 因而我们求其对偶问题

    maxαi,αi>0 minw,b  L(α,w,b)=||w||2/2-Σiαi(yi(wTxi+b)-1)    (1)

    又有满足KTT条件: L(α,w,b)对w,b求导为0.即得

    w=Σαiyixi    (2)

    Σαiy= 0    (3)

            将(2)代入(1)得

    L(α,w,b)=Σiαi - (1/2)*Σj,iαiαjyiyjxTixj

    这里消掉了w和b.成了α的函数,同时还有Σαiy= 0.于是这就是转化成的新的lagrange dual problem:

    maxαi,αi>0 L(α,w,b)=Σiαi - (1/2)*Σj,iαiαjyiyjxTixj

    Σαiy= 0 其中αi>=0

    这一问题可以用SMO(序列最小最优化算法)求解α就可以通过(2)和wx+b=0解出w和b.最后给测试集x进行判断时就计算wx+b就可以了.

    另外可以直接使用(2)导出wx+b=ΣαiyixTix+b.这里可以用支持向量和未知向量的内积来确认未知向量的类型.

        线性不可分情况:

            将数据从低维转化为高维,使其线性可分,然后使用同样的方法对其求解α,w,b.然后通过计算wx+b来确认.当然,这时的难点在于低维到高维的转化.同时,这里求出的w,b也是高维空间中的值,因为只有高维空间才线性可分,满足KKT条件.所有未知向量需要先转化为高维向量再代入计算.这样是非常麻烦的.同时高维向量的内积计算起来也很难.

            这里有核函数将高维空间中的内积转化为低维空间中的计算.这样通过求α就可以进行计算了.其中有多项式核函数和指数核函数.

            因为计算可以转化为高维空间中的内积,所以才可以使用核函数的方法.否则SVM的应用会更加难以推广

     

  • 相关阅读:
    编程的发展史及Python简介
    计算机的主要部件和组成
    编程二连
    数据库中的数据类型
    数据库概念和基本操作(mysql的操作)
    并发编程之协程
    并发编程之多线程
    网络编程之socket编程
    并发编程之多进程
    网络编程之网络协议
  • 原文地址:https://www.cnblogs.com/york-hust/p/3636299.html
Copyright © 2020-2023  润新知