首页 > 代码库 > 机器学习之&&SVM支持向量机入门:Maximum Margin Classifier
机器学习之&&SVM支持向量机入门:Maximum Margin Classifier
概率论只不过是把常识用数学公式表达了出来。
——拉普拉斯
0. 前言
这是一篇SVM的入门笔记,来自我对PlusKid、JerryLead、July等大神文章的拜读心得,说是心得还不如说是读文笔记,希望在自己理解的层面上给予SVM这个伟大的机器学习算法概要介绍,让更多的热爱机器学习的伙伴们进入到SVM的世界。PS:文章会以问答的形式为主要结构。
1.概念
1.1.什么是SVM?
支持向量机即 Support Vector Machine,简称 SVM 。(第一次接触SVM是在阿里大数据竞赛的时候,大家都在讨论用什么样的方法去挣阿里那100W的奖金(鄙人因为能力有限进入决赛阶段,但是因为模型优化问题,名落松山),SVM、LR、协同过滤等等)SVM是Vapnik和Cortes于1995年首先提出的,它旨在解决小样本、非线性、高纬(因为现实应用中的数据多为这般特性)等特性的数据特征的模式识别问题,特别在分类问题中,一直被大家认为是一种现有的可用的效果最好的分类算法之一。(甚至很多人觉得之一可以去掉,但是神经网络"大大"不愿意-。-)
1.2.为什么会有SVM?
前面已经说过了SVM在解决小样本、非线性、高纬数据上的优势,那么我们就从线性分类器开始逐步探讨为什么会有SVM的出现?
1.2.1.线性分类器
给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。如果用x表示数据点,用y表示类别(y可以取1或者-1,分别代表两个不同的类,有些地方会选 0 和 1 ,当然其实分类问题选什么都无所谓,只要是两个不同的数字即可,不过这里选择 +1 和 -1 是为了方便 SVM 的推导,后面就会明了了),一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面(hyper plane),这个超平面的方程可以表示为( wT中的T代表转置):
(为什么会有这个形式化表示的超平面方程,请猛戳这里)
一个超平面,在二维空间中的例子就是一条直线。我们希望的是,通过这个超平面可以把两类数据分隔开来,比如,在超平面一边的数据点所对应的
如下图所示,两种颜色的点分别代表两个类别,红颜色的线表示一个可行的超平面。在进行分类的时候,我们将数据点
当然,有些时候,或者说大部分时候数据并不是线性可分的,这个时候满足这样条件的超平面就根本不存在(不过关于如何处理这样的问题我们后面会讲),这里先从最简单的情形开始推导,就假设数据都是线性可分的,亦即这样的超平面是存在的。
换言之,在进行分类的时候,遇到一个新的数据点x,将x代入f(x) 中,如果f(x)小于0则将x的类别赋为-1,如果f(x)大于0则将x的类别赋为1。
接下来的问题是,如何确定这个超平面呢?从直观上而言,这个超平面应该是最适合分开两类数据的直线。而判定“最适合”的标准就是这条直线离直线两边的数据的间隔最大。所以,得寻找有着最大间隔的超平面。
2.SVM之函数间隔(functional margin)与几何间隔(geometrical margin)2.1.什么是函数间隔和几何间隔及其关系?
为了让欲分类的点远离超平面(这样分类效果更好),我们可以用(y*(w*x+b))的正负性来判定或表示分类的正确性,因此我们定义函数间隔如下:
注意前面乘上类别
如图所示,对于一个点
又由于
不过,这里的
显然,functional margin 和 geometrical margin 相差一个
2.2.最大间隔分类原理,及其数学表示。
这里我们有两个 margin 可以选,不过 functional margin 明显是不太适合用来最大化的一个量,因为在 hyper plane 固定以后,我们可以等比例地缩放
同时需满足一些条件,根据间隔的定义,有
yi(wTxi+b)=γ?i≥γ?,i=1,…,n
其中
通过求解这个问题,我们就可以找到一个 margin 最大的 classifier ,如下图所示,中间的红色线条是 Optimal Hyper Plane ,另外两条线到红线的距离都是等于 γ
以上就是SVM的基本原理,总结下来就是一句话求一个最大分类间隔的超平面,让数据分类效果很理想。但是为什么叫支持向量机?难道SVM就这么简单?一切还得在下篇博客见分晓。
机器学习之&&SVM支持向量机入门:Maximum Margin Classifier