前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Python机器学习实战】感知机和支持向量机学习笔记(二)

【Python机器学习实战】感知机和支持向量机学习笔记(二)

作者头像
冬夜先生
修改于 2021-09-09 02:33:36
修改于 2021-09-09 02:33:36
6510
举报
文章被收录于专栏:csicocsico

 理论上对于线性可分的数据,采用梯度下降对SVM进行求解和学习已能满足基本要求,但考虑到非线性数据,以及问题求解的复杂程度等问题,将SVM原始问题转化为其对偶形式能够更好地解决问题,因此转化为对偶形式是必要的,总结下来,转化为对偶形式有以下好处:

  • 转化为对偶形式后,原始问题中的不等式约束将变为等式约束,便于求解;
  • 对偶问题降低了求解的复杂度,原始问题中求解w转化为对偶问题中的α,原始问题中的w与样本的特征数量有关,当数据维度过大时,求解复杂度变高,而α的求解仅与样本的数量有关;
  • 求解速度更快,当求解α时,当样本为非支持向量时,α的值为0,只有当样本为支持向量时,对应的α才为非零;
  • 对偶问题方便运用核方法解决非线性问题,引入核函数变得简单

  下面就简要介绍下SVM的对偶形式的转化过程:

SVM对偶形式的转化过程:

  根据上一节中,硬间隔SVM的目标函数(后边会说软间隔):

引入拉格朗日乘子:

分别对w,b进行求导,并令其为0,运算得:

  将其代入回拉格朗日乘子目标函数并运算(运算过程略),可得:

  对于软间隔SVM而言,其结果与硬间隔一直,差别就在于约束条件不同,下面给出软间隔SVM的对偶形式

接下来就是对SVM的对偶形式进行求解,只要求得了α*即可同步求得w*和b*,即:

  至于如何求解α*后文再进一步详细展开,在求解α*之前先对支持向量进行解释,首先描述支持向量,假设支持向量集合用SV表示,那么:

  • 在硬间隔中对任意xi∈SV<=>αi>0;
  • 在软间隔中任意xi∈SV<=>0<αi≤C;

  由于在软间隔对偶形式中已对αi进行了αi≤C限制,因此这里统一为:统一为对任意xi∈SV<=>αi>0。

 这里进一步说明一下,按照KKT条件,根据αi、ξi是如何确定分离边界和分离超平面之间的位置关系呢?具体而言:

  • 当αi=0时,此时样本xi被正确分类,样本点可能落在分离边界上也可能不落在分离边界上,xi不是支持向量;
  • 当0<αi<C时,样本xi被正确分类,且xi是支持向量;
  • 当αi=C时:
    • ξi=0时,样本xi被正确分类,样本落在分离边界上,且为支持向量;
    • 0<ξi<1时,样本xi被正确分类,样本落在分离边界和分离超平面之间;
    • ξi=1时,样本刚好落在分离超平面上;
    • ξi>1时,样本xi被错误分类。

  接下来就是求解α*的问题,目前有很多较为成熟的算法,而其中最著名的算法为SMO算法,其主要思想是在循环中选取两个变量,其余视为定值,不断构建二次规划问题,对二次函数优化问题进行求解。具体而言:

  • 目标函数及其约束条件为:
  • 对于参数(α1,α2,...,αN)所对应的样本点x1~xN,考察各个样本的KKT情况;
    • 若所有样本的KKT情况都在容许误差范围内,则训练完毕,否则选取违反KKT最严重的样本点,作为第一变量;
    • 然后选取除第一变量以外的其它的另一个变量作为第二变量,选取方法是个复杂高效的过程,但就实际应用而言,通常采用随机的方法;
    • 然后对两个选取的变量进行更新,根据更新后的两个变量更新预测值y,重复上述步骤即可(在后文中引入核函数后,一并会详细说明该步骤)。

  上述即为SMO算法的简要步骤,上面提到了KKT条件,样本点xi对应的KKT条件为:

所谓违反KKT条件最严重的样本点,这里介绍一种较为快捷有效的方法:

  • 计算样本的损失变量c,c的定义如下:

  • 将c复制三份,分别为c(1),c(2),c(3),并分情况计算对应位置的损失情况,具体来说:
    • 将αi>0或yig(xi)>1所对应的位置的ci(1)置为0;
    • 将αi=0或yig(xi)=1所对应的位置的ci(2)置为0;
    • 将αi<00或yig(xi)<1所对应的位置的ci(1)置为0
  • 然后将c(1),c(2),c(3)相加,取出损失向量中值最大的一项的下标i,该下标对应的αi作为第一变量,即:

  上述就是SMO算法的大致步骤,仅说明了参数选取的规则和方法,具体优化求解和迭代到后文中引入核函数后,一并进行解释。

