• 机器学习——支持向量机原理


    Support Vector Machine

            要解决的问题:什么样的决策边界才是最好的呢?

            决策边界:选出来离两个类别的距离最远的决策边界

    点到平面的距离的计算         

             

    数据标签定义 

    数据集:(X1,Y1)(X2,Y2)… (Xn,Yn)
    Y为样本的类别: 当X为正例时候 Y = +1 当X为负例时候 Y = -1
    决策方程:

    优化的目标 

    通俗解释:找到一个条线(w和b),使得离该线最近的点能够最远
    将点到直线的距离化简得:

     

    目标函数 

    放缩变换:对于决策方程(w,b)可以通过放缩使得其结果值|Y|>= 1

     (之前我们认为恒大于0,现在严格了些)

    优化目标:

     

    因为后面最小值为1

     常规套路:将求解极大值问题转换成极小值问题:

     如何求解:应用拉格朗日乘子法求解

    拉格朗日乘子法

            带约束的优化问题:  

             原式转换:

             我们的式子:

             (约束条件不要忘:

            分别对w和b求偏导,分别得到两个条件(由于对偶性质) 

            

             对w求偏导:

             对b求偏导:

    SVM求解

            带入原始: 

            其中           

     

     

    完成了第一步求解 

     继续对ɑ求极大值:

    条件: 

     极大值转换成求极小值:

    条件: 

    SVM求解实例

            数据:3个点,其中正例 X1(3,3) ,X2(4,3) ,负例X3(1,1)

            求解: 

             约束条件:

     

     原式:

    由于:  

    化简可得:  

    分别对ɑ1和ɑ2求偏导,偏导等于0可得: 

     (并不满足约束条件,所以解应在边界上)

    最小值在(0.25,0,0.25)处取得

    将ɑ结果带入求解 

     

    平面方程为: 

     支持向量:真正发挥作用的数据点,ɑ值不为0的点,即边界点,非边界点的ɑ值必定为0

    soft-margin 

    软间隔:有时候数据中有一些噪音点,如果考虑它们咱们的线就不太好

    之前的方法要求要把两类点完全分得开,这个要求有点过于严格
    为了解决该问题,引入松弛因子

     

    新的目标函数: 

    当C趋近于很大时:意味着分类严格不能有错误

    当C趋近于很小时:意味着可以有更大的错误容忍

    C是我们需要指定的一个超参数

    拉格朗日乘子法:

    约束:  

     

    同样的解法:

    低维不可分问题

            核变换:既然低维的时候不可分,那我给它映射到高维呢?

             低维不可分问题

    目标:找到一种变换的方法,也就是 \o (𝑋)

    实例:

     高斯核函数:

    线性核函数
    高斯核函数

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    GPU驱动及CUDA安装流程介绍
    acwing算法基础之基础算法--整数离散化算法
    Redis_01_Redis安装与使用
    Docker consul的容器服务更新与发现
    微信小程序开发前准备
    数据结构之顶层父类的创建
    Playwright直接控制本地Chrome浏览器的方法
    通达信软件L2接口的委托队列有什么用?
    asp.net core rabbitmq的基本使用
    Ubuntu22.04 交叉编译gcc9.5 for arm
  • 原文地址:https://blog.csdn.net/qq_52053775/article/details/126083064