《基于Python的支持向量机分类算法研究分析计算机科学与技术专业.docx》由会员分享,可在线阅读,更多相关《基于Python的支持向量机分类算法研究分析计算机科学与技术专业.docx(27页珍藏版)》请在优知文库上搜索。
1、摘要在大数据盛行的时代背景下,机器学习这门学科的广泛应用。并且列举运用PythOn语言进行数据处理的优势,将其与传统语言进行对比,充分体现了PythOn语言在语言简洁,效率高等方面的优势。这也是本文最后选择PythOn语言实现SVM算法的主要原因。本文主体内容阐述了支持向量机算法(SVM)的基本内涵,并且用图示和数学方法形象具体讲解了SVM的基本原理。具体分析了SVM算法中线性可分数据、线性不可分数据和含有。Utlier点的数据集的分类方式。通过对偶问题求解法、核函数、及SMO算法等实现了对最优超平面的求解。并且完成了二分类问题向多标签分类问题的推广。文章通过,使用手写数字数据集在PythOn
2、上进行SVM模型的训练与测试,体会SVM算法如何解决实际问题。具体的表现了用Python语言实现SVM算法的优势,直观的展现了实验成果。关键字:机器学习PythonSVM最优超平而核函数AbstractIntheeraoftheprevalenceofbigdata,machinelearningiswidelyusedinthisdiscipline.AndenumeratetheadvantagesofusingPythonlanguagefordataprocessing,compareitwithtraditionallanguages,andfullyembodytheadvanta
3、gesofPythonlanguageintermsofsimplelanguageandhighefficiency.ThisisthemainreasonwhythisarticlechoosesthePythonlanguagetoimplementtheSVMalgorithm.ThemaincontentofthispaperexpoundsthebasicconnotationofSupportVectorMachine(SVM),andexplainsthebasicprincipleofSVMconcretelywithgraphicandmathematicalmethods
4、.TheclassificationOfIinearlyseparabledata,linearlyindivisibledata,anddatasetswithoutlierpointsintheSVMalgorithmisspecificallyanalyzed.Thesolutiontotheoptimalhyperplaneisachievedthroughthedualproblemsolvingmethod,kernelfunction,andSMOalgorithm.Andithascompletedthepromotionofthetwo-classificationprobl
5、emtothemulti-labelclassificationproblem.Passingtheendofthearticle,usingthehand-writtendigitaldatasettotrainandtesttheSVMmodelinPython,tounderstandhowtheSVMalgorithmsolvespracticalproblems.ThespecificperformanceoftheSVMalgorithmusingPythonlanguageadvantages,intuitivedisplayoftheexperimentalresults.Ke
6、ywords:machinelearning,Python,SVM,optimalhyperplane,kernelfunction第一章绪论1.1 机器学习随着互联网计算机技术的普及应用与发展,随处可见的数据信息数量日益庞大,数据与信息与人们的生活愈发的息息相关。数据量的不断扩大和信息获取方式的不断增多,带来了信息处理日益困难的问题。伴随着硬件性能的快速增长,人们寄希望于计算机可以帮助人类处理越来越庞大的数据。因此,机器学习在近年来得以迅速兴起与发展。机器学习(MaChineLeaming,ML)是集合了多种领域知识的一门学科,涵盖统计学、概率论、算法复杂度理论等多个领域。用于研究计算机通过
7、模拟人类的学习行为,并且由此去的新知识和技能的能力。机器学习是计算机人工智能的核心,被应用于人工智能的多个领域。顾名思义,机器学习是使用机器来模拟人类学习行为的一项技术。具体来说,机器学习是一门训练机器获取新知识或新技能,包括获取现有知识的学科。这里所说的“机器”,指的就是计算机、电子计算机、中子计算机、光子计算机或神经计算机等等。机器学习已经在很多领域进行了广泛应用,例如:计算机视觉、DNA序列测序、语音识别、手写识别、医学诊断。机器学习算法是一种能够从数据中进行持续学习的算法。MitChen(1997)为其提供了一个简洁的定义:对于某类任务T和性能度量P,一个计算机程序被认为可以从经验E中
8、学习是指,通过经验E改进后,它在任务T上由性能度量P衡量的性能有所提升。其中任务T指的是人们希望机器可以实现的功能。在分类、回归、异常检测、转录、机器翻译等任务上,机器学习已经有了广泛的应用。而获取经验E的过程可以分为无监督算法和有监督算法。两者的区别在于是否对数据集中的数据样本给予标签。1.2 支持向量机在监督学习中,支持向量机是影响力最大的机器学习方法之一。支持向量机由CorinnaCortes和Vapnik等人于1995年提出,其创新的核技术使其不再局限于对线性数据的处理,在对于非线性数据的分类上也有了良好的表现,并已被广泛应用于文本识别、手写字体识别、及时间序列预测等小型分类任务中。支
9、持向量机(SUPPortVectorMachines,SVM)这种机器学习方法是以统计学理论、VC维理论和结构风险最小化原理为基础的。在解决特定问题,如小样本、非线性和高维模式问题时表现优异,并且大大优化克服了机器学习中会遇到的“维数灾难”问题与“过学习”问题。SVM具有如下特点:(1)以非线性映射为理论基础,利用内积核函数实现由低维空间到高维空间的非线性映射。(2)以寻找最优超平面为目标,核心思想为最大化分类间隔。(3)以少数支持向量为训练结果,去除了大量冗余样本,具有良好的鲁棒性。(4)理论基础坚实、数学模型简单明了,可以归结为一个受约束的二次型规划(QuadraticProgrammin
10、g,QP)的求解问题。(5)可以运用牛顿法、内点法等经典优化算法,方便快捷地求得最优解。SVM作为一类二分类模型,可以处理以下三类数据:(1)线性可分数据。使硬间隔最大化,进行线性分类器学习(2)近似线性可分数据。使软间隔最大化,进行线性分类器学习(3)线性可分数据。使核函数与软间隔最大化,进行非线性分类器学习。平面内的直线,对应线性分类器;平面上的曲线,对应非线性分类器。硬间隔虽然可以将线性可分数据集中的样本正确分类,但是受到OUuier样本的很大影响,不推荐使用。软间隔可以对近似线性可分数据和非线性可分数据进行分类,离超平面很近的outlier点可以允许被错误分类,从而可以更广泛的应用。1
11、.3 Python语言PythOn这门语言已经产生并发展了30余年,是目前最受欢迎的程序设计语言,也是通用编程语言中最接近自然语言的。Python侧重于求解计算问题,其具有语法简单,语言表达层次高等特点,这与计算机问题解决中的思维理念相吻合。Python语言将问题和问题的解决方案进行简化,从而达到问题的自动化求解,是当下最直观的利用计算机解决复杂信息系统的工具。Python语言的适用群体广泛,任何需要使用计算机来解决计算问题的人群都可以使用,即使是非计算机专业从业人员。Python语言是一种轻化语法,弱化类型的计算机语言,同C语言等相比较,不需要指针和地址等计算机系统内必须的结构元素;可以不定
12、义变量就直接使用(解释器会自动匹配);语言内部通过UTF-8编码来实现,字符串类型独立,操作多语言文本时,语言大大简化,可以优秀的支持中文;运用变长列表代替定长数组,可以将多种数据类型进行兼容并可以灵活地表示集合长度。PythOn语言除了有基本语法,还是一个脚本语言,直接运行源代码便可以执行,这可以让程序运行和源代码相融合。这种模式的优势在于:(1)有利于源代码维护。(2)可以跨操作系统操作。(3)可以实现代码的交流与设计。Python具有简洁的语言代码,能支持两种设计方法,即:面向过程与面向对象这两种设计方法,且不需要通过函数封装程序,因此代码长度仅为C语言代码长度的十分之一到五分之一。综合
13、以上所谈,总结PythOn语言的优点如下:(I)PythOn这种解释语言可大大方便编程。解释语言具有先天优势,即:不需要编译时间,可以大大提高工作效率。(2)PythOn有很多非常成熟的库可以利用,开发生态优秀。如:NumPy(存储和处理大型矩阵)、SciPy(高效的数学运算)、pandas(处理数据的函数和方法)、matplotlib(数据操作、聚合和可视化)等。(3)PythOn的运行效率不低。与PythOn友好的库可以提高程序运行的速度,在团队的有力支撑下,库的效率可比程序员用C语言调试优化一个月的效率还高。在本文中,介绍了支持向量机可解决的线性数据分类、近似线性数据分类和非线性数据分类
14、这三类问题,并且通过使用具有编写效率高、语言简洁和可直接使用的第三方支持库种类全面等特点的Python来实现SVM算法,快捷便利地实现数据样本的分类问题,展现了SVM与Python在机器学习方面的优势所在。1.4 论文主要研究内容本文分析了在信息化飞速发展的大数据背景下,运用Python语言处理数据的优势与可行性,重点讲解了SVM算法的基本原理,和在面临不同数据集的分类问题时所用的具体方法,对此进行了详尽的数学分析和原理阐述。并最终用PythOn语言实现了多标签的SVM分类训练。第二章支持向量机的原理2.1 线性可分问题对于一个给定的数据样本集D=O,yJ,(冗2,、2),,Qn,%),支持向
15、量机的基本原理就是要在给定的样本空间中找到一个超平面将不是同一类型类型的数据样本分开。如图2.1所示,在如下的二维平面中,将两种不是同一类型的数据分别用图形0和X进行表示,对于线性可分的两类数据,可以用一条直线将两类数据分开。这样的直线就是一个超平面。将这条直线一侧的数据点标记为y=-l,另一侧的数据点标记为y=lo如图2.2所示,在一个给定样本空间中,超平面可由式(21)表示:Wx+b=0(2-1)式中,用W=(W1;1%;Wd)表示超平面的法向量,位移项则用常数人表示。由法向量W和位移项人确定的划分超平面记为(W/)。对于数据集里任意数据点,当为二1时,有W7+b0,当时,有Wxi+b0,
16、即:(Wxi+bltyi=1(Wxi+b-1,%=-1当式中等号成立的时候,项为距离超平面最近的样本点,这些样本点被称为支持向量。2.2 函数间隔与几何间隔通过观察卬/勺+b的符号与力的符号一致与否可判断分类超平面是否选取正确,所以,可以用%(W0i+b)的正负性来判断分类的正确性,由此,定义函数间(Functionalmargin)为:Yf=y(Wx+b)(2-3)据此,在超平面(W,b)中关于样本集D中的所有样本点(看,)的最小函数间隔值便是超平面(W,b)对于样本集D的函数间隔:Yf = minyF(i=l,.,n)(2-4)但是,当卬和成比例改变时,函数间隔的值也会成比例变化,如卬和b变化为3W和3人时,函数间隔的值也会变为原值的3倍,所以如此定义的函数间隔是不