核函数的引入

  当数据在低维空间线性不可分时,我们希望将其映射到高维空间变成线性可分的,如下图。因此,需要寻找一个映射φ将数据从低维空间映射到高维空间。Cover定理证明了当空间维数越大时,数据线性可分的概率越大。然而在应用过程中寻找一个映射将数据从低维到高维空间变得线性可分的难度高于问题本身,核技巧恰巧为解决这样的问题提供了便利。

  核技巧不同于核方法,核技巧更注重应用,核技巧并不注重去寻找这样一个映射,而是将这个映射的过程再次进行转化,使得映射函数φ变得不再显式表示,从而使问题变得简单。简单来说,核技巧就是利用核函数

来替代式中出现的内积(xi·xj),核技巧的基本思想如下:

  • 将算法表述成样本点的内积的组合;
  • 设法找到核函数K(xi,xj),它能返回样本点xi,xj被φ作用后的内积;
  • 用K(xi,xj)替代内积(xi·xj),完成样本从低维向高维的映射

注:任意一个损失函数加上一个单调递增的正则化项的优化问题都能利用核技巧(2002 年由 Scholkopf和Smola 证明的定理)

  那么如何寻找核函数呢?Mecer定理为核函数的寻找提供了便利,根据其定理可以证明以下函数为核函数:

  • 多项式核

  • 径向基(RBF)核也叫高斯核

核函数的应用

接下来就是核函数如何进行应用的问题,首先是在感知机中的应用,虽然感知机形式较为简单,此处运用核函数便于后边SVM中核函数的应用。

核感知机的训练过程

  感知机中只需将内积替换为核函数即可,核感知机的算法步骤:

  • 对于训练集D={(x1,y1),(x2,y2),....,(xN,yN)},
  • 初始化参数:

然后计算核矩阵:

  • 迭代次数j=1:M,对于误分类样本点集:

  若E为φ,则退出循环,否则选取E中任一个误分类的点对参数进行更新,更新过程为:

  • 利用dw和db对y进行预测:

    其中K•为K的第i行,1表示全为1的向量。

  • 最终输出模型为:

核SVM的训练过程

接下来是核SVM的训练过程,该过程也是将对偶形式中的内积形式替换为核函数即可,替换后的目标函数变为:

  不妨设α1,α2为选定的两个变量,其余均为固定值,那么上述目标函数变为:

  其中const为常数,从而问题转化为 对二次函数求极值的问题。前文已经讲述了SMO算法中如何选取变量的过程,具体训练步骤:

  • 初始化参数,并计算核矩阵:

  • 对于迭代次数j=1:M,考察样本违反KKT条件情况,选出违反KKT条件最严重的样本(上文已进行叙述),若其在容忍阈值ε内,则退出循环,否则将该样本对应下标的α作为第一变量,作为α1,随机选取第二变量α2(选取方法上文已说明)。
  • 根据选取的两个参数开始进行更新,首先更新α2,它由以下几个参数定出:

注:α2的求解可以根据上述目标函数求解出来,即将α1用α2表示,然后带回,求解一元二次函数的最大值,结果即为上式(推导过程略)。

  • 然后根据约束条件,重新确定α2的上下界:

  • 根据上下界,对α2的值进行裁剪:
  • 这里要记录下α2的增量用于更新α1,即:
  • 然后根据该增量求出新的α1,即:
  • 利用α1和α2对局部参数进行更新,分别求出dw和db:
  • 然后根据dw和db更新预测值y: 

      至此一次迭代完成,返回至第二步。

  • 输出训练模型:

      其中k满足:

      可以证明这样的k必然存在,证明从略。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【机器学习与实现】支持向量机SVM
