SVM
本文是有关于吴恩达Machine Learning中SVM部分的笔记,主要有下面内容:
- SVM定义
- 最大间隔分类器-Large Margin Classification
- 核函数-Kernels
- SVM操作实例-SVMs in Practice
SVM定义
在机器学习中,支持向量机(Support Vector Machine,简称SVM,又名支持向量网络)是在分类与回归 分析中 分析数据的监督式学习模型与相关的学习算法。—— [ 维基百科 ]
SVM 可以进行线性和非线性的分类:
线性分类
: 给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或者另一个,SVM训练算法创建一个新的实例分配给两个类别之一的模型,使其成为非概率的二元线性分类器。SVM将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显分隔开,然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测
非线性分类
: 除了线性分类之外,SVM还可以用核技巧有效的进行非线性分类,将其输入隐式映射到高维特征空间中。
最大间隔分类器(Large Margin Classification)
由logistic回归出发,引出SVM,既揭示了模型间的联系,也让过渡更加自然。
优化目标函数(Optimization objective)
首先通过逻辑回归,通过优化逻辑回归的目标函数,引入SVM的假设函数
逻辑回归的回顾
-
假设函数
-
如果 y=1 y = 1 , 我们想要 hθ(x)≈1 h θ ( x ) ≈ 1 ,根据上面sigmoid图,我们需要让 θTx≫0 θ T x ≫ 0
-
如果 y=0 y = 0 , 我们想要 hθ(x)≈0 h θ ( x ) ≈ 0 ,根据上面sigmoid图,我们需要让 θTx≪0 θ T x ≪ 0
从上面的结论我们可以了解到,假设函数的结果(也就是我们预测的结果)仅和 θTx θ T x 有关,激活函数 g(z) g ( z ) 仅仅起到一个映射的作用。
单样本的损失函数
支持向量机
优化过程
逻辑回归m个样本的损失函数公式为(目标是找到一组参数
θT
θ
T
使得损失函数得到最小值):
通过逻辑回损失函数公式的变形,得出支持向量机假设函数:
图示如下:
最大间隔解释(Large Margin Intuition)
为了得到损失函数的最小值,对SVM的损失函数进行简化分解:
已知 SVM的损失函数公式为:
并得到了有关于样本的cost函数的图像:
分类情况:
如果样本的真实标签y=1,我们的目标是找到参数使得 θTx≥1 θ T x ≥ 1 ( 不仅仅是逻辑回归中 ≥0 ≥ 0 )
如果样本的真是标签y=0,我们的目标是找到参数使得 θTx≤−1 θ T x ≤ − 1 ( 不仅仅是逻辑回归中 ≤0 ≤ 0 )
SVM 的决策边界(Decision Boundary)
决策边界,也成为决策面,是用在N维空间,将不同类别样本分开的平面或者曲面。传统的得到该决策边界函数的方法为得到损失函数,然后梯度下降算法不断优化,最后得到最优解。从图像的角度来看,就是随机选取一条直线对数据进行分割,然后不断调整直线的位置以达到最佳的分割点。这是之前的套路,但是,有没有更好的算法进行分离数据呢?
首先,看SVM的决策边界:
损失函数:
当C赋值很大时,公式的第一项应取值0,为了使公式的第一项取值为0,我们得到下面这两种分类情况:
Whenever
y(i)=1
y
(
i
)
=
1
:
Whenever y(i)=0 y ( i ) = 0 :
通过上面两步:最大间隔分类器和SVM决策边界的优化过程,得到最终的结果,SVM的优化目标为:
minθ12∑j=1nθ2js.t.θTx(i)≥1ify(i)=1θTx(i)≤−1ify(i)=0 min θ 1 2 ∑ j = 1 n θ j 2 s . t . θ T x ( i ) ≥ 1 i f y ( i ) = 1 θ T x ( i ) ≤ − 1 i f y ( i ) = 0
SVM目的是最大化间隔(支持向量和决策边界之间的间隔)
形成式表示
我们先来看一张图:
我们这次用的结果标签是y=1和y=-1代替逻辑回归中的y=1和y=0.同时将
θ
θ
替换成w和b。逻辑回归中的
θTx=θ0+θ1x1+...+θnxn
θ
T
x
=
θ
0
+
θ
1
x
1
+
.
.
.
+
θ
n
x
n
,我们把
θ0
θ
0
替换成b,
θ1x1+...+θnxn
θ
1
x
1
+
.
.
.
+
θ
n
x
n
替换成
w1x1+...+wnxn
w
1
x
1
+
.
.
.
+
w
n
x
n
.这样我们得到
θTx=wTx+b
θ
T
x
=
w
T
x
+
b
进一步,
hθ(x)=g(θTx)=g(wTx+b)
h
θ
(
x
)
=
g
(
θ
T
x
)
=
g
(
w
T
x
+
b
)
其假设函数为
上一部分提到过我们只需要考虑 θTx θ T x 的正负问题,而不用关心激活函数。SVM和逻辑函数在这点是相同的,设置magin=1,得出SVM经过两步的优化结果。
支持向量机的数学表达
函数间隔(functional margin)和几何间隔(geometric magin)
支持向量机最直观的理解就是“寻找这样一个超平面,使得它到达两边最近样本的间距(magin)都最大”,如何将这句话转化为数学语言呢?
主要分为两步:
1.对于任意一条给定的直线(面)即超平面,找到所有距离这条直线最近的样本点(可能有一个,可能有多个)
2.计算这些样本点到直线的距离,求出所有可能的最大值
具体地:
- 首先定义直线(超平面):
y(x)=wTx+b y ( x ) = w T x + b - 任意一点到直线的距离为:
1‖w‖(wTx+b) 1 ‖ w ‖ ( w T x + b )
其中, ‖w‖ ‖ w ‖ 是w的范数,几何意义上表示一个向量的长度 - 根据上述的最大间距的描述,我们使用公式:
maxw,b{1‖w‖minn[yi(wTx+b)]} max w , b { 1 ‖ w ‖ m i n n [ y i ( w T x + b ) ] }
该公式精确的上述对支持向量机的描述的理解:先找出所有可能的直线、平面,满足条件就是样本点到该直线的最小距离。这个集合中的每个元素至少包含两个信息:(1)距离最近超平面最近的点(2)点到直线或者平面的距离。然后再在这个集合中找到间距最大的那一个,就是我们所求的最优解。
但是该公式还是比较复杂,所以我们提出函数间隔的定义:
函数间隔
给定一个训练样本
(x(i),y(i))
(
x
(
i
)
,
y
(
i
)
)
,x表示特征,y表示的真实的标签。i表示第i个样本。我们定义函数间隔为:
可想而知,当 y(i)=1 y ( i ) = 1 时, wTx(i)+b≥0 w T x ( i ) + b ≥ 0 为了使函数间隔的值最大,在 y(i)=1 y ( i ) = 1 时, wTx(i)+b w T x ( i ) + b 应该是一个大正数,反之应该是一个大负数。因此,函数间隔表示我们认为特征是正例还是反例的确信度。
  继续考虑w和b,如果同时加大w和b,那么所有的函数间隔都会增大,但是事实上该问题不应该影响结果。所以,为了解决这个问题,我们可能需要加入归一化条件,毕竟求解的目标是确定唯一一个w和b,而不是多组线性相关的向量。这个归一化等一会再考虑。
刚刚我们定义的函数间隔是一个样本的,现在我们定义全局样本上的函数间隔:
说白了就是在训练样本上分类正样本和负样本确信度最小的那个函数间隔。
接下来是几何间隔:
几何间隔
首先看下面的图:
目录
参考文献