支持向量机(SVM)是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机模型;支持向量机还包括核技巧,使它成为实质上的非线性分类器。
线性可分支持向量机
定义超平面为 w⋅x+b=0 , 它由法向量 w 和截距 b 决定,用(w,b) 表示。通过间隔最大化求得的分离超平面为
w∗⋅x+b∗=0
分类决策函数为
f(x)=sign(w∗⋅x+b∗)
成为线性可分支持向量机。
SVM的主要思路就是 “间隔最大化”。它关心的是找到一条最优的分离边界,使得类别之间的间隔最大,或者说以充分大的确信度对训练数据进行分类。不仅将正负点分开。还要将最难分的(离超平面近)点也要有足够大的确信度将他们分开。因此,SVM会主要关心那些难分(离超平面近)的实例点。
下面用数学的方式来表示“间隔”,然后最大化它。
函数间隔: 在超平面确定的情况下,|w⋅x+b| 能够相对地表示点x距离超平面的远近。而w⋅x+b 的符号与y的符号是否一致能够表示分类是否正确。所以定义样本点 (xi,yi) 对超平面(w,b) 的函数间隔为
γ^i=yi(w⋅xi+b)
定义超平面
(w,b) 关于训练数据集T的函数间隔为T中所有样本点的函数间隔的最小值
γ^=mini=1,...,Nγ^i
但是如果成比例的改变
w 或者
b ,函数间隔也会改变。因此引入几何间隔
几何间隔:
定义样本点
(xi,yi) 对超平面
(w,b) 的几何间隔为
γi=yi(w||w||⋅xi+b||w||)
定义超平面
(w,b) 关于训练数据集T的几何间隔为T中所有样本点的几何间隔的最小值
γ=mini=1,...,Nγi
易知,函数间隔和几何间隔的关系
γ=γ^||w|| 。如果成比例的改变
w 或者
b ,几何间隔不会改变
则SVM的目的“间隔最大化”用数学形式表达即以下约束最优化问题:
maxw,bγ
s.t.yi(w||w||⋅xi+b||w||)⩾γ,i=1,2,...,N
即我们希望最大化超平面关于数据集的几何间隔,约束条件表明超平面关于每个样本点的几何间隔至少是
γ
这是线性可分支持向量机的最终目标,下面就一步一步地来解决它。
1. 首先,利用几何间隔和函数间隔的关系重写最优化问题为
maxw,bγ^||w||
s.t.yi(w⋅xi+b)⩾γ^,i=1,2,...,N
函数间隔
γ 的取值并不影响最优化问题的解。因为将
w 和
b 成比例缩放为
λw 和
λb 后,函数间隔变成了
λγ^,并不影响最优化目标和约束。这样可以取
γ^=1 ,这样最优化问题变成了
minw,b12||w||2
s.t.yi(w⋅xi+b)−1⩾0,i=1,2,...,N
为什么把最大化
1||w|| 改写成最小化
12||w||2 ,我的理解是在后续的求解过程中以这种形式的求解会更加有利。(在对偶问题的求导中有利)
在线性可分问题中,使约束的等号成立的点称为
支持向量。对于
yi=+1 的正例点,支持向量在超平面
H1:w⋅x+b=1 上,对于
yi=−1 的负例点,支持向量在超平面
H2:w⋅x+b=−1 上。两个超平面之间的间隔为
2||w|| 。 正是这些支持向量对分离超平面起作用,而其他点对于解是没有影响的。因此这种模型叫做支持向量机。
2. 这是一个带有约束的最优化问题。使用拉格朗日对偶性进行求解。首先构建拉格朗日函数,引入拉格朗日乘子
αi⩾0,i=1,2,...,N ,定义拉格朗日函数
L(w,b,α)=12||w||2−∑i=1Nαiyi(w⋅xi+b)+∑i=1Nαi
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题
maxαminw,bL(w,b,α)
所以首先求
L(w,b,α) 对
w,b 的极小。分别对
w,b 求偏导并令其为0
∇wL(w,b,α)=w−∑i=1Nαiyixi=0
∇bL(w,b,α)=∑i=1Nαiyi=0
得到
w=∑i=1Nαiyixi
∑i=1Nαiyi=0
从这里可以看出,第一步中为什么把最大化
1||w|| 改写成最小化
12||w||2 , 这样求导后可以直接得到
w , 代回原始式子可以直接消去。将
w代回,并利用第二个式子,即得
L(w,b,α)=12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαiyi((∑j=1Nαjyjxj)⋅xi+b)+∑i=1Nαi
化简得
minw,bL(w,b,α)=−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi
于是,原始问题转换为
minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi
s.t.∑i=1Nαiyi=0αi⩾0,i=1,2,...,N
至此,我们把最初的问题转换成了现在的形式。下一步的求解使用序列最小最优化(SMO)算法。在最后一部分给出介绍。假设我们已经求得解
α∗=(α∗1,α∗2,...,α∗l)T ,我们可以利用下式求得原始问题的解
w∗,b∗ w∗=∑i=1Nα∗iyixi
选择
α∗ 的一个正分量,计算
α∗j>0 b∗=yj−∑i=1Nα∗iyi(xi⋅xj)
证明时利用KKT条件的对偶互补条件可得。
考虑此时的支持向量,为
α∗i>0 的点。(
α∗i=0 的点对求解并没有实质性作用)
线性不可分支持向量机
对于线性不可分问题,原始问题的约束条件(函数间隔大于等于1)就会不满足了。这时可以对每个样本点引入一个松弛变量 ξi⩾0 , 这样约束条件就变成了yi(w⋅x+b)⩾1−ξi, 对于每个松弛变量支付一个代价ξi , 目标函数变为12||w||2+C∑Ni=1ξi,C为惩罚参数。它调和最大化间隔和最小化误分类点二者。则对于线性不可分问题,学习问题变为
minw,b,ξ12||w||2+C∑i=1Nξi
s.t.yi(w⋅x+b)⩾1−ξi,i=1,2,...,N
ξi⩾0,i=1,2,...,N
可以证明
w 的解是唯一的,b的解不唯一,存在一个区间。
求解时还是先写出拉格朗日函数,求其对偶问题。拉格朗日函数为
L(w,b,ξ,α,μ)=12||w||2+C∑i=1Nξi−∑i=1Nαi(yi(w⋅xi+b)−1+ξi)−∑i=1Nμiξi
然后对
w,b,ξ 求导使其为0,即
∇wL(w,b,ξ,α,μ)=w−∑i=1Nαiyixi=0
∇bL(w,b,ξ,α,μ)=−∑i=1Nαiyi=0
∇ξiL(w,b,ξ,α,μ)=C−αi−μi=0
带回原式。这时学习对偶算法为
minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi
s.t.∑i=1Nαiyi=0
0⩽αi⩽C,i=1,2,...,N
很巧的是尽管引入了松弛变量,在最后的对偶问题中并没有出现,只是在约束中出现了惩罚系数C,目标函数和线性可分问题是一样的。
下一步的求解仍是使用SMO算法,最终结果和线性可分问题几乎一样,在计算
b∗ 时,选择
0<α∗j<C 由于原始问题对b的解不唯一,实际问题中可以取所有符合条件的样本点计算,然后取平均。
软间隔的支持向量是
α∗i>0 的点。但是这些点不一定在间隔边界上。若
α∗i<C 则
ξi=0,支持向量在间隔边界上;若
α∗i=C,0<ξi<1 ,分类正确,支持向量在间隔边界和分离超平面之间;若
α∗i=C,ξi=1 ,支持向量在分离超平面上;若
α∗i=C,ξi>1 ,支持向量在分离超平面误分一侧。
SVM另一种解释方式
通过软间隔最大化,可以引出SVM的另一种解释方式,正则化的合页损失函数的最小化问题。最小化以下目标
∑i=1N[1−yi(w⋅xi+b)]++λ||w||2
式中第一项是经验损失,函数
L(y(w⋅x+b))=[1−y(w⋅x+b)]+ 称为
合页损失函数(hinge loss function)。
[z]+表示当z小于0时,取值为0,大于零时取值为z。在cs231n里,这个也写作
max(0,1−yi(w⋅xi+b))
这就是说当样本点被正确分类且函数间隔
yi(w⋅xi+b) 大于1时,损失是0。否则是
1−yi(w⋅xi+b)
以下给出简单证明,两种解释方式等价。
令
[1−yi(w⋅xi+b)]+=ξi ,易知线性不可分支持向量机的目标约束成立。最优化目标写成
minw,b∑i=1Nξi+λ||w||2
,若取
λ=12C 。则两种解释方式等价。
在吴恩达的机器学习视频里,是从逻辑回归LR中引出SVM的。他们的区别在于LR使用的是对数损失函数,而SVM使用的是合页损失函数。不同损失函数如下。
两个损失函数的目的都是增加对分类影响较大的数据点的权重。SVM是只考虑支持向量,而LR通过非线性映射,大大减小了离分类平面较远点的权重。
相比来说,SVM的独特点在于它的核技巧。但是,不代表核技巧是SVM专有的。Kernel Logistic Regression(KLR)也很常见,FM/FFM也算是KLR。
关于正则项,LR需要在损失函数中添加,但是SVM损失函数就自带L2正则项!很神奇
关于何时使用哪种分类算法,下面贴出吴恩达的解释
关于核技巧,下一篇文章将进行说明。