图中深蓝色线便是决策边界,也称分离超平面;两条虚线之间宽度叫做间隔 (margin)。支持向量机的优化目标为——间隔最大化。
Francek Chen
2025/01/23
2390
【机器学习与实现】支持向量机SVM
机器学习 学习笔记(9)支持向量机
函数间隔,对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本点(xi,yi)的函数间隔为:
2018/09/03
7190
机器学习 学习笔记(9)支持向量机
【机器学习实战】第6章 支持向量机
本文介绍了基于支持向量机(SVM)的图像分类算法,该算法可以自动提取图像特征,并通过对提取的特征进行分类,从而实现图像识别的功能。在具体实现中,可以使用不同的核函数来对图像特征进行处理,以达到更好的分类效果。同时,本文还介绍了如何使用Python的Scikit-learn库来实现该算法,并给出了详细的代码示例。通过在多个图像集上的测试,该算法能够实现较高的识别准确率,具有较好的应用前景。
片刻
2017/12/29
1.1K0
【机器学习实战】第6章 支持向量机
【ML】支持向量机(SVM)从入门到放弃再到掌握
朋友,你通过各种不同的途经初次接触支持向量机(SVM)的时候,是不是会觉得这个东西耳熟能详,感觉大家都会,却唯独自己很难理解? 每一次你的老板或者同仁让你讲解SVM的时候,你觉得你看过这么多资料,使用过这么多次,讲解应该没有问题,但偏偏在分享的时候结结巴巴,漏洞百出? 每一次机器学习相关的面试在问到支持向量机(SVM)的时候,尽管你觉得你都准备好了,可是一次又一次败下阵来,以至于觉得问那些问题的人(是不是脑子有…)是那么的厉害,每一次都能精准发觉到你的不足和漏洞,让你怀疑你掌握的是假的SVM,然后让你怀疑人生? 那还等什么,快来看看这篇文章吧,原价998,现在只要。。。(不好意思,扯偏了。)
全栈程序员站长
2022/09/06
5650
【ML】支持向量机(SVM)从入门到放弃再到掌握
彻底搞懂机器学习SVM模型!
自从大半年前接触到SVM以来,感觉一直没怎么把SVM整明白。直到最近上的《模式识别》课程才仿佛打通了我的任督二脉,使我终于搞清楚了SVM的来龙去脉,所以写个博客作个总结。
算法进阶
2023/08/28
1.4K0
彻底搞懂机器学习SVM模型!
从零推导支持向量机 (SVM)
AI 科技评论按,本文作者张皓,目前为南京大学计算机系机器学习与数据挖掘所(LAMDA)硕士生,研究方向为计算机视觉和机器学习,特别是视觉识别和深度学习。
AI科技评论
2019/10/31
9100
从零推导支持向量机 (SVM)
《机器学习》-- 第六章 支持向量机
支持向量机(Support Vector Machine,SVM)是一种经典的二分类模型,基本模型定义为特征空间中最大间隔的线性分类器,其学习的优化目标便是间隔最大化,因此支持向量机本身可以转化为一个凸二次规划求解的问题。
fireWang
2020/07/31
8100
《机器学习》-- 第六章 支持向量机
关于SVM,面试官们都怎么问
持续准备面试中。。。准备的过程中,慢慢发现,如果死记硬背的话很难,可当推导一遍并且细细研究里面的缘由的话,面试起来应该什么都不怕,问什么问题都可以由公式推导得到结论,不管问什么,公式摆在那里,影响这个公式的变量就在那,你问什么我答什么。。共勉!!
NewBeeNLP
2020/08/26
1.1K0
关于SVM,面试官们都怎么问
机器学习之支持向量机—SVM原理代码实现
本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html
用户7225427
2020/09/03
3.7K0
机器学习之支持向量机—SVM原理代码实现
机器学习-20:MachineLN之SVM(2)
其实想一下从上学到毕业,学了那么多有多少是真实用到的呢?但是这些事潜移默化影响你的东西,其实我们学习的并不是真实的会这些知识(并且有很多知识现在过时),而是我们学习的是一种快速学习一门知识的能力,要的就是这个快字;怎么一个快字了得,对不光快还要稳;直到今天才真正了解一些教育的含义,并不是死记硬背,而是举一反三,并不是拿来主义,而是针对特定问题特定场景特定解决;并不是随波逐流,而是扬起自己的帆远航;并不是svm,而是一种境界;
MachineLP
2022/05/09
2280
机器学习-20:MachineLN之SVM(2)
机器学习之深入理解SVM
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/article/details/54984251
大黄大黄大黄
2018/09/14
6650
机器学习之深入理解SVM
支持向量机通俗导论(理解SVM的三层境界)【转载】
原文链接:https://blog.csdn.net/v_JULY_v/article/details/7624837
用户6021899
2019/08/21
9280
支持向量机通俗导论(理解SVM的三层境界)【转载】
机器学习实战 - 读书笔记(06) – SVM支持向量机
机器学习实战 - 读书笔记(06) – SVM支持向量机 前言 最近在看Peter Harrington写的“机器学习实战”,这是我的学习笔记,这次是第6章:SVM 支持向量机。 支持向量机不是很好被理解,主要是因为里面涉及到了许多数学知识,需要慢慢地理解。我也是通过看别人的博客理解SVM的。 推荐大家看看on2way的SVM系列: 解密SVM系列(一):关于拉格朗日乘子法和KKT条件 解密SVM系列(二):SVM的理论基础 解密SVM系列(三):SMO算法原理与实战求解 解密SVM系列(四):SVM非
绿巨人
2018/05/17
8090
学习July博文总结——支持向量机(SVM)的深入理解(上)
本文介绍了SVM(支持向量机)的原理、发展、支持向量机的各版本以及各种优化方法,比如SMO(序列最小优化)、GPU(图形处理器)加速等。对于支持向量机而言,其目标函数(二次规划问题)是凸优化问题,所以可以很好地处理线性可分问题。对于非线性问题,通过引入核函数将数据映射到高维空间从而变成线性可分,然后采用更复杂的优化方法进行处理。支持向量机在机器学习领域应用非常广泛,如文本分类、手写数字识别、人脸检测等。
剑影啸清寒
2018/01/04
1.7K0
学习July博文总结——支持向量机(SVM)的深入理解(上)
支持向量机(Support Vector Machines,SVM)
线性可分SVM学习方法,对线性不可分训练数据是不适用的,怎么将它扩展到线性不可分,需要修改硬间隔最大化,使其成为软间隔最大化。
Michael阿明
2020/07/13
1.9K1
支持向量机(Support Vector Machines,SVM)
机器学习算法复习手册——SVM
本手册整理自机器学习各相关书籍、网络资料、个人的理解与实践。总体编写宗旨: ①一看就懂; ②用20%的文字,涵盖80%的内容。 至于剩下的20%,一般属于比较偏、难的部分,建议自行查询相关书籍资料学习。而只用20%的文字,则代表手册里面几乎没有废话,也只有极少数必要的例子。
beyondGuo
2019/12/27
5660
机器学习算法复习手册——SVM
支持向量机
在逻辑回归问题中,我们希望输入sigmod函数中的函数值离0越远越好,因为离0越远,我们判断的"把握"就越大。也就是说我们希望找到一个分类器使得待分类点距离分类的平面尽可能的远,换言之也是一样分类判断的把握尽可能大。这就延伸出了一种二分类模型-支持向量机 支持向量机就是一种二分类模型,其基本模型定义为特征空间上间隔最大的线性分类器,其学习策略就是间隔最大化。
爱编程的小明
2022/09/05
1K0
支持向量机
支持向量机(SVM)学习笔记
简单点讲,SVM 就是一种二类分类模型,他的基本模型是的定义在特征空间上的间隔最大的线性分类器,SVM 的学习策略就是间隔最大化。
EmoryHuang
2022/10/31
5660
支持向量机(SVM)学习笔记
《机器学习》笔记-支持向量机(6)
作者:刘才权 编辑:田 旭 写在最前面 如今机器学习和深度学习如此火热,相信很多像我一样的普通程序猿或者还在大学校园中的同学,一定也想参与其中。不管是出于好奇,还是自身充电,跟上潮流,我觉得都值得试一试。对于自己,经历了一段时间的系统学习(参考《机器学习/深度学习入门资料汇总》),现在计划重新阅读《机器学习》[周志华]和《深度学习》[Goodfellow et al]这两本书,并在阅读的过程中进行记录和总结。这两本是机器学习和深度学习的入门经典。笔记中除了会对书中核心及重点内容进行记录,同时,也会增加自己的
机器学习算法工程师
2018/03/30
7370
《机器学习》笔记-支持向量机(6)
机器学习-支持向量机SVM算法
支持向量机(Support Vector Machine, SVM)对监督学习下二分类问题提供了一个绝妙的解决方案。通过对偶函数和核函数求解,将适用范围从二维线性推广到多维非线性模型,使用相关方法变形,也可用于多分类问题和回归问题。
唔仄lo咚锵
2023/05/23
5670
机器学习-支持向量机SVM算法
相关推荐
【机器学习与实现】支持向量机SVM
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档