机器学习---SVM目标函数求解,SMO算法

1. 线性可分支持向量机

1.1 定义输入数据

假设给定⼀个特征空间上的训练集为:

其中,(x , y )称为样本点。 x 为第i个实例(样本)。

y 为x 的标记: 当y = 1时,x 为正例;当y = −1时,x 为负例

正负用(-1,1)表示的原因:最大的作用就是标记,你也可以⽤(2,-3)来标记。只是为了⽅便,y

/y = y ∗ y 的过程中刚好可以相等,便于之后的计算。)

1.2 最大间隔

给定了上⾯提出的线性可分训练数据集,通过间隔最大化得到分离超平面为

相应的分类决策函数为:

以上决策函数就称为线性可分⽀持向量机。 Φ(x)是某个确定的特征空间转换函数,它的作⽤是将x

映射到更高的维度,它有⼀个以后我们经常会见到的专有称号"核函数"。

        比如我们看到的特征有2个: x1, x2,组成最先见到的线性函数可以是w1x1 + w2x2。但也许这

两个特征并不能很好地描述数据,于是我们进行维度的转化,变成了 w1x1 + w2x2 + w3x1x2+

w4x^2 + w5x^2。于是我们多了三个特征。⽽这个就是笼统地描述x的映射的。 最简单直接的就

是:Φ(x) = x。

       我们要去求出这样⼀个超平面y(x),它能够最优地分离两个集合。 其实也就是我们要去求⼀组

参数(w,b),使其构建的超平面函数能够最优地分离两个集合。

如下就是⼀个最优超平面:

1.3 推到目标函数

 超平面表达式:为了方便我们让:

则在样本空间中,划分超平面可通过如下线性方程来描述:

其中, 为法向量,决定了超平面的方向;

          b为位移项,决定了超平面和原点之间的距离。

显然,划分超平面可被法向量w和位移b确定,我们把其记为(w,b)。

样本空间中任意点x到超平面(w,b)的距离可写成:

假设超平面(w, b)能将训练样本正确分类,即对于(x , y ) ∈ D。

令:

如图所示,距离超平面最近的几个训练样本点使上式等号成立,他们被称为“支持向量"。

两个异类支持向量到超平面的距离之和为:

欲找到具有最⼤间隔的划分超平面,也就是要找到能满足下式中约束的参数w和b,使得γ最大。 

显然,为了最⼤化间隔,仅需要最大化:,这等价于最小化

于是上式可以重写为:

PS:||W||是向量与矩阵的范数。

1.4 目标函数的求解

因为目标函数带有⼀个约束条件,所以我们可以用拉格朗日乘子法求解。

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

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

无约束优化问题求解。

经过朗格朗日乘子法,我们可以把目标函数转换为:

其中,要想求得极小值,上式后半部分: 

走到这⼀步,这个目标函数还是不能开始求解,现在我们的问题是极小极大值问题 。

我们要将其转换为对偶问题,变成极⼤极小值问题:

⾸先我们对原目标函数的w和b分别求导:

            原函数为:

            对w求偏导:

            对b求偏导:

然后将以上w和b的求导函数重新代⼊原目标函数的w和b中,得到的就是原函数的对偶函数:

于是现在要求的是这个函数的极大值max(a),写成公式就是: 

好了,现在我们只需要对上式求出极⼤值α,然后将α代⼊w求偏导的那个公式:

         从而求出w。将w代⼊超平面的表达式,计算b值;现在的w,b就是我们要寻找的最优超平面的参数。 

2. 线性不可分支持向量机

2.1 线性不可分的情况

我们可以为分错的点加上一点惩罚,对一个分错的点的惩罚函数就是这个点到其正确位置的距离:

        C是一个由用户去指定的系数,表示对分错的点加入多少的惩罚,当C很大的时候,分错的点

就会更少,但是过拟合的情况可能会比较严重,当C很小的时候,分错的点可能会很多,不过可能

由此得到的模型也会不太正确 。

软支持向量机求解:

构造拉格朗日公式:

求偏导数:

转为对偶函数求解。

实际上在处理大型问题时,由于存储和计算两方面的要求,这些算法往往会失效。 

2.2 坐标上升法

        固定除 αi 之外的所有参数,这时W可看作只是关于 αi 的函数,那么直接对 αi 求导优化即

可。可以通过更改优化顺序来使W能够更快地增加并收敛。如果W在内循环中能够很快地达到最

优,那么坐标上升法会是一个很高效的求极值方法。

固定以外的所有参数,那么将不再是变量(可以由其他值推出),因为问题中规定了

因此,我们最少一次需要选取两个参数做优化,比如αi和αj,此时可以由和其他参数表示出来。 

3. SMO算法

