笔记(总结)-SVM(支持向量机)的理解-4

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

前三篇主要是介绍SVM的原理。最初SVM的原问题是凸二次优化问题,有现成的算法可以求解,费尽周折转换到对偶问题,一是在对偶问题形势下可以使用核函数,二是对偶问题我们可以高效求解。本篇主要介绍如何求解SVM。

SMO:Sequential Minimal Optimization


Coordinate Ascent(坐标上升法)

回到我们的对偶问题:

maxW(α)=iαi12ijαiαjyiyjxTixj max W ( α ) = ∑ i α i − 1 2 ∑ i ∑ j α i α j y i y j x i T x j

s.t. iαiyi=0, 0αiC s . t .   ∑ i α i y i = 0 ,   0 ≤ α i ≤ C

上述问题仅仅是关于一系列 α α 的优化问题,即:

maxαW(α1,...,αm) m a x α W ( α 1 , . . . , α m )

考虑使用坐标上升法解决该问题:
这里写图片描述
算法内层循环将 αi α i 看做变量,其他的 α α 看做常量进行优化。在二维情况下,函数等高线图的优化路线如下:
这里写图片描述
可以看到,每一步优化中,都固定了一个变量,让另一个变量取值使目标函数“最优”,交替更新两个变量直到收敛或达到某种停止条件。然而由于如下限制,无法在对偶问题中使用坐标上升法求解:

α1=y1ni=2αiyi α 1 = − y 1 ∑ i = 2 n α i y i

假如我们想固定其他变量,更新 α1 α 1 ,由于对偶问题的约束,固定其他变量后 α1 α 1 为常量。

SMO Algorithm

只选取一个 αi α i 更新是不行的,那么考虑一次至少更新两个变量。这便是SMO算法的动机由来,算法如下:
这里写图片描述

算法思想很简洁,先按某种方式选定要更新的两个变量 αi,αj α i , α j ,然后固定其它变量对 αi,αj α i , α j 进行更新来优化 W(α) W ( α )

优化步骤

例如我们现在想优化 α1,α2 α 1 , α 2 ,由约束可以得到:

α1y1+α2y2=ni=3αiyi=,ζ α 1 y 1 + α 2 y 2 = − ∑ i = 3 n α i y i = 常 数 , 记 为 ζ

又由对偶问题约束 0αiC 0 ≤ α i ≤ C 可以得到可行解如下图, α1,α2 α 1 , α 2 必须位于直线 α1y1+α2y2=ζ α 1 y 1 + α 2 y 2 = ζ 被矩形区域 [0,C]×[0,C] [ 0 , C ] × [ 0 , C ] 截断的线段上:
这里写图片描述

由直线约束可以将 α1 α 1 表示为 α2 α 2 的函数,即:

α1=(ζα2y2)y1 α 1 = ( ζ − α 2 y 2 ) y 1

由此得到目标函数的表达式为:

W=W((ζα2y2)y1,α2,...,αm) W = W ( ( ζ − α 2 y 2 ) y 1 , α 2 , . . . , α m )

将目标函数展开,得到一个关于 α2 α 2 的开口向下的二次函数,当不考虑矩形区域约束时可以直接求导,得到最优解 αopt2 α 2 o p t 。然而实际情况中由于矩形约束, α2 α 2 通常有取值区间 [L,H] [ L , H ] ,考虑最优解和取值区间的关系,更新得到实际最优值:

