zoukankan      html  css  js  c++  java
  • 支持向量机(SVM)公式整理

    支持向量机可以分为三类:

    • 线性可分的情况 ==> 硬间隔最大化 ==> 硬间隔SVM
    • 近似线性可分的情况 ==> 软间隔最大化 ==> 线性支持向量机
    • 线性不可分的情况 ==> 核技巧/软间隔最大化 ==> 非线性SVM

    硬间隔向量机(hard margin svm)

    任务:寻找一条与所有支持向量距离最远的决策边界,这条决策边界就是(0 = w^T X + b),即:

    [w^T X_i + b > 0 , y_i > 0 \ w^T X_i + b < 0 , y_i < 0 ]

    所以问题可以描述为:

    [max ; margin(x,b) qquad s.t.y_i(w^T+b)>0 \ margin(w,b) = min ; distance(w,b,x_i) = min frac{1}{|w|}|w^Tx_i+b| ]

    带换一下也就是

    [max ; min frac{1}{|w|}|w^Tx_i+b| ==> max frac{1}{|w|} ; min |w^Tx_i+b| \ s.t. y_i(w^Tx_i+b)>0 ; ==>; exists r > 0 , min ; y_i(w^T+b)=r ]

    用r来表示就是:

    [max frac{r}{|w|}\\ exists r > 0 , min ; y_i(w^T+b)=r ]

    这里我的理解是:因为(wx_i+b=r) ==> (frac{w}{r} x_i + frac{b}{r}=1),所以不管r取什么值,(w=frac{w_0}{r})(b=frac{b_0}{r}), 所以r的取值所带来的影响会被最后的w和b所融合进去,所以r=1也没关系。最终的问题可以描述为(这里是N个不等式):

    [max frac{1}{2}|w|^2 \ s.t. ; y_i(w^T+b)-1>=0 qquad i=1,2,3,...,N ]

    构造拉格朗日函数,引入N个参数(alpha),转换成对偶函数如下(大括号表示不出来我也很绝望):

    [min frac{1}{2} cdot sum_{i=1}^{N} sum_{j=1}^{N} alpha_i alpha_{j} y_{i} y_{j}left(x_{i} cdot x_{j} ight)-sum_{i=1}^{N} x_{i} \ s.t.sum_{i=1}^{N} alpha_{i} y_{i}=0 \ alpha_i >=0 ; i = 1,2,3,.. N ]

    使用KKT条件,得到的解:

    [w^{*}=sum_{i=1}^{N} alpha_{i}^{*} y_{i} x_{i} ]

    [b^{*}=y_{j}-sum_{i=1}^{N} a_{i}^{*} y_{i}left(x_{i} cdot x_{j} ight) ]

    最终的解是:

    [w^{*}x+b^{*}=0 ]

    [f(x) = sign(w^{*}x+b^{*}) ]

    软间隔向量机(soft margin svm)

    软间隔向量机采用合页损失函数,真实数据中,严格线性可分的数据很少。合页损失函数允许分类时的一点点误差。损失函数如下:

    [1- y_{i}left(w^{ op} x_{i}+b ight) leqslant0, quad loss=0 \ 1-y_{overline{2}}left(w^{ op} x_{i}+b ight) >0, quad loss =1-y_{i}left(w^{ op} x_{i}+b ight) ]

    也就是,正确分类并且函数间隔大于1时没有误差,错误分类时,距离决策边界越远的点,受到的惩罚越大。使用合页函数的做优化问题可以表示为:

    [min sum_{i}^{N}left(1-y_{i}left(w^{T} x_{i}+b ight) ight)_{+}+lambda|w|^{2} ]

    (xi_{i}=1-y_{i}(w^{T} x_{i}+b), quad xi_{i} geqslant 0),则,分两种情况:
    1、(1-y_{i}(w^{T} x_{i}+b)>0) ==> (xi_i =1-y_{i}left(w^{T} x_{i}+b ight)) ==> (y_i(wx+b)=1-xi_i)
    2、(1-y_{i}(w^{T} x_{i}+b)leqslant0) ==> (y_i(wx+b)leqslant1) ==> (y_i(wx+b)leqslant1-xi_i) ((xi_i=0))

    综合上面两种情况,可以直接写为:(y_i(wx+b)leqslant1-xi_i),这样的话,最优化函数就变成了下面的样子:

    [min frac{1}{2} w^{T}w+Csum_{i=1}^{N} xi_{i} \ s.t. y_{i}left(w^{T} x_{i}+b ight) geqslant 1-xi_{i}, quad xi_{i} geqslant 0 ]

    这两个式子是等价的。再《统计学习方法》中,先给出了后面的式子,再介绍了合页损失函数

    这两个式子转换成等价的对偶函数如下:

    [underset{alpha}{min} frac{1}{2} sum_{i=1}^{N} sum_{j=1}^{N} alpha_{i} alpha_{j}y_{i} y_{j}left(x_{i}x_{j} ight)-sum_{i=1}^{n} alpha_{i} \ s.t. sum_{i=1}^{N}alpha_iy_i=0 qquad \ 0leq alpha_i leq C, ;i=1,2,...N ]

    对偶函数的解是:

    [w=sum_{i=1}^{N} alpha_{i} y_{i} x_{i} ]

    [b=y_{j}-sum_{i=1}^{N} a_{i} y_{i}left(x_{i} cdot x_{j} ight) ]

    决策函数是:

    [f(x)=sign (sum_{1}^{N} alpha_{i} y_{i}(x cdot x_{i})+b^{*}) ]

    KKT条件

    [frac{alpha f}{alpha w}=0, frac{alpha f}{alpha b}=0, frac{alpha f}{alpha lambda}=0 ]

    [lambda_{i}(1-y_{i}(w^{T} x_{i}+b))=0 ]

    [lambda_i=0 ]

    [(1-y_{i}(w^{T} x_{i}+b))<0 ]

    对于(lambda_{i}(1-y_{i}(w^{T} x_{i}+b))=0) 只要 (lambda_i eq0) ,就有 (1-y_{i}(w^{T} x_{i}+b=0),也就是说(x_i)再决策边界上,(x_i)是支持向量

    • 原问题与对偶问题育有强对偶关系 <===> 满足KKT条件

    非线性支持向量机(核函数)

    核函数可以对特征进行升维(当然,不一定非要是升维,也可能是转换到另一个空间),高维空间的运算量巨大,所以直接使用低维的计算结果,作为两个高维向量的内积:

    [phi (x_1, x_2) * phi (x_1^{'}, x_2^{'}) = (z_1, z_2, z_3)*(z_1^{'}, z_2^{'}, z_3^{'}) \\ = (x_1^2, sqrt{2}x_1 x_2, x_2^2)(x_1^{'2}, sqrt{2}x_1^{'} x_2^{'}, x_2^{'2}) \\ = (x_1 x_1^{'} + x_2 x_2^{'}) = (xx^{'})^2 =K(x, x^{'}) ]

    核函数等价于两个映射哈函数的内积,不过,这个映射函数不需要手动指出。因为当两个映射函数相乘时,内积的结果可以用核函数表示。而映射函数在最优化问题中都是成对出现的。即出现映射函数的地方都可以用核函数替代。

    如果用映射函数将x映射到高维空间,那么应该用高维向量替换x所在的位置:

    [frac{1}{2} sum_{i=1}^{N} sum_{j=1}^{N} alpha_{i} alpha_{j}y_{i} y_{j}left(x_{i}x_{j} ight)-sum_{i=1}^{n} alpha_{i} ]

    [frac{1}{2} sum_{i=1}^{N} sum_{j=1}^{N} alpha_{i} alpha_{j}y_{i} y_{j}left(phi(x_{i})phi(x_{j}) ight)-sum_{i=1}^{n} alpha_{i} ]

    [frac{1}{2} sum_{i=1}^{N} sum_{j=1}^{N} alpha_{i} alpha_{j}y_{i} y_{j}left(K(x_{i}, x_{j}) ight)-sum_{i=1}^{n} alpha_{i} ]

    那么最终拟合的结果也应该是由高维向量表示的:

    [f(x)=sign (sum_{1}^{N} alpha_{i} y_{i}(phi(x)phi(x_{i}))+b^{*}) ]

    [f(x)=sign (sum_{1}^{N} alpha_{i} y_{i}(K(x,x_i))+b^{*}) ]

    高斯核函数(RBF)

    正太分布:

    [f(x)=frac{1}{sqrt{2 pi} sigma} exp left(-frac{(x-mu)^{2}}{2 sigma^{2}} ight) ]

    高斯核函数:

    [K(x, y)=e^{-gamma|x-y|^{2}} ]

    对于正态分布来说:(sigma)是标准差,(sigma)越小,曲线越窄。(sigma)越大,曲线越宽
    对于高斯核函数来说:(gamma)的值越大,曲线越窄;(gamma)的值越小,曲线越宽;

  • 相关阅读:
    kubernetes资源清单之Deployment
    kubernetes资源配置之ReplicaSets
    kubernetes资源清单之pod
    采用kubeadm部署工具,部署kubernetes1.16.3
    Kubernetes介绍与核心组件
    Linux系统初始化脚本
    Linux awk命令 --三剑客老大
    Linux sed命令 -- 三剑客老二
    Makefile中代码写在同一行和分开几行写有什么区别?
    毕业啦!我要好好学习!!!
  • 原文地址:https://www.cnblogs.com/twilight0402/p/13384452.html
Copyright © 2011-2022 走看看