支持向量机
前言
- 前面的文章已经介绍过线性回归模型和逻辑回归模型。如上图,两种线性分类器都可以将两类样本分开,显然我们可以画更多的线把样本分开。既然有不止一个可行的线性分类器,那么那个分类器是最好的?本文将针对这个问题进行简单的解答。
一、简介
- 支持向量机(SVM) 也是一种二分类模型,它的目标是寻找一个分类超平面,它不仅能正确的分类每一个样本,并且要使得每一类样本中距离超平面最近的样本达到超平面的距离尽可能远,最终转化为一个凸二次规划问题来求解。模型大致包括:
- 当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;
- 当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;
- 当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机。
- 超平面:其实就是线性函数,线性函数在二维空间中就是一条直线,在三维空间中就是一个平面,以此类推,如果不考虑空间维数,这样的线性函数统称为超平面。
- 要掌握SVM就要解决三个问题:间隔问题、对偶问题和核函数。
二、线性可分支持向量机
-
我们看一个简单的二维空间的例子,O代表正类,X代表负类,样本是线性可分的,但是很显然不只有这一条直线可以将样本分开,而是有无数条,我们所说的线性可分支持向量机就对应着能将数据正确划分并且间隔最大的直线。
-
翻译成数学语言:
给定一批训练样本,假设样本的特征矩阵为X,类别标签为y,取值为+1或-1,分别代表正样本和负样本。SVM为这些样本寻找一个最优分类超平面,其方程为:
W T X + b = 0 W^TX+b=0 WTX+b=0
对于正样本有:
W T X + b ⩾ 0 W^TX+b \geqslant 0 WTX+b⩾0
对于负样本有:
W T X + b ⩽ 0 W^TX+b \leqslant 0 WTX+b⩽0
统一方程为:
y i ( W T X + b ) ⩾ 0 y_i(W^TX+b) \geqslant 0 yi(WTX+b)⩾0
# 其中 γ ~ = y i ( W T X + b ) \tilde{\gamma}=y_i(W^TX+b) γ~=yi(WTX+b) 称为函数距离。然后是要求超平面离两类样本的距离要尽可能的大。根据解析几个中点到平面的距离公式,每个样本点到超平面的距离为:
γ = ∣ W T X + b ∣ ∥ W ∥ \gamma = \cfrac{\vert W^TX+b\vert}{\Vert W\Vert} γ=∥W∥∣WTX+b∣
则有:
γ = y i ( W T X + b ) ∥ W ∥ \gamma = \cfrac{y_i (W^TX+b)}{\Vert W\Vert} γ=∥W∥yi(WTX+b)
对一个数据点进行分类,当它的Margin越大时,分类的置信度就越高。
对包含n个点的数据集,我们定义它的Margin为所有这个n个点的Margin最小的那个。
为了使得分类的置信度高,我们希望所选择的超平面能够最大化这个Margin值。
但是现在有两个Margin可以选择,一个是函数距离,另一个是几何距离。但函数距离可以等比例地缩放w的长度和b的值,这样就会使得函数距离的值任意大;而几何距离则不会,它只会随着超平面的变动而变动,因此我们选用几何距离作为衡量标准。
所以现在我们可以把无关的变量固定下来:
γ = γ ~ ∥ W ∥ \gamma = \cfrac{\tilde{\gamma}}{\Vert W\Vert} γ=∥W∥γ~