支持向量机SVM
前提概念
首先从字面的意思来看一下支持向量机,机即machine,也就是算法,那么什么是支持向量呢?支持向量支持的是什么呢?看一下以下几个概念
-
支撑超平面:设有一个集合C,x0C,x_0C,x0为CCC边界上的点。若存在a≠0,a\neq0,a̸=0,满足对于任意的x∈Cx\in Cx∈C,都有aTx≤aTx0a^Tx\le a^Tx_0aTx≤aTx0成立,则称超平面{x∣aTx=aTx0}\{x|a^Tx=a^Tx_0\}{x∣aTx=aTx0}为集合CCC在点x0x_0x0处的支撑超平面。此时的aaa就是支撑向量也叫作支持向量。这就回答的上面的问题,什么是支撑向量?支撑向量支撑的是什么?
-
在凸集边界上的任意一点,均存在支撑超平面。反之,在一个闭合的非中空(内部点不为空集)集合,在边界上的任意一点均存在支撑超平面,则该集合为凸集合。
举个栗子:
可以看到绿色部分就是一个集合CCC,x0x_0x0就是集合边界上的点,存在这样一个aaa,对于任意的x∈C,aTx≤aTx0x\in C,a^Tx\le a^Tx_0x∈C,aTx≤aTx0。如果集合CCC是二维坐标平面上的点,那么这个超平面就是一条直线。那么aTx0a^Tx_0aTx0就是在这条线上的点,aTx≤0a^Tx\le0aTx≤0,就是说这些集合CCC内的点在这条直线的下面。这就是实现可分的基础。 -
分割超平面:设C,DC,DC,D是两个不相交的凸集合,则存在超平面PPP可以将两个集合分离。∀x∈C,aTx≤b\forall x\in C,a^Tx\le b∀x∈C,aTx≤b且∀x∈D,aTx≥b\forall x\in D,a^Tx\ge b∀x∈D,aTx≥b
-
两点对于上式的说明
该命题的逆命题就是——加入两个凸集合C,DC,DC,D的分割超平面存在,C,DC,DC,D两个集合不想交是假命题,因为上式中的等号是可以取到的
加强条件:若两个凸集合至少有一个是开集合,那么当且仅当存在分割超平面,它们不想交。
举个栗子:
那么如何求分割超平面呢?在上图中可以将两个集合完全分开的超平面显然不止一个,那么我们在这么多超平面中应该选择哪一个呢?
分割超平面的构造
两个集合的距离,定义为两个集合间元素的最短距离。做集合C和集合D最短线段的垂线。如下图
图中所示的红线就是我们想要求得的分割超平面,那么为什么我们选择这条红线呢,红线斜着或者偏左偏右都可以将两个集合完全分开,而且分割效果都一样,原因是我们需要这样得到的分割超平面在继续分割新的类似样本时的分割效果最好,也就是泛化能力最强,无论这条线偏左或者偏右它的泛化能力都比红线弱。
如下图:
显然红线左边的线和红线右边的线都能够将这两个集合完全分开,而且分隔效果与红线一样。这三条线的"容错率"是不一样的,显然红线的"容错率"最高,在测试新样本的时候的泛化能力最高。我们把类似红线这样的最优分隔超平面叫做"最大间隔分离超平面"。