版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章概论西华大学机器学习第九章支持向量机XXX学校XXX2022目录Contents线性支持向量机非线性分类手写数字识别
知识引入3人们把这些球叫做“data”,把棍子叫做“classifier”,最大间隙叫做“optimization”,拍桌子叫做“kernelling”,那张纸叫做“hyperplane”,这就是支持向量机的核心思想。
本章知识图谱4线性支持向量机一1线性支持向量机6
一个最基本的支持向量机(SupportVectorMachine,SVM)是一条直线,它能够用来完美划分线性可分的两种类别。但这又不是一条普通的直线,这是无数条可以分类的直线当中最完美的,因为它恰好在两个类的中间,距离两个类的点都一样远。在进一步了解支持向量机的原理之前,我们需要先了解其基本的数学原理。1.1间隔与支持向量7
图的(b)和(c)分别给出了B、C两种不同的分类方案,其中黑色实线为分界线,术语称为“分割超平面”(separatinghyperplane)。每个分割超平面对应了一个线性分类器。虽然从分类结果上看,分类器A和分类器B的效果是相同的。但是它们的性能是有差距的。1.1间隔与支持向量8
添加一个红点(图中箭头所示)。可以看到,分类器A依然能很好的分类结果,而分类器B则出现了分类错误。显然分类器A的“分割超平面”放置的位置优于分类器B放置的位置,SVM算法也是这么认为的,它的依据就是分类器A的分类间隔比分类器B的分类间隔大。这里涉及到第一个SVM独有的概念——分类间隔。1.1间隔与支持向量9
在样本空间中,划分超平面可以通过如下线性方程表示:
1.1间隔与支持向量10
距离超平面最近的几个训练样本点使式(9-3)的等号成立,称为支持向量(supportvector)。两个异类支持向量到超平面的距离之和为
被称为“间隔”(margin)。1.1间隔与支持向量11
1.2对偶问题12通过上一节讲解,我们希望通过求解式(6)来得到划分超平面对应的模型。令
1.2对偶问题13
1.2对偶问题14可将式(9)带入式(7)得到:
在式(12)中,只需要再知道拉格朗日乘子α和偏移量b就能确定超平面方程了。其中有一种SMO(SequentialMinimalOptimization)算法可以用来求解α和b。将在下一小节中专门介绍其算法思想。1.3SMO算法15SMO表示序列最小优化,其核心思想是将大优化问题分解为多个小优化问题来求解。这些小优化问题一般很容易求解,并且对它们进行顺序求解的结果与将它们作为整体来求解的结果是完全一致的。在结果完全相同时,SMO算法的求解时间会短很多。
1.3.1简化版SMO16
首先需要一个加载函数loadDataSet()对文件进行逐行解析,得到每一行类标签和整个数据矩阵。需要构建一个辅助函数selectJrand(),用于在某一区间范围内随机选择一个整数。同时需要一个辅助函数clipAlpha(),在数值较大时对其进行调整。1.3.1简化版SMO算法17
接下来实现简化版SMO的功能。由于程序较为复杂,为了方便读者理解,提供了该函数的伪代码。1.3.1简化版SMO算法18简化版SMO代码:smoSimple()一共有五个参数,分别表示数据集、标签类别、常数C、容错率、退出当前循环最大修改次数。测试结果:1.3.2完整版SMO算法19完整版SMO代码:
完整版SMO在alpha更改和代数运算优化的环节都一样,唯一区别在于选择alpha的方式不同。完整版的SMO算法添加了一些能够提速的启发方法。PlattSMO算法通过第一个外循环来选择第一个alpha并且选择过程是两种方式之间交替进行。一种方式是所有数据集上进行单遍扫描;另一种方式是在非边界alpha中实现单遍扫描。测试结果:可以看出,相比简化版SMO,完整版SMO算法选出的支持向量样点更多,更接近理想的分隔超平面。非线性分类二2.1核函数概述21解决现实任务中,样本空间中可能不存在一个能正确划分两类样本的超平面的问题。原始空间更高维空间映射通过核函数实现将样本从原始空间映射到一个更高维的空间。2.1核函数概述22注意:样本特征空间的好坏对支持向量机的性能至关重要。在不知道特征映射的形式时,我们并不知道什么样的核函数是适合的,于是核函数的选择显得至关重要。下面是几种常见的核函数:
表达式参数线性核
多项式核高斯径向基核拉普拉斯核Sigmoid核2.2高斯径向基核函数23
径向基函数是SVM中常用的一个核函数,它是一个采用向量作为自变量的函数,能够基于向量距离运算输出一个标量。这个距离可以是从(0,0)向量或者其他向量开始计算的距离。接下来将会使用到径向基函数的高斯版本,表达式如下:
2.2高斯径向基核函数241.核转换函数数据集X和数据集某一行之间进行运算输出核向量Kfor循环对矩阵的每个元素计算高斯函数的值如果kTup无法识别,就会抛出异常。2.2高斯径向基核函数252.辅助函数
为了顺利使用核函数,还需要修改先前两个函数innerL()和calcE()中的个别语句,在函数innerL(i,oS)中做如下对应修改:#最优修改量,求两个向量的内积(核函数)#eta=2.0*oS.X[i,:]*oS.X[j,:].T-oS.X[i,:]*oS.X[i,:].T-oS.X[j,:]*oS.X[j,:].Teta=2.0*oS.K[i,j]-oS.K[i,i]-oS.K[j,j]#更新常数项b1b2改为b1=oS.b-Ei-oS.labelMat[i]*(oS.alphas[i]-alphaIold)*\oS.K[i,i]-oS.labelMat[j]*(oS.alphas[j]-alpahJold)*oS.K[i,j]b2=oS.b-Ej-oS.labelMat[i]*(oS.alphas[i]-alphaIold)*\oS.K[i,j]-oS.labelMat[j]*(oS.alphas[j]-alpahJold)*oS.K[j,j]calcEk(oS,k)中做如下修改:#fXk=float(multiply(oS.alphas,oS.labelMat).T*(oS.X*oS.X[k,:].T))+oS.bfXk=float(multiply(oS.alphas,oS.labelMat).T*oS.K[:,k]+oS.b)2.2高斯径向基核函数263.测试核函数测试一下核函数是否运行成功,这里使用参数kl值为1.3输出测试结果:
选择出了27个支持向量,在训练集上的错误率为3%,在测试集上的错误率为4%。读者还可尝试使用不同的kl参数值,观察支持向量个数、错误率、训练错误的变化情况,尝试找到最优值。案例:手写数字识别三3.2案例实现24
使用Python的机器学习库sklearn,通过高斯径向量核函数实现SVM,主要是通过sklearn.svm中的SVC类来实现的,实现的方法主要包括三个步骤:创建SVC对象并进行初始化。调用对象的fit方法进行训练函数格式:fit(X,y)说明:以X为训练集,以y为目标值对模型进行训练。调用对象的predict方法进行预测(1)函数格式:clf.predict(T)(2)主要参数:用于测试的数据集T。3.2案例实现
针对本案例,可以按照以下步骤来实现:通过img2vector(filename)函数将32x32的二进制图像转
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业财务报表分析与风险评估方法
- 服装设计公司生产经理职责及面试流程
- 客服代表日常工作报表编制指南
- 房地产项目-万科项目经理的规划与安排
- 建筑设计师成本估算员面试要点
- 京东集团内部讲师选拔标准
- 餐饮业销售经理的挑战与机遇
- 公共交通公司办公室负责人工作手册及面试要点
- 能源行业高级工程师招聘标准
- 企业内训师职责与招聘面试技巧
- 篮球双手传接球课件
- 加药间设备工程施工方案
- 物业拍摄技能专项培训
- 机械设备入股协议书
- 2025-2026学年外研版高二英语上学期必刷常考题之完形填空
- 端到端成本流程一体化管控-1
- 生猪饲料购销合同范本
- 计算机垃圾清理
- 机修钳工中级模拟练习题(含答案)
- 护理高职高考重庆题目及答案
- 2025年湘潭医卫职业技术学院单招职业倾向性考试题库含答案详解
评论
0/150
提交评论