当前位置: 首页 > article >正文

SVM原理理解

目录

概念推导:

共识:距离两个点集距离最大的分类直线的泛化能力更好,更能适应复杂数据。

怎么能让margin最大?

最大化margin即:

拉格朗日乘子法:

为什么公式中出现求和符号?

SVM模型:

小结:


学习资料:

猫都能看懂的SVM【从概念理解、优化方法到代码实现】_哔哩哔哩_bilibili

不简单的SVM - 知乎 (zhihu.com)

机器学习中的超平面wx+b=0?_平面方程wx+b=0-CSDN博客

优化-拉格朗日乘子法 - 知乎 (zhihu.com)

概念推导:

样本集:D={(x1,y1),(x2,y2),,,(xn,yn)}

类别标签:y\epsilon \begin{Bmatrix} -1 ,& 1 \end{Bmatrix}

分类直线:f=w^{\Gamma }x+b

f=w^{\Gamma }x+b=0时,表示点在分类直线上;f=w^{\Gamma }x+b>0表示该点在直线上方,表示该点为正样本;f=w^{\Gamma }x+b<0表示该点在直线下方,该点为负样本;将上述转化为数学语言,即:

y_{i}\times (w^{\Gamma }x_{i}+b)\geq 0 

对于二分类问题,我们可以找到许多分类直线将不同点集正确区分。如下图:灰色面中的直线都是分类直线。margin表示间隔。

共识:距离两个点集距离最大的分类直线的泛化能力更好,更能适应复杂数据。

因此我们希望所有的点都被正确分类并且落在两条直线的两侧,且直线内区域尽量大对上述公式进行改进:即(w^{\Gamma }x_{i}+b)在(-1,1)时,不分类

(w^{\Gamma }x_{i}+b)\geq 1        yi=1

(w^{\Gamma }x_{i}+b)\geq -1        yi=-1

y_{i}\times (w^{\Gamma }x_{i}+b)\geq 1

怎么能让margin最大?

计算最大间隔:X_{+}X_{-}表示分类直线边界上里最佳分类直线距离最近的两点;最大间隔margin为X_{+}X_{-}之间的距离,等于d_{+}+d_{-}

由直线外一点到直线的距离:直线:Ax+By+C =0

d=\frac{\begin{vmatrix} Ax+By+C \end{vmatrix}}{(A^{2}+^B{2})^{1/2}}

(二维平面上公式:ax+by+c=0 点坐标为(x,y),二分类散点图上点坐标为(x1,x2)表示不同特征

w和x是矩阵 wx+b=w1x1+w2x2+b。所以直线上点满足w1x1+w2x2+b=0,

机器学习中的超平面wx+b=0?_平面方程wx+b=0-CSDN博客)

得:

d_{+}=\frac{\begin{vmatrix} w^{\Gamma }X_{+}+b \end{vmatrix}}{\begin{Vmatrix} w \end{Vmatrix}} 

d_{-}=\frac{\begin{vmatrix} w^{\Gamma }X_{-}+b \end{vmatrix}}{\begin{Vmatrix} w \end{Vmatrix}}

又:

w^{\Gamma }X_{+}+b=1 

w^{\Gamma }X_{-}+b=-1

得:

margin=\frac{2}{\left \| w \right \|}

最大化margin即:

argmax_{w,b} \frac{2}{\left \| w \right \|},y_{i}\times (w^{\Gamma }x_{i}+b)\geq 1 \Rightarrow

argmin_{w,b} \left \| w \right \|    , \left \| w \right \|=(w1^{2}+w2^{2}+,,,+wn^{2})^{1/2}=(w^{\Gamma }w)^{1/2} \Rightarrow

argmin_{w,b}w^{\Gamma }w

w^{\Gamma }w最小值,需要对w^{\Gamma }w求偏导数,令其等于0,得到可能的极值点

对其求偏导(可以看成w可以看成(w1,w2,w3,,,wn),对w^{\Gamma }w求偏导是多元函数求偏导,对wi求偏导)

\frac{\partial w^{\Gamma }w}{\partial wi}=\frac{\partial (w1^{2}+w2^{2}+,,,wn^{2})}{\partial wi}=2wi\Rightarrow

\frac{\partial \frac{1}{2}w^{\Gamma }w}{\partial wi}=wi

故:

argmax_{w,b} \frac{2}{\left \| w \right \|},y_{i}\times (w^{\Gamma }x_{i}+b)\geq 1 \Rightarrow

argmin_{w,b}\frac{1}{2}w^{\Gamma }w

