• (四)支持向量机(SVM)


    目录

    一、支持向量机

    二、拉格朗日对偶

    三、SMO算法(序列最小优化算法) 

    四、线性不可分核函数


    一、支持向量机

            如图所示为蓝红两类样本,SVM的工作就是找到一个超平面,可以使得这两类样本更好的分开,图中所示的红线就是SVM所求得的超平面,图中的虚线与超平面平行,d表示两类样本到超平面的距离,我们的目的就是最小化W。

            原理:margin为红线左右平移得出的 2 条虚线,要使红线为最优分割线,就要使margin最大化,从而使得两类更好的分割开。

            公式:设两条虚线分别为\left\{\begin{matrix} wx+b=c_1\\ wx+b=c_2 \end{matrix}\right.,则两条虚线之间的距离为\frac{|c_1-c_2|}{\left \| w \right \|}=\frac{2}{\left \| w \right \|}

    如图2d即为margin,要使得2d最大,则使\left \| w \right \|最小。该公式是控制两个样本之间的距离,那应该如何限制两类样本的取值范围呢?如下图所示,蓝色样本的y(类别标签)为-1,红色样本的y(类别标签)为1,对两个虚线方程进行一定的变换(如下图所示),则得到(wx+b)y\geq 1

     举个例子:

            下图中中有是哪个样本,其中x1,x2是属于第一类,y=1,x3属于第二类,y=-1。根据约束求出最优超平面。

    (1)我们首先使得两条虚线之间的距离最大化,故根据上述的公式得出要最小化\frac{1}{2}\left \| w \right \|^2,从而得到

    (2)我们定义约束为(w_1x_1+w_2x_2+b)y\geq 1,将三个点带入该式中得到三个约束条件。

    我们参考之前一道例题对该提进行求解,应用的思想是使用拉格朗日求不等式约束的极值。

    具体参考链接:数学基础(五)最优化理论(最优化,无约束,有约束,拉格朗日乘子的意义,KKT条件)

     首先求解f(x),g1,g2,g3的梯度,下图中是以列向量的形式表示。

    再带入公式

    再将g1,g2,g3带入公式

    约束\lambda\geq 0

    如下图所示:

     求解结果如图所示,λ=0 处的约束是不起作用的(KKT条件)。

    二、拉格朗日对偶

    拉格朗日对偶是解决SVM问题的一个很好的工具。

    下面例子中,最优化目标为:

    约束条件为:,该约束条件既有等式也有不等式

    我们引入广义拉格朗日函数:

    我们在不等式前面乘α,等式前面乘β,α和β表示拉格朗日乘子,其中\alpha\geq 0

    在x固定的情况下,我们可以求出α,β使得L最大:

    假设某个x不满足约束条件

    不满足约束时最大值的求解

    满足约束时最大值的求解c(x)\leq 0\alpha \geq 0,则当α=0时取得最大值。

    完整过程如下所示: 

    因此,原始问题满足: 

    回到问题本身,要求最小值:

            上述问题的最小值求解中,是先求最大值再求最小值,这个过程不是很好求,那我们转换一下思路,先求最小值,再求最大值。

    三、SMO算法(序列最小优化算法) 

    下面我们来看SVM的优化问题: 

    我们将SVM的最优化问题转换成拉格朗日求极值的方法:

    就转换成1-(wx_i+b)y_i\geq 0

     构建广义拉格朗日函数:

     其中,\alpha_i\geq 0

     对L求解w和b的梯度,求得L取最小值时的条件。

    将求得的条件代入中得到:

    ​​​​​

    这样SVM问题就转化为拉格朗日等式约束问题:

    下式中优化的目标是 α,优化的约束是一个等式和KKT条件。

     上述结果即:y=wx+b

    四、线性不可分核函数

            上述我们所讲的题目都是可以直接用一条直线区分开,但是还有一些分类问题无法用直线区分开,如下图中的左图,圆内是一类,圆外是一类。那针对这种分布的样本,我们又应该如何求解呢?

    针对这种问题我们就需要做空间的变换:

    我们将椭圆方程变换为直线方程。

  • 相关阅读:
    kubectl 资源管理命令-陈述式
    【HMS core】【ML kit】机器学习服务常见问题FAQ
    音视频同步原理
    LeetCode 每日一题——667. 优美的排列 II
    在 CentOS 8.2 上安装 MySQL C/C++ 客户端库 libmysqlclient.so
    MySQL数据库管理
    了解 JavaScript 窗口对象
    Rakis: 免费基于 P2P 的去中心化的大模型
    科学计算库 —— Matplotlib
    vivo 容器集群监控系统优化之道
  • 原文地址:https://blog.csdn.net/m0_45447650/article/details/126331557