α2=H,    αopt2>Hαopt2, Lαopt2HL,    αopt2<H α 2 ∗ = { H ,         α 2 o p t > H α 2 o p t ,   L ≤ α 2 o p t ≤ H L ,         α 2 o p t < H

当得到 α2 α 2 ∗ 后,可以依据直线约束更新 α1 α 1

选择步骤

选择违反KKT条件最多的样本对应的 α α 作为第一个变量,即对于每个训练样本,检查是否满足KKT条件(可参考SVM第2篇),选择不满足中程度最大者:

          αi=0xiyi(wTx+b)1                     α i = 0 ⟺ x i 非 支 持 向 量 ⟺ y i ( w T x + b ) ≥ 1

0<αi<Cxiyi(wTx+b)=1 0 < α i < C ⟺ x i 在 边 界 上 ⟺ y i ( w T x + b ) = 1

                 αi=Cxiyi(wTx+b)1                                   α i = C ⟺ x i 可 能 被 错 误 分 类 ⟺ y i ( w T x + b ) ≤ 1

对于第二个变量,应该选择一个使目标函数数值增长最快的变量,但由于比较各变量所对应的目标函数值增幅的复杂度过高,SMO采用启发式规则,使选取的两变量对应样本之间间隔最大,直观上看,这样选取的两个变量差异较大,相比于对两个相似变量进行更新,差异更大的变量能对目标函数带来更大的变化。

至此我们得到了SMO的完整算法。


四篇过后,SVM基本讲述清楚。参考来源之前的总结博客有记述传送门,同时还参考了国科大《模式识别与机器学习》091M4042H课程兰艳艳老师slides。

支持向量机SVM 在很久很久以前的情人节,大侠要去救他的爱人,但魔鬼和他玩了一个游戏魔鬼早桌子上似乎有规律放了两种颜色的球,说:"你用一根棍分开它们.要求:尽量在放更多球之后,仍然使用."让我们引入一个函数f(x),图像如下图所示.将x的每个值映射到其对应的输出.使得所有蓝点在Y轴的输出更大,而红点在Y轴的输出偏小.此时,我们可以使用一条水平线将数据完美分类。此时,求解当a是什么值时,该值会变得很大,当求出a值,在求解w,b值.此时,就变成了极大极小值问题。 阅读详情

相关推荐

简单点理解 SVM支持向量机

1、SVM简介 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。可能不好理解,那我们来举个例子吧 根据体重判断小鼠是否肥胖,首先得找到一个阈值,这个阈值怎么找呢?按从小到

qq_56688614的博客 3218

支持向量机(上)

支持向量机(support vector machines, SVM)是一种二分类模型,当然它也可以用作解决回归问题,这里我们只讲解其在分类问题上的应用。之前已经写过感知机模型,支持向量机就是在感知机的基础上加上了间隔最大化的概念以及核技巧,间隔最大化使得其泛化能力要优于感知机模型,而核技巧使其具有了处理线性数据的能力。 支持向量机分为: 线性可分支持向量机 线性支持向量机 线性支持向...

yy2050645的博客 754

支持向量机SVM

支持向量机一、优化目标1.1 支持向量机1.2 建立支持向量机二、大边界的直观理解2.1 代价函数2.2 间距2.3 决策边界2.4 C的设置三、大边界分类3.1 内积3.2 支持向量机四、核函数4.1 对原有特征进行组合4.2 利用核函数计算新特征4.3 例4.4 选择地标4.5 支持向量机假设4.6 支持向量机参数C和σ的影响五、使用支持向量机5.1 步骤5.2 使用准则 一、优化目标 1.1 支持向量机 支持向量机(Support Vector Machine),简称SVM,在学习复杂的线性方程时

weixin_45242264的博客 3423

支持向量支持向量

支持向量是指那些距离超平面最近的且满足一定条件的训练样本点。在分类问题中,支持向量对于确定分类边界起着关键作用。对于线性可分的情形,位于间隔边界上的样本点被称为硬间隔的支持向量;而对于线性不可分的情形,位于间隔边界上及间隔边界之内的样本点被称为软间隔的支持向量。这些支持向量具有一些特定的性质,例如它们一定位于正确划分的分区内,并且不会出现在间隔意外的正确划分分区。支持向量机SVM)是一种强大的机器学习算法,主要用于分类和回归分析。在SVM中,目标是找到一个。

AndrewPerfect的博客 2300

机器学习——所有支持向量的拉格朗日乘子一定为0

问:SVM模型求解过程中所有支持向量的拉格朗日乘子一定为0。

qq_53142796的博客 362

SVM(Support Vector Machines):支持向量机

支持向量机以前很火了。 现在风头被深度学习给占据了。

a130737的专栏 1699

机器学习svm

1. SVM 原理 a.SVM 是一种二类分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。 b.当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机; c.当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机; d.当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习线性支持向量机。 2. S...

weixin_41724761的博客 457

支持向量机SVM通俗理解(python代码实现)

这是第三次来“复习”SVM了,第一次是使用SVM包,调用包并尝试调节参数。听闻了“流弊”SVM的算法。第二次学习理论,看了李航的《统计学习方法》以及网上的博客。看完后感觉,满满的公式。。。记不住啊。第三次,也就是这次通过python代码手动来实现SVM,才让我突然对SVM不有畏惧感。希望这里我能通过简单粗暴的文字,能让读者理解到底什么是SVM,这货的算法思想是怎么样的。看之前千万不要畏惧,说到底就...

程松 9万+

SVM支持向量机详解

支持向量机(support vector machines, SVM)是二分类算法,所谓二分类即把具有多个特性(属性)的数据分为两类,目前主流机器学习算法中,神经网络等其他机器学习模型已经能很好完成二分类、多分类,学习和研究SVM理解SVM背后丰富算法知识,对以后研究其他算法大有裨益;在实现SVM过程中,会综合利用之前介绍的一维搜索、KKT条件、惩罚函数等相关知识。本篇首先通过详解SVM原理,后介绍如何利用python从零实现SVM算法。 为便于理解,假设样本有两个属性,可以把属性值分别对应到二...

m2xgo的博客 2万+

支持向量机SVM—实现多分类问题的解决方案

支持向量机SVM—实现多分类问题的解决方案前言一、支持向量机SVM如何应用在多分类问题中?二、解决方案1.引入库2.读入数据3.读入数据4.读入数据总结 前言 众所周知,支持向量机SVM机器学习中典型的二值分类算法。但现实生活中,有很多实际应用是没有办法用简单的二值分类器去完成分类的。因此,为了拓展支持向量机SVM的应用场景,必须考虑在多分类情况下的算法实现。 一、支持向量机SVM如何应用在多分类问题中? 原本应用在二值分类上的SVM算法是否可以应用在多分类问题上呢?答案是肯定的。 通过重新构造后。.