3.1 SVM算法特点

        SVM有如下主要几个特点:(1)非线性映射是SVM方法的理论基础,SVM利用内积核函数代替

向高维空间的非线性映射;(2)对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想

SVM方法的核心;(3)支持向量是SVM的训练结果,SVM分类决策中起决定作用的是支持向量。

因此,模型需要存储空间小,算法鲁棒性强;(4)无序任何前提假设,不涉及概率测度。

        SVM有如下主要几个缺点:(1) SVM算法对大规模训练样本难以实施由于SVM是借助二次规

划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时

该矩阵的存储和计算将耗费大量的机器内存和运算时间。针对以上问题的主要改进有有J.Platt

SMO算法、T.JoachimsSVMC.J.C.Burges等的PCGC、张学工的CSVM以及O.L.Mangasarian

等的SOR算法;(2) 用SVM解决多分类问题存在困难经典的支持向量机算法只给出了二类分类的算

法,而在数据挖掘的实际应用中,一般要解决多类的分类问题。可以通过多个二类支持向量机的组

合来解决。主要有一对多组合模式、一对一组合模式和SVM决策树;再就是通过构造多个分类器

的组合来解决。主要原理是克服SVM固有的缺点,结合其他算法的优势,解决多类问题的分类精

度。如:与粗集理论结合,形成一种优势互补的多类问题的组合分类器。

3.2 SMO算法

        SMO算法由Microsoft ResearchJohn C. Platt1998年提出,并成为最快的二次规划优化算

法,特别针对线性SVM和数据稀疏时性能更优。第一步选取一对参数,选取方法使用启发式方法

(Maximal violating pair)。第二步,固定除被选取的参数之外的其他参数,确定W极值。

        假设我们选取了初始值满足了问题中的约束条件。接下来,我们固定其余参数,这样W就是

和的函数。并且和满足条件: 

由于其余参数都是已知固定,因此为了方便,可将等式右边标记成实数值。

 

进而:

目标函数:

其中:

求偏导:

带入w, v:

求得:

最终参数的解为:

3.3 参数取值

当a1和a2异号时,也就是一个为1,一个为-1时,他们可以表示成一条直线,斜率为1。如下图:

横轴是a2,纵轴是a1,a1和a2既要在矩形方框内,也要在直线上,因此

同理,当y1和y2同号时:

参数计算:

b的求解:

在界内,则

,代入上式得:

两边同乘以y1,得:

       

在界内,则

在界内,则情况1和情况2的b值相等,任取一个;都不在界内,则    取值为

情况1和情况2之间的任意值。   

3.4 算法终止条件

       一个自然的想法是那些违反KKT最严重的点,他们对间距贡献最大,因此可以通过该启发规则

来完成调整参数的选取。(并且此种启发规则计算量小)

①停止条件1(满足KTT条件)

KTT条件:

 并设:

代入得:左移:

分别乘以yi

统一得到:

等价于:

如果对于:可以判断:

②停止条件2

③停止条件3

       应该指出,检验停机准则的精度要求对算法的执行时间影响很大。过高的要求会非常浪费时

间,却不一定会改进决策函数。所以在实际应用中,我们要精心选择停机准则.

此外,上面停机准则的讨论也会给我们改进算法和提高算法的效率提供一些启发,比如在迭代过程

中可以特别注意那些违背停机准则“最严重”的训练点。

其他的求解方法:

选块算法: 

分解算法:

工作集的选取:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/117277.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

16. 机器学习 - 决策树

Hi,你好。我是茶桁。 在上一节课讲SVM之后,再给大家将一个新的分类模型「决策树」。我们直接开始正题。 决策树 我们从一个例子开始,来看下面这张图: 假设我们的x1 ~ x4是特征,y是最终的决定,打比方说是…

合肥中科深谷嵌入式项目实战——人工智能与机械臂(六)

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者&#xff1…

Python最强自动化神器Playwright!再也不用为爬虫逆向担忧了!

版权说明:本文禁止抄袭、转载,侵权必究! 目录 一、简介+使用场景二、环境部署(准备)三、代码生成器(优势)四、元素定位器(核心)五、追踪查看器(辅助)六、权限控制与认证(高级)七、其他重要功能(进阶)八、作者Info一、简介+使用场景 Playwright是什么?来自Chat…

0001Java安卓程序设计-基于Android多餐厅点餐桌号后厨前台服务设计与开发

文章目录 **摘** **要****目** **录**系统设计开发环境 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 摘 要 移动互联网时代的到来,给人们的生活带来了许多便捷和乐趣。随着用户的不断增多,其规模越来越大&#…

linux环境下编译,安卓平台使用的luajit库

一、下载luajit源码 1、linux下直接下载: a、使用curl下载:https://luajit.org/download/LuaJIT-2.1.0-beta3.tar.gz b、git下载地址;https://github.com/LuaJIT/LuaJIT.git 2、Windows下载好zip文件,下载地址:https…