问题转化:求y_{i}\times (w^{\Gamma }x_{i}+b)\geq 1条件下,\frac{1}{2}w^{\Gamma }w的极值->寻找多元函数不等式约束下极值

拉格朗日乘子法:

优化-拉格朗日乘子法 - 知乎 (zhihu.com)

拉格朗日乘子法(Lagrange multipliers)是一种寻找多元函数在一组约束下极值的方法。

通过引入拉格朗日乘子,可将有 d个变量与 k 个约束条件的最优化问题转化为具有 d+k个变量的无约束优化问题求解。

即:求f(x)在g(x)<=0的极值点。转化为:求L(x,u)=f(x)+ug(x)(u表示为拉格朗日乘子)的极值点。

求L(x,u)极值点的条件:(KKT条件)

\bigtriangledown _{x}L=\bigtriangledown f+u\bigtriangledown g=0

g(x)\leq 0

ug(x)= 0

u\geq 0

y_{i}\times (w^{\Gamma }x_{i}+b)\geq 1条件下,\frac{1}{2}w^{\Gamma }w的极值,数学语言表示:

argmin_{w,b}\frac{1}{2}w^{\Gamma }w

                                s.t. 1-yi(w^{\Gamma }xi+b)\leq 0

L(w,b,\alpha )=\frac{1}{2}w^{\Gamma }w+\sum \alpha _{i}[1-yi(w^{\Gamma }xi+b)] 

为什么公式中出现求和符号?

L(x,u)=f(x)+ug(x)中:一个u对应一个x.

L(w,b,a)中w={w1,w2,,,wn},需要对应n个拉格朗日乘子。L(w,b,\alpha )=\sum L(wi,b,\alpha i)

KKT条件:

\bigtriangledown _{w,b}L=0\Rightarrow\frac{\partial L}{\partial w}=w-\sum aiyixi=0,  \frac{\partial L}{\partial b}=\sum aiyi=0

1-yi(w^{\Gamma }xi+b)\leq 0\Rightarrow yi(wxi+b)\geq 1

\alpha _{i}[1-yi(w^{\Gamma }xi+b)]=0

\alpha _{i}\geq 0

注意:对于不在两分类直线上的点(yi(wxi+b)> 1),\alpha i=0

如图所示:

\frac{\partial L}{\partial w}=w-\sum aiyixi=0\frac{\partial L}{\partial b}=\sum aiyi=0

带入y=w^{\Gamma }x+b.

y=\sum a_{i}y_{i}x_{i} ^{\Gamma }x+b.

SVM模型:

y=\sum a_{i}y_{i}x_{i} ^{\Gamma }x+b

小结:

1.Logistic算法和SVM的区别和联系:

模型不同:y=\sum a_{i}y_{i}x_{i} ^{\Gamma }x+by=w^{\Gamma }x+b,Logistic模型更简单,SVM更复杂。

决策边界不同,都能解决分类问题:Logistic解决二分类问题,得到分类直线;SVM可以解决二分类,使用间隔最大化确定一个决策面。


http://www.kler.cn/a/161598.html

相关文章:

  • 系统架构设计师论文
  • Elasticsearch可视化工具Elasticvue插件用法
  • 天才的懈怠 : 平衡二叉树
  • 【CICD】GitLab Runner 和执行器(Executor
  • 使用docker-compose单点搭建社区版seafile+onlyoffice在线word编辑平台
  • JavaScript——函数、事件与BOM对象
  • css弹窗动画效果,示例弹窗从底部弹出
  • flex布局的flex为1到底是什么
  • 阿里云实时数据仓库HologresFlink
  • React富文本编辑器wangEditor
  • 【Ajax】发送get请求获取接口数据
  • 【计算机组成体系结构】SRAM和DRAM
  • Java网络编程,使用UDP实现TCP(一), 基本实现三次握手
  • 排序算法之三:希尔排序
  • java第三十一课
  • Unity——鼠标控制摄像机移动,(距离)缩放,旋转
  • Linux篇之在Centos环境下搭建Nvidia显卡驱动
  • MacOS VSCode 配置远程服务器ssh remote链接,并上传文件文件服务器
  • 力扣150题 |80.删除有序数组中的重复项II
  • Boost:asio多io_service,多线程run
  • Unity中Batching优化的GPU实例化(3)
  • 万户协同办公平台ezoffice wpsservlet接口任意文件上传漏洞
  • uni-app 微信小程序之好看的ui登录页面(四)
  • JM中ref_pic_list_modification bug记录
  • 金融行业文件摆渡,如何兼顾安全和效率?
  • 视频封面提取:精准截图,如何从指定时长中提取某一帧图片