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

news2024/11/29 6:33:19

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

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

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

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

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

其他的求解方法:

选块算法: 

分解算法:

工作集的选取:

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

✔ ★【备战实习(面经+项目+算法)】 11.5学习

✔ ★【备战实习(面经项目算法)】 坚持完成每天必做如何找到好工作1. 科学的学习方法(专注!效率!记忆!心流!)2. 每天认真完成必做项,踏实学习技术 认真完成每天必做&…

【LeetCode力扣】287.寻找重复数

1、题目介绍 原题链接&#xff1a;287. 寻找重复数 - 力扣&#xff08;LeetCode&#xff09; 示例 1&#xff1a; 输入&#xff1a;nums [1,3,4,2,2] 输出&#xff1a;2示例 2&#xff1a; 输入&#xff1a;nums [3,1,3,4,2] 输出&#xff1a;3提示&#xff1a; 1 < n &l…

由于找不到vcomp140.dll,无法继续执行代码问题的5种修复方法

在计算机使用过程中&#xff0c;我们经常会遇到一些奇怪的错误提示&#xff0c;其中最常见的就是“无法找到xxx.dll文件”。而其中一个常见的问题就是“找不到vcomp140.dll无法继续执行代码”这个错误通常会导致某些应用程序无法正常运行。那么&#xff0c;当遇到这个问题时&am…

腾讯云CVM服务器购买流程_省钱入口(一步步操作)

腾讯云服务器购买流程直接在官方秒杀活动上购买比较划算&#xff0c;在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵&#xff0c;但是自定义购买云服务器CPU内存带宽配置选择范围广&#xff0c;活动上购买只能选择固定的活动机&#xff0c;选择范围窄&#xff0c;但是…

删除链表的倒数第 N 个结点

LeetCode 19. 删除链表的倒数第 N 个结点 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *n…

Sublime Text 4 激活教程,内含码(亲测有效) 原创

给大家分享一个 Sublime Text 4 免费注册方法&#xff0c;亲测可用&#xff0c;希望能帮助到大家&#xff0c;上面是我激活成功的截图。 前言 Sublime Text 是一个轻量、简洁、高效、跨平台的编辑器。 Sublime Text具有漂亮的用户界面和强大的功能&#xff0c;例如代码缩略图…

Glide transform CircleCrop()圆图,Kotlin

Glide transform CircleCrop()圆图&#xff0c;Kotlin import android.os.Bundle import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import com.bumptech.glide.load.resource.bitmap.CircleCropclass MainActivity : AppCompatActivity() {o…

【Mybatis小白从0到90%精讲】15: Mybatis配置打印SQL日志

文章目录 前言配置日志实现前言 日志(Log)是每个程序都不可或缺的一部分,它可以帮助开发人员诊断和调试问题。Mybatis,作为一款备受赞誉的ORM框架,自然也提供了强大的日志功能。 它不仅提供了内置的标准实现,还支持集成各种主流的日志框架,让我们可以轻松地查看最终执行…

C++入门指南:string类文档详细解析(非常经典,建议收藏)

C入门指南&#xff1a;string类 一、 string类解读二、 string类的常用接口说明2.1 string类对象的常见构造2.2 string类对象的容量操作2.3 string类对象的访问及遍历操作2.4 string类对象的修改操作2.5 string类非成员函数 一、 string类解读 string类文档 具体如下&#xff…

剑指JUC原理-12.手写简易版线程池思路

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

为什么要学中文编程?它能有哪些益处?免费版编程工具怎么下载?系统化的编程教程课程怎么学习

一、为什么要学习这个编程工具&#xff1f;能给自己带来什么益处&#xff1f; 1、不论在哪里上班&#xff0c;都不是铁饭碗&#xff1a;现在全球经济低迷&#xff0c;使得很多企业倒闭&#xff0c; 大到知名国企小到私营企业&#xff0c;大量裁员。任何人都无法保证自己现在的…

操作系统学习与思考

x86体系架构 x86是因特尔8086代芯片的CPU总线位数以及寄存器种类的规范&#xff0c;大部分操作系统都是以该规范作为基准来生产的 计算机组成 CPU&#xff0c;可以根据程序计数器进行取指令操作&#xff0c;并根据指令执行运算&#xff08;加、减、乘、除&#xff09;。运算所…

从0到1:腾讯云服务器使用教程

腾讯云服务器入门教程包括云服务器CPU内存带宽配置选择&#xff0c;选择云服务器CVM或轻量应用服务器&#xff0c;云服务器创建后重置密码、远程连接、搭建程序环境等&#xff0c;腾讯云服务器网txyfwq.com分享从0到1腾讯云服务器入门教程&#xff1a; 目录 腾讯云服务器入门…

多目标优化算法:多目标霸王龙优化算法(MOTROA)MATLAB

一、霸王龙优化算法 霸王龙优化算法&#xff08;Tyrannosaurus optimization&#xff0c;TROA&#xff09;由Venkata Satya Durga Manohar Sahu等人于2023年提出&#xff0c;该算法模拟霸王龙的狩猎行为&#xff0c;具有搜索速度快等优势。 参考文献&#xff1a; [1]Venkata …

pg14-sql基础(二)-排序与统计

排序 SELECT employee_id, first_name, last_name, hire_date, salary FROM employees ORDER BY first_name; --按字母&#xff0c;默认升序 ORDER BY hire_date ASC; --升序 ORDER BY hire_date DESC; --降序SELECT employee_id, first_name, last_name, hire_date, salary F…

[MICROSAR Adaptive] --- autosar官方文档阅读建议

目前互联网上没有太多的 Adaptive AUTOSAR 的学习资料,官方文档是一个很不错的途径。看过官方文档才发现,目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译,不如直接看官方文档更全面深入。 1 Adaptive AUTOSAR 文档官方下载地址 https://www.autosar.org/sta…

百面深度学习-循环神经网络

循环神经网络 什么是循环神经网络&#xff1f; 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一类用于处理序列数据的神经网络。你可以将它想象成一个机器&#xff0c;它不仅考虑当前的输入&#xff0c;还考虑之前接收过的输入。这使得它非…

Android---彻底掌握 Handler

Handler 现在几乎是 Android 面试的必问知识点&#xff0c;大多数 Adnroid 工程师都在项目中使用过 Handler。主要场景是子线程完成耗时操作的过程中&#xff0c;通过 Handler 向主线程发送消息 Message&#xff0c;用来刷新 UI 界面。 下面我们来了解 Handler 的发送消息和处…

Jupyter 两个炸裂的骚操作!

大家好&#xff0c;Jupyter的常用功能不多说了&#xff0c;关注我的粉丝相信都比较熟悉了&#xff0c;不了解的可以看看历史文章。 今天聊两个不太常见但很有用的骚操作&#xff0c;可以为我们节省大量的时间&#xff0c;提高效率。 下面我们开始介绍。 一、获取历史执行信息…

思维模型 权威效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。人微言轻、人贵言重 1 权威效应的应用 1.1 苹果公司的权威效应和品牌效应 苹果公司是全球知名的科技公司&#xff0c;其产品以高品质、高性能和高设计感著称。苹果公司的品牌效应和权威效…