【四、http】go的http的文件下载

一、日常下载图片到本地 //下载文件func downloadfile(url, filename string) {r, err : http.Get(url)if err ! nil {fmt.Println("err", err.Error())}defer r.Body.Close()f, err : os.Create(filename)if err ! nil {fmt.Println("err", err.Error())…

一文详解:传统企业如何把进销存管理流程搬到线上?

进销存管理是企业管理的核心流程之一,它有助于提高效率、降低成本、增加盈利,同时确保客户满意度,这对于企业的长期成功和竞争力至关重要。但在信息化转型的浪潮下,很多企业的传统进销存流程却遇到不少问题。 如果你也在考虑把进…

Navicat连接mysql 8.0.35 2059错误解决办法

这2天在家重装电脑,顺便把mysql升级8.0,安装完成后,用Navicat连接,报错2059,如下 网上查了一下, 【报错原因】mysql8.0 之前的版本中加密规则是 mysql_native_password,而 mysql8.0 之后的版本…

随机微分方程的分数扩散模型 (score-based diffusion model) 代码示例

随机微分方程的分数扩散模型(Score-Based Generative Modeling through Stochastic Differential Equations) 基于分数的扩散模型,是估计数据分布梯度的方法,可以在不需要对抗训练的基础上,生成与GAN一样高质量的图片。…

【Kotlin精简】第7章 泛型

1 泛型 泛型即 “参数化类型”,将类型参数化,可以用在类,接口,函数上。与 Java 一样,Kotlin 也提供泛型,为类型安全提供保证,消除类型强转的烦恼。 1.1 泛型优点 类型安全:通用允许…

CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境

CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境 文章目录 CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境一、前言二、资料收集三、Ubuntu18.04从安装到更换实时内核1、下载安装Ubuntu18.042、下载安装实时内核,解决编…

如何将PDF文件转换成翻页电子书?这个网站告诉你

​随着电子书的普及,越来越多的人开始将PDF文件转换成翻页电子书。翻页电子书不仅方便阅读,而且还可以在手机上轻松翻页。那么如何将PDF文件转换成翻页电子书呢?今天就为大家介绍一个网站,可以帮助你轻松完成这个任务。 1.首先&am…

Proteus仿真--12864LCD显示计算器键盘按键实验(仿真文件+程序)

本文主要介绍基于51单片机的12864LCD液晶显示电话拨号键盘按键实验(完整仿真源文件及代码见文末链接) 仿真图如下 本设计主要介绍计算器键盘仿真,按键按下后在12864液晶上显示对应按键键值 仿真运行视频 Proteus仿真--12864LCD显示计算器…

【漏洞复现】IIS_7.o7.5解析漏洞

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、修复建议 1.1、漏洞描述 漏洞原理: cgi.fix_path1 1.png/.php该…

第九章《搞懂算法:决策树是怎么回事》笔记

决策树算法是机器学习中很经典的一个算法,它既可以作为分类算法,也可以作为回归算法。 9.1 典型的决策树是什么样的 决策树算法是依据“分而治之”的思想,每次根据某属性的值对样本进行分类,然后传递给下个属性继续进行分类判断…

项目实战:新增@Controller和@Service@Repository@Autowire四个注解

1、Controller package com.csdn.mymvc.annotation; import java.lang.annotation.*; Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Inherited public interface Controller { }2、Service package com.csdn.mymvc.annotation; import java.lang.annotation.*…

zookeeper节点类型

节点类型 持久节点(Persistent Nodes) 这些是Zookeeper中最常见的一种节点类型,当创建一个持久类型节点时,该值会一直存在zookeeper中,直到被显式删除或被新值覆盖。 临时节点(Ephemeral Nodes&#xff…

【漏洞复现】Apache_Tomcat_PUT方法任意写文件(CVE-2017-12615)

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证工具扫描验证POC 1.6、修复建议 说明内容漏洞编号CVE-2017-12615漏洞名称Tomcat_PU…

【python】路径管理+路径拼接问题

路径管理 问题相对路径问题绝对路径问题 解决os库pathlib库最终解决 问题 环境:python3.7.16 win10 相对路径问题 因为python的执行特殊性,使用相对路径时,在不同路径下用python指令会有不同的索引效果(python的项目根目录根据执…

服务器搭建:从零开始创建自己的Spring Boot应用【含登录、注册功能】

当然,你可以先按照IDEA搭建SSM框架【配置类、新手向】完成基础框架的搭建 步骤 1:设计并实现服务器端的用户数据库 在这个示例中,我们将使用MySQL数据库。首先,你需要安装MySQL并创建一个数据库以存储用户信息。以下是一些基本步…