线性可分支持向量机

我们知道两类样本点其实是有很多分割超平面的,那么哪条最优呢?若两个集合有部分相交,那么又如何定义超平面使得两个集合“尽量”分开呢?
现在就从这两个问题入手来解决SVM分类器的目标函数是什么。假如有正例和负例两类样本点,现在就要去作一条分割线,但是这些样本的地位并不完全一样,距离直线最近的样本,算出它们离直线的距离,如果两边的不相等,那么我们总可以通过移动直线来使得样本到直线的最短距离相等。
我们知道直线的截距式为:y=kx+b,如果换成向量就为:y=\vec{w}\vec{x}+\vec{b},而线方程的一般式为AX+BY+C=0时,点到直线的距离为:

                                                                           d = \ frac {\ left |  AX_ {0} + BY_ {0} + C \ right |} {\ sqrt {A ^ {2} + B ^ {2}}}

其实这个东西可以这样来看待,我们知道垂直直线的斜率方向其实就是(A,B)这样一个向量,所以对于这绝对值而言,如果样本点位于向量的正方向就是正数,位于负向的话就是一个负数。设现在不考虑正负,因此把绝对值去掉,那么就等价于
现在就等价于W=(A,B)中,X=(x_{0},y_{0})^{T}b=\frac{C}{{\sqrt{A^{2}+B^{2}}}}。如果W已经是左轮归一化的了,那就直接把样本点带到方程当中,如果是正数,那它就位于正半区,它的距离是几,负数就位于负半区,然后距离是几,只要瓦特是归一化过的。
现在将所有样本点都带入求距离,假设有ñ个样本点,那就可以求出ñ个距离来,这ñ个距离总有一个最小值。现在把样本点比作炸药包,现在需要画一条直线离这些炸药包最远,我们希望这些线离炸药包越远越好,离得最近的那个炸药包最远。
我们现在有一条直线w_{1}x+b_{1},然后把xi这个样本点带进去求一个距离,我们希望遍历所有可行的线,也就是把(w_{1},b_{1})(w_{2},b_{2})……(w_{n},b_{n})都带进去能够使得max(j)min(i)(w_{j}x_{i}+b_{j})取最大。哪个(w,b)带进去能够使得取最大,那么求出来的w *和b *的就是最好的分割超平面.min(i)(w_{j}x_{i}+b_{j})是对于某一条直线来说的,max(j)(w_{j}x_{i}+b_{j})其实是对所有的直线作遍历,相当于对于所有的可行直线求一下样本到直线最小距离的最大值。但这只是我们的最初想法,这个想法只是中看不中用的,因为虽然样本是有穷的,但是线是无穷的,我们总能细分出很多条线。
首先来说一下数学记号:假设给定一个特征空间上的训练数据集T=\left \{ (x_{1},y_{1})......(x_{n},y_{n}) \right \}其中xi为实数,有可能是ñ维的向量,yi只能取+1或-1,是标量,要么是正例,要么是负例。
给定线性可分训练数据集,通过间隔最大化得到分离超平面为y(x)=w^{T}\varphi (x)+b,相应的分类决策函数f(x)=sing(w^{T}\varphi (x)+b)该决策函数称为线性可分支持向量机。\varphi (x)是某个确定的特征空间转换函数,它的作用是将x映射到更高的维度。最简单的就是\varphi (x).我们现在就把它看作是一个事先可以控制的某一个特征的映射函数。下面就来将求解分离超平面的问题等价为求解相应的凸二次规划问题。
根据题设y(x)=w^{T}\varphi (x)+b有:
y(xi)> 0 <=> yi = + 1,估计值y(xi)是正的就可以判定这个样本是正例,反过来如果实际值是正的,我们就希望估计值y(xi)是正的,因此这是一个等价关系否则为负例<=>yi* y(xi)> 0恒成立现在将w,b等比例缩放(即归一化)得到:                                                                                                                      \frac{y_{i}y(x_{i})}{\left \| w\right \|}=\frac{y_{i}(w^{T}\varphi(x_{i})+b)}{\left \| w\right \|}

\frac{w^{T}\varphi(x_{i})+b}{\left \| w\right \|}表示的是样本点到直线的几何距离,如果是正的yi就为正,负的yi就为负,不管怎么\frac{y_{i}(w^{T}\varphi(x_{i})+b)}{\left \| w\right \|}(几何距离乘上它的类别)都是大于零的。现在就是要求对于所有的样本点来讲求\frac{y_{i}(w^{T}\varphi(x_{i})+b)}{\left \| w\right \|}的最小值,再遍历所有的w和b,求最大值,让距离线的最小值取最大,因此得到目标函数:

                                                     \arg max(w,b)\left \{ \frac{1}{\left \| w \right \|} min(i)(\frac{y_{i}(w^{T}\varphi(x_{i})+b)}{\left \| w\right \|})\right \}

。由于我们知道y_{i}(w^{T}\varphi(x_{i})+b)\geq 1,就是说样本点到直线的最小几何距离为1,因此求最小值就是1,原问题就转化为了求\frac{1}{\left \| w \right \|}的最大值\Rightarrow \arg min(\left \| w \right \|)\Rightarrow \arg min(\left \| w \right \|^{2}),所以最终就得到了目标数:min(w,b)\frac{\left \|w \right \|^{2}}{2},约束条件是y_{i}(w^{T}\varphi(x_{i})+b)\geq 1.w和b都是仿射(线性)的,目标函数是二次的。
举例:给定三个数据点:正例点x_{1}=(3,3)^{T}x_{2}=(4,3)^{T},负例点x_{3}=(1,1)^{T},求线性可分支持向量机。给定目标函数:

                                                        min(a)\frac{1}{2}\sum_{i}\sum_{j}a_{i}a_{j}y_{i}y_{j}(x_{i}x_{j})-\sum a_{i}

除了a3是负例,其他都是正例,所以条件才是这个。所以现在不妨让a3=a1+a2然后回代过去就得到了关于a1,a2最多是二次的目标函数。

因此怎么样求那个支撑向量呢?不等于零的那个系数所对应的那个样本点就是支撑向量。

猜你喜欢

转载自blog.csdn.net/weixin_38241876/article/details/84877967