<基础原理进阶>机器学习算法python实现【4】--文本分析之支持向量机SVM【上】

本文介绍了支持向量机(SVM)的基本思想和框架,强调SVM寻找最优超平面以最大化间隔,从而提高分类的容错率。文章从二维平面的直观解释出发,探讨了函数间隔与几何间隔的概念,并简述了SVM的数学框架,包括Lagrange对偶、SMO算法和参数更新公式。后续内容将逐步展开SVM的Python实现。
摘要由CSDN通过智能技术生成

上一章说完了朴素贝叶斯,今天来说一个几乎最强的监督学习分类器--支持向量机SVM。SVM和Logistic 回归一样属于判别学习,朴素贝叶斯属于生成学习。

几乎所有详细讲SVM的讲义、书本都用很长的篇幅来讲SVM,所以这篇blog也分成上下篇来讲比较符合fashion(笑)本篇的SVM内容讲解包括:

i) SVM的基本思想

ii) SVM的框架: 输入,优化目标,输出等等内容

iiii) 数学工作全部做完之后一步一步来写最简单版本的代码


一. SVM基本思想

一上来断句的话很容易误读成“支持/向量机”,嗯...其实并没有向量机这个东西,正确的读法是“支持向量/机”,表明其主体是一系列“支持向量 support vectors”。

SVM的想法很朴素:对于二分类问题,目标是要找一个超平面把它们划分开来。假定二维平面那么就是寻找一条“好“”的直线分开它们。什么是好的直线?SVM认为,假如对于一条线,离它最近的点到直线的距离是“所有可能的直线候选的离它最近的点到它的距离”中最大的那一个,那么它就最优的。表现在图像上,可以理解为存在一条直线将两类点正确地划分成左右两边,而且离两边的点都比较远,这样就不错了。因为这样有很强的容错率,对于稍微分类模糊一点的点也能正确分类;否则其他直线很可能就错分了。


二.SVM基本框架(一直以二维平面为例,并略去大部分数学推导)

***

数学推导请参考吴恩达的机器学习讲义part V等资料以及该blog:

http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html

***

SVM的输入是一堆点。问题有了:寻找一条最优分隔直线 y = w_T*x + b(寻找一个最优的超平面),那么首先如何描述“间隔”以及“最优”呢?

函数间隔:


整个样本上的函数间隔是最小值:


这里需要注意我们在SVM里二分类的标签是 +1,-1,而不是0,1。原因之一是这样可以统一间隔的写法,其二观察公式可发现属于+1类的点,其值(w_T*x +b)越大,它的函数间隔越大,对于-1类同理。这样写是合乎历史发展逻辑的:我们先有了logistic回归,观察其中的sigmoid函数发现离原点越远的点其Y值越接近真实标签0/1,所以SVM继承了这个思想,并加以规范。

所以函数间隔并不表示真实的“距离”,而是可以描述分类预测的正确性的确信度。因为函数间隔成比例变化的时超平面不变的原因,我们对||w||施加约束,变成几何间隔。


几何间隔:


几何间隔就是朴素的“点到直线距离”,以向量形式描述。形式上把函数间隔除以||w||就得到了几何间隔。


接下来可以谈到我们要解决的问题是什么。其中用了两个数学算法:通过Lagrange对偶将原优化问题转化成对偶的凸优化问题【并附加KKT约束】,之后利用SMO算法求解参数。


原始最优问题:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值