机器学习算法与Python实践之支持向量机(SVM)..doc

机器学习算法与Python实践之支持向量机(SVM)..doc

  1. 1、本文档共80页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
机器学习算法与Python实践之支持向量机(SVM).

机器学习算法与Python实践之支持向量机(SVM) 目录 一、引入 二、线性可分SVM与硬间隔最大化 三、Dual优化问题 ? ? ? ?3.1、对偶问题 ? ? ? ?3.2、SVM优化的对偶问题 四、松弛向量与软间隔最大化 五、核函数 六、多类分类之SVM ? ? ? ?6.1、“一对多”的方法 ? ? ? ?6.2、“一对一”的方法 七、KKT条件分析 八、SVM的实现之SMO算法 ? ? ? ?8.1、坐标下降算法 ? ? ? ?8.2、SMO算法原理 ? ? ? ?8.3、SMO算法的Python实现 ? 一、引入 ? ? ? ?支持向量机(SupportVector Machines),这个名字可是响当当的,在机器学习或者模式识别领域可是无人不知,无人不晓啊。八九十年代的时候,和神经网络一决雌雄,独领风骚,并吸引了大批为之狂热和追随的粉丝。虽然几十年过去了,但风采不减当年,在模式识别领域依然占据着大遍江山。王位稳固了几十年。当然了,它也繁衍了很多子子孙孙,出现了很多基因改良的版本,也发展了不少裙带关系。但其中的睿智依然被世人称道,并将千秋万代! ? ? ? ? 好了,买了那么久广告,不知道是不是高估了。我们还是脚踏实地,来看看传说的SVM是个什么东西吧。我们知道,分类的目的是学会一个分类函数或分类模型(或者叫做分类器),该模型能把数据库中的数据项映射到给定类别中的某一个,从而可以用于预测未知类别。对于用于分类的支持向量机,它是个二分类的分类模型。也就是说,给定一个包含正例和反例(正样本点和负样本点)的样本集合,支持向量机的目的是寻找一个超平面来对样本进行分割,把样本中的正例和反例用超平面分开,但是不是简单地分看,其原则是使正例和反例之间的间隔最大。学习的目标是在特征空间中找到一个分类超平面wx+b=0,分类面由法向量w和截距b决定。分类超平面将特征空间划分两部分,一部分是正类,一部分是负类。法向量指向的一侧是正类,另一侧为负类。 ? ? ? ? 用一个二维空间里仅有两类样本的分类问题来举个小例子。假设我们给定了下图左图所示的两类点Class1和Class2(也就是正样本集和负样本集)。我们的任务是要找到一个线,把他们划分开。你会告诉我,那简单,挥笔一画,洋洋洒洒五颜六色的线就出来了,然后很得意的和我说,看看吧,下面右图,都是你要的答案,如果你还想要,我还可以给你画出无数条。对,没错,的确可以画出无数条。那哪条最好呢?你会问我,怎么样衡量“好”?假设Class1和Class2分别是两条村子的人,他们因为两条村子之间的地盘分割的事闹僵了,叫你去说个理,到底怎么划分才是最公平的。这里的“好”,可以理解为对Class1和Class2都是公平的。然后你二话不说,指着黑色那条线,说“就它了!正常人都知道!在两条村子最中间画条线很明显对他们就是公平的,谁也别想多,谁也没拿少”。这个例子可能不太恰当,但道理还是一样的。对于分类来说,我们需要确定一个分类的线,如果新的一个样本到来,如果落在线的左边,那么这个样本就归为class1类,如果落在线的右边,就归为class2这一类。那哪条线才是最好的呢?我们仍然认为是中间的那条,因为这样,对新的样本的划分结果我们才认为最可信,那这里的“好”就是可信了。另外,在二维空间,分类的就是线,如果是三维的,分类的就是面了,更高维,也有个霸气的名字叫超平面。因为它霸气,所以一般将任何维的分类边界都统称为超平面。 ? ? ? ?好了。对于人来说,我们可以轻易的找到这条线或者超平面(当然了,那是因为你可以看到样本具体的分布是怎样的,如果样本的维度大于三维的话,我们就没办法把这些样本像上面的图一样画出来了,这时候就看不到了,这时候靠人的双眼也无能为力了。“如果我能看得见,生命也许完全不同,可能我想要的,我喜欢的我爱的,都不一样……”),但计算机怎么知道怎么找到这条线呢?我们怎么把我们的找这条线的方法告诉他,让他按照我们的方法来找到这条线呢?呃,我们要建模!!!把我们的意识“强加”给计算机的某个数学模型,让他去求解这个模型,得到某个解,这个解就是我们的这条线,那这样目的就达到了。那下面就得开始建模之旅了。 ? 二、线性可分SVM与硬间隔最大化 ? ? ? 其实上面这种分类思想就是SVM的思想。可以表达为:SVM试图寻找一个超平面来对样本进行分割,把样本中的正例和反例用超平面分开,但是不是很敷衍地简单的分开,而是尽最大的努力使正例和反例之间的间隔margin最大。这样它的分类结果才更加可信,而且对于未知的新样本才有很好的分类预测能力(机器学习美其名曰泛化能力)。 ? ? ? 我们的目标是寻找一个超平面,使得离超平面比较近的点能有更大的间距。也就是我们不考虑所有的点都必须远离超平面,我们关心求得的超平面

文档评论(0)

fglgf11gf21gI + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档