weixin_44822636的博客 1万+

支持向量机通俗导论(理解SVM的三层境界)

            支持向量机通俗导论(理解SVM的三层境界) 作者:July 。致谢:pluskid、白石、JerryLead。 说明:本文最初写于2012年6月,而后不断反反复复修改&优化,修改次数达上百次,最后修改于2016年11月。 声明:本文于2012年便早已附上所有参考链接,并注明是篇“学习笔记”,且写明具体参考...

深耕汽车电子:AUTOSAR、电机控制,助力数字汽车 4032

PyTorch支持向量机SVM)详解

支持向量机是一种二分类算法,其目标是找到一个最优的超平面,将不同类别的数据点分隔开。这个超平面被称为决策边界,支持向量机的任务是找到使决策边界最佳的超平面。适用于线性和线性分类问题。在高维空间中表现出色,适用于处理具有大量特征的数据。通过选择支持向量(距离决策边界最近的数据点)来提高模型的鲁棒性。支持向量机的核心思想是最大化分类间隔(两个类别之间的距离),以确保决策边界尽可能远离数据点。这种距离通常称为间隔(margin)。在下一节中,我们将深入探讨支持向量机的工作原理。

DeepViewInsight的博客 7494

支持向量机SVM——简单实例应用

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考支持向量机(Support Vector Machine,SVM)是一种常见的监督学习算法,用于分类和回归任务。SVM的目标是构建一个能够将不同类别的数据点尽可能正确地分隔开的决策边界。核函数是支持向量机SVM)中的一种技术,用于将数据从原始特征空间映射到另一个高维特征空间。

fjstjsjg的博客 3332

深入浅出理解SVM支持向量机

SVM是啥? SVM(全称Support Vector Machine)中文名支持向量机, 这里的vector就是数学中那个向量。SVM用到向量,然后它的功能就和它的名字没什么关系了。 SVM用于解决分类问题,何为分类呢?顾名思义,就是把你拥有的数据分成几类。 SVM是有监督学习,我们先给一部分数据打上类别标签,让SVM模型使用这些打了类别标签的数据进行训练,训练后,给训练好的SVM模型新的无类别标签的数据,SVM模型就可以自动对这些新的数据分类。 如图,有一些样本点,现在我们需要对两组..

MengHao的博客 6628

MATLAB支持向量机SVM代码实现

本栏目(Machine learning)包括单参数的线性回归、多参数的线性回归、Octave Tutorial、Logistic Regression、Regularization、神经网络、机器学习系统设计、SVM(Support Vector Machines 支持向量机)、聚类、降维、异常检测、大规模机器学习等章节。所有内容均来自Standford公开课machine learning

wenyusuran的专栏 4万+

基于SVM支持向量机实现人脸识别

文章目录基于SVM支持向量机实现人脸识别SVM支持向量机的定义SVM支持向量机的原理作用如何计算SVM支持向量机的权值w和偏置项b代码实现原理步骤代码实例演示: 基于SVM支持向量机实现人脸识别 本人本科大三,985,211出身,这是我写的第一篇博客,其目的是对我这段时间学习SVM支持向量机和PCA降维算法的一次总结。若有错误之处,还请各位路过的大神积极指正。若要转载,请注明出处,谢谢! SVM支持向量机的定义 支持向量机(support vector machines,SVM)是一种十分优秀的二分类算法

小叶MW 的博客 3673

支持向量机SVM算法原理

SVM 的英文叫 Support Vector Machine,中文名为支持向量机。它是常见的一种分类方法,在机器学习中,SVM 是有监督的学习模型。 什么是有监督的学习模型呢?它指的是我们需要事先对数据打上分类标签,这样机器就知道这个数据属于哪个分类。同样无监督学习,就是数据没有被打上分类标签,这可能是因为我们不具备先验的知识,或者打标签的成本很高。所以我们需要机器代我们部分完成这个工作,比...

qiu_zhi_liao的博客 1749

支持向量机(SVM)

综述支持向量机(Support Vector Machines), 是一种二分类模型.也可以通过技巧,转化为多分类模型.比如说libSVM中就使用了one-against-one的策略使得SVM能够扩展到多分类.而libLiner则使用了one-against-rest的策略来扩展SVM. 支持向量机的基本模型: 定义在特征空间上的间隔最大化的线性分类器(间隔最大化也使得SVM区别于感知机

小贝也沉默的博客 3255

SVM支持向量机

SVM是一种有监督的学习方法,即已知训练点的类别,求训练点与类别之间的对应关系。 从理论基础分析到数学推导,详细介绍SVM算法的算法由来和推导过程。

SJ1820161738的博客 2952
上一篇: 笔记(总结)-SVM(支持向量机)的理解-3
下一篇: 笔记(总结)-PCA(主成分分析)
ZSYGOOOD
博客等级 码龄12年 113粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值