SVM是一种二类分类模型.
求解对象: 线性可分问题.
给定一个训练数据集: T={(x1,y1),...,(xN,yN)},xi∈X=Rn,y∈Y={+1,−1},i=1,2,...,N T = { ( x 1 , y 1 ) , . . . , ( x N , y N ) } , x i ∈ X = R n , y ∈ Y = { + 1 , − 1 } , i = 1 , 2 , . . . , N
可以算得一个分离超平面: w∗⋅x+b∗=0 w ∗ · x + b ∗ = 0 , 以及相应的分类决策函数: f(x)=sign(w∗⋅x+b) f ( x ) = s i g n ( w ∗ · x + b )
基本思想: 一个点距离超平面的远近可以表示分类预测的确信程度.
超平面关于样本点的函数间隔: γi^=yi(w⋅xi+b) γ i ^ = y i ( w · x i + b )
超平面关于训练数据集T的函数间隔: γ^=mini=1,...,Nγi^ γ ^ = min i = 1 , . . . , N γ i ^
超平面关于样本点的几何间隔: γi=1||w||yi(w⋅xi+b) γ i = 1 | | w | | y i ( w · x i + b )
超平面关于训练数据集T的几何间隔: γ=mini=1,...,Nγi γ = min i = 1 , . . . , N γ i
SVM的基本想法是求解能够正确划分训练数据集且几何间隔最大的分离超平面.
求几何间隔最大的分离超平面(最大间隔分离超平面)可以表示为一个约束最优化问题:
maxw,bγ^||w|| max w , b γ ^ | | w | | (在 yi(w⋅xi+b)≥γ^ y i ( w · x i + b ) ≥ γ ^ 的约束条件下)
注意到: (1) 函数间隔 γ^ γ ^ 的取值不影响最优化问题的解, 故可令 γ^=1 γ ^ = 1 ; (2) 最大化 1||w|| 1 | | w | | 和最小化 ||w||22 | | w | | 2 2 是等价的.
从而最优化问题可以转化为如下形式:
minw,b||w||22 min w , b | | w | | 2 2 (在 yi(w⋅xi+b)−1≥0 y i ( w · x i + b ) − 1 ≥ 0 的约束条件下)
这是一个凸二次规划问题. 求解最优解w和b, 进而可得分离超平面和分离决策函数.
如果训练数据集T线性可分, 则可将训练数据集中的点完全分开的最大分离超平面存在且唯一.
支持向量: 训练数据集中与分离超平面距离最近的样本点的实例. 满足下式:
yi(w⋅xi+b)−1=0 y i ( w · x i + b ) − 1 = 0
对应下图中 H1 H 1 与 H2 H 2 上的点就是支持向量:
在决定分离超平面时只有支持向量在起作用, 这也是SVM名字的由来.
算法概述: 应用拉格朗日对偶性, 通过求解对偶问题得到原始问题的最优解.
为什么这样做: (1) 对偶问题更容易求解, (2) 自然地引入核函数.
步骤: (可以结合感知机的对偶形式一同学习)
(1) 定义拉格朗日函数:
L(w,b,α)=12||w||2−∑i=1Nαiyi(w⋅xi+b)+∑i=1Nαi L ( w , b , α ) = 1 2 | | w | | 2 − ∑ i = 1 N α i y i ( w · x i + b ) + ∑ i = 1 N α i 其中, α=(α1,...,αN)T α = ( α 1 , . . . , α N ) T 为拉格朗日乘子向量.
(2) 写出对偶最优化问题:
minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i · x j ) − ∑ i = 1 N α i
约束条件为: ∑i=1Nαiyi=0 ∑ i = 1 N α i y i = 0 而且 αi≥0,i=1,...,N α i ≥ 0 , i = 1 , . . . , N
(3) 由对偶最优化问题的解求得原始最优化问题的解:
对偶最优化问题的解为: α∗=(α∗1,...,α∗l)T α ∗ = ( α 1 ∗ , . . . , α l ∗ ) T (可以看到 α∗ α ∗ 的长度 l l 不同于拉格朗日乘子向量的长度 N N )
w∗=∑i=1Nα∗iyixi w ∗ = ∑ i = 1 N α i ∗ y i x i
b∗=yj−∑i=1Nα∗iyi(xi⋅xj) b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i · x j ) (注意 yj y j 对应的 αj>0 α j > 0 , 其实选择的 yj y j 就是支持向量)
对应于 α∗i>0 α i ∗ > 0 的实例点 xi x i 为支持向量.
引入目的: 求解线性不可分问题, 即训练数据集中存在特异点(线性不可分的点).
对每个样本点引入松弛变量 ξi≥0 ξ i ≥ 0 . 约束条件变为:
yi(w⋅xi+b)≥1−ξi y i ( w · x i + b ) ≥ 1 − ξ i
因为松弛变量的引入, 目标函数要加上一个额外的”代价”:
12||w||2+C∑i=1Nξi 1 2 | | w | | 2 + C ∑ i = 1 N ξ i
式中C>0为惩罚参数(C大的话, 对误分类的惩罚增大)
此时最小化目标函数包含了两层意思: (1)使 ||w||2 | | w | | 2 尽量小即间隔尽量大. (2) 使误分类点的个数尽量少. C是调节二者的系数.
线性不可分的线性支持向量机的学习问题变成如下凸二次规划问题(线性支持向量机的原始最优化问题):
minw,b,ξ12||w||2+C∑i=1Nξi min w , b , ξ 1 2 | | w | | 2 + C ∑ i = 1 N ξ i
约束条件为: yi(w⋅xi+b)≥1−ξi y i ( w · x i + b ) ≥ 1 − ξ i
输入: 训练数据集 T={(x1,y1),...,(xN,yN)},xi∈X=Rn,y∈Y={+1,−1},i=1,2,...,N T = { ( x 1 , y 1 ) , . . . , ( x N , y N ) } , x i ∈ X = R n , y ∈ Y = { + 1 , − 1 } , i = 1 , 2 , . . . , N .
输出: 分离超平面和分类决策函数.
(1) 选择惩罚参数C>0, 构造并求解凸二次规划问题:
minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i · x j ) − ∑ i = 1 N α i (与线性可分支持向量机的情形相同)
约束条件为: ∑i=1Nαiyi=0 ∑ i = 1 N α i y i = 0 而且 C≥αi≥0,i=1,...,N C ≥ α i ≥ 0 , i = 1 , . . . , N (有别于线性可分支持向量机)
求得一个最优解: α∗=(α∗1,...,α∗N)T α ∗ = ( α 1 ∗ , . . . , α N ∗ ) T
(2) 计算原始问题的参数
w∗=∑i=1Nα∗iyixi w ∗ = ∑ i = 1 N α i ∗ y i x i (同线性可分支持向量机)
b∗=yj−∑i=1Nα∗iyi(xi⋅xj) b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i · x j ) (注意 yj y j 对应的 C>αj>0 C > α j > 0 , 其实选择的 yj y j 就是支持向量)
(求得的b*可能不唯一)
(3) 求得分离超平面和分类决策函数.
支持向量(软间隔的支持向量): 对应 C>α∗i>0 C > α i ∗ > 0 的样本点的实例 xi x i .
实例 xi x i 到分离超平面的距离为 ξi||w|| ξ i | | w | |
支持向量 xi x i 可以在: (1) 间隔边界上, (2) 间隔边界与分离超平面之间, (3) 在分离超平面的误分一侧.
以上各种情况可以用参数表示为:
合页损失函数的形式:
L(y(w⋅x+b))=[1−y(w⋅x+b)]+ L ( y ( w · x + b ) ) = [ 1 − y ( w · x + b ) ] +
则线性支持向量机原始最优化问题等价于如下的最优化问题(合页损失函数的累加 & 正则化项):
minw,b∑i=1N[1−yi(w⋅xi+b)]++λ||w||2 min w , b ∑ i = 1 N [ 1 − y i ( w · x i + b ) ] + + λ | | w | | 2
合页损失函数图示:
上图中虚线是感知机的损失函数(样本点只要被分类正确, 损失就=0), 相比之下, 合页损失函数不仅要分类正确, 而且在确信度足够高时损失才为0.
非线性可分问题: 如果能用一个超曲面将训练数据集中的正负例正确分开, 则这个问题可以被称为非线性可分问题.
问题解决方法: (1) 使用一个非线性变换将原空间的数据映射到新空间, (2) 在新空间中用线性分类学习方法.
核函数: 设X为输入空间, H为特征空间(希尔伯特空间, 通常是高维的), 如果存在一个从X到H的映射:
Φ(x):X→H Φ ( x ) : X → H
使得对所有的x,z∈X, 函数K(x,z)满足条件:
K(x,z)=Φ(x)⋅Φ(x) K ( x , z ) = Φ ( x ) · Φ ( x )
则称K(x,z)为核函数, Φ(x)为映射函数.
核技巧的思路: 只定义核函数K(x,z), 而不是显式地定义映射函数.
用核函数替代对偶函数中的内积(xi,xj). 此时对偶函数的目标函数变为:
W(α)=12∑i=1N∑j=1NαiαjyiyjK(xi⋅xj)−∑i=1Nαi W ( α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i · x j ) − ∑ i = 1 N α i
同理分类决策函数变为:
f(x)=sign(∑i=1Nsα∗iyiΦ(xi)⋅Φ(x)+b∗)=sign(∑i=1Nsα∗iyiK(xi,x)+b∗) f ( x ) = s i g n ( ∑ i = 1 N s α i ∗ y i Φ ( x i ) · Φ ( x ) + b ∗ ) = s i g n ( ∑ i = 1 N s α i ∗ y i K ( x i , x ) + b ∗ )
在实际中, 往往依赖领域知识直接选择核函数, 并通过实验验证其有效性.
通常所说的核函数就是正定核函数.
实际问题中往往应用已有的核函数.
K(x,z)=(x⋅z+1)p K ( x , z ) = ( x · z + 1 ) p
K(x,z)=exp(−||x−z||22σ2) K ( x , z ) = e x p ( − | | x − z | | 2 2 σ 2 )
输入: 训练数据集T
输出: 分类决策函数
(1) 选取适当的核函数K和参数C, 构造并求解最优化问题
min12∑i=1N∑j=1NαiαjyiyjK(xi⋅xj)−∑i=1Nαi min 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i · x j ) − ∑ i = 1 N α i
约束条件为:
∑i=1Nαiyi=0 ∑ i = 1 N α i y i = 0 而且 C≥αi≥0,i=1,...,N C ≥ α i ≥ 0 , i = 1 , . . . , N
(2) 求解原始问题的参数的值
b∗=yj−∑i=1Nα∗iyi(xi⋅xj) b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i · x j ) (注意 yj y j 对应的 C>αj>0 C > α j > 0 , 其实选择的 yj y j 就是支持向量)
(3) 得出决策函数
f(x)=sign(∑i=1Nsα∗iyiK(xi,x)+b∗) f ( x ) = s i g n ( ∑ i = 1 N s α i ∗ y i K ( x i , x ) + b ∗ )
当K是正定核的时候, 上述问题是凸二次规划问题, 解是存在的.