∗∗∗ 点击查看 :吴恩达机器学习 —— 整套笔记+编程作业详解 ∗∗∗
前言
作为一个菜鸟,在学习吴恩达教授关于SVM的这周课时,感觉有很多地方讲的比较模糊,有些概念没有真正的搞明白,因此笔者以一个新手的角度,把自己学习SVM的记录总结出来,希望对初学者有一定帮助。
1. 支持向量机的引入(吴恩达部分)
支持向量机(Support Vector Machine,SVM)是一个广泛应于在工业界和学术界的分类算法。与逻辑回归和神经网络相比,它在学习非线性复杂方程上提供了一种更加清晰、更加有效的思路。
为了描述支持向量机,我们先从逻辑回归开始讲起,再一点一点修正得到最后的支持向量机。
1.1 从逻辑回归到SVM
在逻辑回归中,我们已经熟悉了如下所示的假设函数
hθ(x) 和逻辑函数曲线:
对于逻辑回归的假设函数
hθ(x):
- 当
y=1,我们希望
hθ(x)≈1,即要求
θTx≫0(远大于)
- 当
y=0,我们希望
hθ(x)≈0,即要求
θTx≪0(远小于)
逻辑回归中,单个样本的代价可以表示为:
Cost=−ylog(hθ(x))−(1−y)log(1−hθ(x))=−ylog1+e−θTX1−(1−y)log(1−1+e−θTX1)
-
当
y=1,
Cost=−log1+e−θTX1 ,为了使代价最小,应尽可能使
z=θTX 较大
在SVM中这种情况可以用 两条线段 作为新的代价函数
cost1(z),如下图红色折线:
扫描二维码关注公众号,回复:
10558069 查看本文章
-
当
y=0,
Cost=−log(1−1+e−θTX1) ,为了使代价最小,应尽可能使
z=θTX 较小
在SVM中这种情况可以用 两条线段 作为新的代价函数
cost2(z),如下图红色折线:
我们接下来就通过
cost1(z)、
cost0(z) 构建支持向量机。
1.2 SVM 的优化目标
对于逻辑回归,优化目标(代价函数)为:
θminJ(θ)=θmin[m1i=1∑m[y(i)(−loghθ(x(i)))+(1−y(i))(−log(1−hθ(x(i))))]+2mλj=1∑nθj2]
将逻辑回归的优化目标改成SVM的优化目标,有以下三步:
-
将
cost1(z)、
cost0(z) 替换进
J(θ):
θminJ(θ)=θmin[m1i=1∑m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+2mλj=1∑nθj2]
-
由于无论是否有
m1 都不会影响最小化的结果,在使用SVM时,我们可以忽略
m1。
-
逻辑回归中带正则化的代价函数可以用
A+λB 表示(
A表示训练样本的代价,
B表示正则化项),在SVM中改为
CA+B。
由此得到 SVM 的优化目标为:
θmin[Ci=1∑m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+21j=1∑nθj2]并结合1.1节画出
cost0(z) 和
cost1(z) :
- 当
y=1,我们希望
hθ(x)=1,即要求
z=θTx≥1,
cost1(z)=0
- 当
y=0,我们希望
hθ(x)=0,即要求
z=θTx≤−1,
cost0(z)=0
吴恩达教授的部分讲到这里,小朋友你是否有很多问号?
没关系,接着往下看。
2. 建立SVM模型
2.1 决策面与分类间隔
以二维空间为例,在逻辑回归中,决策面(决策边界)是一条将正负样本分开的直线,根据参数的不同可以有不同的分类效果:
而在SVM中,除了决策边界(decision boundary),还要引入一个新名词——间隔(margin)
下面这几段话很重要:
如上图所示,A和B两条直线对应两个决策面,在保证决策面方向不变且不会出现错分样本的情况下移动决策面,会在原来的决策面两侧找到两个极限位置(越过该位置就会产生错分现象),如虚线所示。虚线的位置由决策面的方向和距离原决策面最近的几个样本的位置决定。而这两条平行虚线正中间的分界线就是在保持当前决策面方向不变的前提下的最优决策面。
两条虚线之间的垂直距离就是这个最优决策面对应的分类间隔。
显然每一个可能把数据集正确分开的方向都有一个最优决策面(有些方向无论如何移动决策面的位置也不可能将两类样本完全分开),而不同方向的最优决策面的分类间隔通常是不同的,那个具有“最大间隔”的决策面就是SVM要寻找的最优解。而这个真正的最优解对应的两侧虚线所穿过的样本点,就是SVM中的支持样本点,称为"支持向量" (support vector)。两个异类支持向量到超平面的距离之和称为“间隔” (margin)。
2.2 约束条件
- 样本标签
yi∈{−1,1}
你可能要问为什么不用逻辑回归的标签0和1,其实
y标注为-1和1只是为了下述公式方便表达,下方有证明。
- 决策面(高维空间称为超平面):
wTx+b=0(注:
b=w0,其实就是之前文章中的
Xθ=0)
- 满足
wTx+b=0 的
x 对应超平面上的点
- 满足
wTx+b≥1 的
x 对应上方虚线之上点,换句话说,
∀yi=1,有
wTx+b≥1
- 满足
wTx+b≤−1 的
x 对应下方虚线之下点,换句话说,
∀yi=−1,有
wTx+b≤1
将上述条件变形为:(注:这里用下标
i表示第个
i样本点,之前是用上标表示)
yi(wTxi+b)≥1 , i=1,2,...,m上式就是 SVM的约束条件,也就是说,我们要找的最优决策面一定要满足上式条件,现在再回头看 #1.2节中的
cost0(z) 和
cost1(z),是不是清楚了一些呢。
提问:关于为什么经过 支持向量 的 虚线的方程就是
wTx+b=1 和
wTx+b=−1,以及为什么标签取{-1,1}
证明如下:
- 已知点
(x0,y0)到直线
Ax+By+C=0的距离为:
d=∣∣∣∣A2+B2
Ax0+By0+C∣∣∣∣
- 对于支持向量对应的样本点到超平面的距离,即间隔为:
d=∥ω∥∣∣∣ωTx+b∣∣∣,
∥ω∥ 表示向量范数
- 假设决策面正好处于间隔区域的中轴线上,并且相应的支持向量对应的样本点到决策面的距离为
d,就会满足下面的方程:
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧∥ω∥ωTxi+b≥d∥ω∥ωTxi+b≤−d∀yi=1∀yi=−1
- 上式的解释就是,对于所有分类标签为1和-1样本点,它们到直线的距离都大于等于
d(支持向量上的样本点到超平面的距离)。
公式两边都除以d,就可以得到:
{ωdTxi+bdωdTxi+bd≥1≤−1∀yi∀yi=1=−1, 其中 ωd=∥ω∥dω , bd=∥ω∥db
- 因为
∣∣w∣∣和
d都是标量。所以对于直线方程
ωTx+b=0 和
ωdTx+bd=0 其实描述的是同一条直线(举例:
2x1+4x2+2=0 和
x1+2x2+1=0 是同一条直线),因此我们令
ω=ωd, b=bd,更新后得到:
{ωTxi+bωTxi+b≥1≤−1∀yi∀yi=1=−1
- 上述方程即给出了SVM最优化问题的约束条件。这时候,可能有人会问了,为什么标记为1和-1呢?因为这样标记方便我们将上述方程变成如下形式:
yi(wTxi+b)≥1 , i=1,2,...,m
2.3 约束优化目标
具有“最大间隔”的决策面就是SVM要寻找的最优解。(这句话没懂的再上去看 #2.1节最后几段话)
因此,简单来说,SVM的优化目标就是使下图两条虚线的 “间隔最大化”:
根据平行直线的距离公式,我们很容易得到间隔,用
γ 表示为:
γ=∥ω∥1−(−1)=∥ω∥2到这里,我们就可以得到SVM的优化目标:(s.t.即"Subject to",表示受限于)
w,bmax∥w∥2 s.t. yi(wTxi+b)≥1,i=1,2,…,m最大化
∥w∥2 等价于最小化
∥w∥2,于是上式也可以表示为:
w,bmin21∥w∥2 s.t. yi(wTxi+b)≥1,i=1,2,…,m至此,我们已经得到SVM的基本数学模型,即一个典型的不等式约束条件下的二次型函数优化问题。
现在,你再回过头看看 吴恩达教授讲的 #1.2节中 SVM的优化目标:
θmin[Ci=1∑m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+21j=1∑nθj2]去掉左边的正则化项(C=0),是否感到恍然大悟,全部都能对上呢?
(其实C是误差项惩罚参数,C越大,容错率越低,越容易过拟合)
到此为止,我们已经建立了SVM的基本型,下面就可以根据基本型的优化问题类型进行优化问题的求解。由于SVM涉及的数学内容很多,因此本篇博客分为三个部分 (其实也是为了水一下文章数涨点积分(¬‿¬)),第二部分请看 支持向量机 2/3。
参考:
支持向量机原理篇之手撕线性SVM
Coursera-吴恩达-机器学习-(第7周笔记)支持向量机
【ML】支持向量机(SVM)从入门到放弃再到掌握
干货 | 从超平面到SVM(一)