赞
踩
支持向量机(Support Vector Machine :SVM):二分类算法模型,数据集较小时,分类效果甚至优于神经网络。
其最大的特点在于:能够造出最大间距的决策边界,从而提高分类算法的鲁棒性。
主要用于解决模式识别领域中的数据分类问题,属于有监督学习算法的一种
基本模型是定义在特征空间上的间隔最大的先行分类器,目标是找到一个决策边界(超平面),使得离超平面最近的点到超平面的距离越远越好。例如下图,3条线都可以将两类数据分开,如何选择“最好的”一条线,是支持向量机(SVM)算法思想的核心。
- 支持向量机最简单的就是线性可分支持向量机,解决线性可分问题(能由一条线完全分为两类)。当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,也称为硬间隔支持向量机,可以表示为凸二次规划问题。
- 有些概念会提到,可能不清楚,但别急,往下看,自然就清楚了。
样本空间中任意点x到超平面的距离可以写为
d
=
∣
w
T
x
+
b
∣
∣
∣
w
∣
∣
d=\frac{|w^Tx+b|}{||w||}
d=∣∣w∣∣∣wTx+b∣
其中||W||为超平面的范数:
w
2
\sqrt{w^2}
w2
,常数b类似于直线方程中的截距。
二维空间中点(x, y)到直线的距离:(x,y) = ∣ A x + B y + C ∣ A 2 + B 2 \frac{|Ax+By+C|}{\sqrt{A^2+B^2}} A2+B2 ∣Ax+By+C∣
三维空间中点(x, y, z)到平面的距离:(x,y,z)= ∣ A x + B y + C z + D ∣ A 2 + B 2 + C 2 \frac{|Ax+By+Cz+D|}{\sqrt{A^2+B^2+C^2}} A2+B2+C2 ∣Ax+By+Cz+D∣
支持向量:离超平面最近的几个训练样本点,使得
y
i
(
w
T
x
i
+
b
)
=
+
1
y_i(w^Tx_i+b)=+1
yi(wTxi+b)=+1成立.
间隔:两个异类支持向量到超平面的距离和: d
硬间隔:满足所有样本都划分正确。
图中 A 点即为支持向量,由其所在直线表达式可知: ∣ w T x + b ∣ = 1 |w^Tx+b|=1 ∣wTx+b∣=1,
最优分隔超平面由支持向量完全决定。
因此,支持向量到分割超平面距离d为: 1 ∣ ∣ w ∣ ∣ + 1 ∣ ∣ w ∣ ∣ = 2 ∣ ∣ w ∣ ∣ \frac{1}{||w||}+\frac{1}{||w||}=\frac{2}{||w||} ∣∣w∣∣1+∣∣w∣∣1=∣∣w∣∣2;因此,离超平面最近的点到超平面的距离越远越好
对于形状为“x”的点,必定满足 w T x + b ≥ 1 w^Tx+b\ge1 wTx+b≥1的约束条件;
对于形状为“·”的点,必定满足 w T x + b ≤ − 1 w^Tx+b\le-1 wTx+b≤−1的约束条件。
相当于使用+1,-1当作类别标签,类似于逻辑回归中的0,1都是为了简化数学表达。
我们要求的就是距离d的最大值,于是可以转化为其等价形式:最小化
1
2
∣
∣
w
∣
∣
2
=
1
2
∑
j
=
1
n
w
j
2
s
.
t
.
:
y
i
(
w
x
i
+
b
)
−
1
≥
0
,
i
=
1
,
2
,
.
.
.
,
N
\frac{1}{2}||w||^2=\frac{1}{2}\sum_{j=1}^{n}w_j^2\\ s.t. :y_i(wx_i+b)-1\ge0,i=1,2,...,N
21∣∣w∣∣2=21j=1∑nwj2s.t.:yi(wxi+b)−1≥0,i=1,2,...,N其中
1
2
\frac{1}{2}
21是为了便于求导运算加上的,可简化运算。
这是一个凸二次规划问题。
一般的极值优化问题的三种情况:
• 无约束条件:求导找到极值点、梯度下降: min f(x) ;
• 等式约束条件:拉格朗日乘子法、消元法转化问题
m
i
n
f
(
x
)
,
h
(
x
)
=
0.
minf(x),\\h(x)=0.
minf(x),h(x)=0.
• 不等式约束条件:拉格朗日乘子法 + KKT条件
m
i
n
f
(
x
)
,
g
(
x
)
≤
0
h
(
x
)
=
0.
minf(x),\\g(x)\le0\\h(x)=0.
minf(x),g(x)≤0h(x)=0.该约束最优化问题也就是凸优化问题。
其中
目标函数
f
(
x
)
和约束函数
g
(
x
)
目标函数f(x)和约束函数g(x)
目标函数f(x)和约束函数g(x)都是连续可微凸函数,约束函数
h
(
x
)
h(x)
h(x)是仿射函数。
当目标函数是二次函数,且约束函数g(x)是仿射函数时,上述凸最优化问题成为凸二次规划问题。
在约束最优化问题中,常常利用拉格朗日对偶性将原始问题转换为对偶问题,通过对对偶问题求解得到原问题的解:
- 第一步:利用拉格朗日乘子法,得到原问题的对偶问题;
- 第二步:再利用KKT条件,解得最优参数w,b。
二次规划的对偶问题:
优点,是对偶问题往往更容易求解,二,自然引入核函数,进而推广到非线性分类问题
m
i
n
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
=
1
N
α
i
s
.
t
.
:
∑
i
=
1
N
α
i
y
i
=
0
,
(
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
N
)
min \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^N\alpha_i\\ s.t.:\sum_{i=1}^N\alpha_iy_i=0, (\alpha_i\ge0,i=1,2,...,N)
min21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.:i=1∑Nαiyi=0,(αi≥0,i=1,2,...,N)
其中,
α
=
(
α
1
,
.
.
.
,
α
N
)
\alpha=(\alpha_1,...,\alpha_N)
α=(α1,...,αN)是拉格朗日乘子向量。
通常,通过求解对偶问题学习线性可分支持向量机,即首先求解对偶问题的最优值
α
∗
\alpha^*
α∗,然后求最优值
w
∗
w^*
w∗和
b
∗
b^*
b∗,得出分隔超平面和分类决策函数。
KKT条件要求:
由上可得,设 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α m ∗ \alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_m^* α∗=(α1∗,α2∗,...,αm∗是对偶问题的最优解,则存在下标j,使得0< α j ∗ \alpha_j^* αj∗<C,使得原始问题的最优参数 w ∗ , b ∗ w^*,b^* w∗,b∗为:
注:
前面的讨论中,我们一直假定训练样本在样本空间中是线性可分的,即存在一个超平面能将不同类的样本完全划分开,也就是硬间隔。然而现实任务中往往不太可能;
因此,我们引入软间隔,允许支持向量机在某些样本上出错。这样的线性支持向量机也成为软间隔支持向量机
硬间隔:所有样本都必须划分正确
软间隔:允许一些样本出错,也就是允许一些样本不满足 y i ( w T + b ) ≥ 1 y_i(w^T+b)\ge1 yi(wT+b)≥1
松弛系数:为了解决无法找到最大间距的分割超平面问题,引入了一个参数 ε \varepsilon ε,称为松弛系数
此时,为确保在最大化间隔,同时误分类点尽量少。对每个松弛标量付出一定的代价,所以目标优化函数变为
m
i
n
w
,
b
,
ε
i
1
2
∣
∣
w
∣
∣
2
+
R
∑
i
=
1
m
ε
i
min_{w,b,\varepsilon_i} \frac{1}{2}||w||^2+R\sum_{i=1}^m\varepsilon_i
minw,b,εi21∣∣w∣∣2+Ri=1∑mεi
其中m为数据集的个数,R为算法参数,其对应的约束条件(s.t.)也变成:
y
i
(
w
T
x
+
b
)
≥
1
−
ε
i
ε
i
≥
0
y_i(w^Tx+b)\ge1-\varepsilon_i\\ \varepsilon_i\ge0
yi(wTx+b)≥1−εiεi≥0
如何理解松弛系数?我们可以把
ε
i
\varepsilon_i
εi理解为样本数据违反最大间距规则的程度,对于正常样本,即满足约束条件
ε
\varepsilon
ε=0;而对于部分违反最大间距规则的样本
ε
\varepsilon
ε>0。
参数R则为惩罚参数,R值大,对误分类的惩罚增大,反之减小(以一定的步伐变化,找出最好的那个)。
可以看出,引入松弛系数类似于逻辑回归里成本函数引入正则项,目的都是为了纠正过拟合问题,让支持向量机对噪声数据有更强的适应性。
求参数也是采用拉格朗日乘子法,和上述方法步骤相同(仅多了一个惩罚因子),算法流程也基本相同。
对偶问题:
①、构造并求解带约束的最优化问题:
求得最优解(对偶问题的解)
α
∗
=
(
α
1
∗
,
α
2
∗
,
.
.
.
,
α
N
∗
)
\alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_N^*)
α∗=(α1∗,α2∗,...,αN∗)。
②、计算:
w
∗
=
∑
i
=
1
N
α
i
∗
y
i
x
i
w^*=\sum_{i=1}^N\alpha_i^*y_ix_i
w∗=∑i=1Nαi∗yixi
并选择
α
∗
\alpha^*
α∗的一个正分量
0
<
α
j
∗
0<\alpha_j^*
0<αj∗<C,计算
b
∗
=
y
j
−
∑
i
=
1
N
α
i
∗
y
i
x
i
T
x
j
b^*=y_j-\sum_{i=1}^N\alpha_i^*y_ix_i^Tx_j
b∗=yj−∑i=1Nαi∗yixiTxj
③、由此求得分离超平面:
w
∗
x
+
b
∗
=
0
w^*x+b^*=0
w∗x+b∗=0;以及分类决策函数:
f
(
x
)
=
s
i
g
n
(
w
∗
x
+
b
∗
)
f(x) = sign(w^*x+b^*)
f(x)=sign(w∗x+b∗)
注:此处的解
w
∗
唯一,但
b
∗
不一定
w^*唯一,但b^*不一定
w∗唯一,但b∗不一定
在现实任务中,原始的样本空间可能并不存在一个能正确划分两类样本的超平面,因此,需要利用非线性模型才能很好地进行分类。这时可以使用非线性支持向量机,主要特点就是利用核技巧(kernel trick)。
非线性问题往往不好求解,所以我们希望能用解线性分类问题的方法来解决该问题。所以需要采取非线性变换,将非线性问题转变为线性问题,进而求解原来非线性问题。核技巧就属于这样的方法:
注:
φ
(
x
)
\varphi(x)
φ(x)是无限维。
也就是将样本映射到一个更高维度的特征空间中,使得其线性可分。如:
如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分;且维度越高,越容易被线性划分
令
φ
(
x
)
\varphi(x)
φ(x)为将x映射后的特征向量,于是在新的特征空间中划分超平面可以表示为
f
(
x
)
=
w
T
φ
(
x
)
+
b
f(x)=w^T\varphi(x)+b
f(x)=wTφ(x)+b
使用软间隔最大化,目标函数为:
m
i
n
w
,
b
,
ε
1
2
∣
∣
w
∣
∣
2
+
R
∑
i
=
1
m
ε
i
s
.
t
.
(
约束条件
)
:
{
y
i
(
w
T
φ
(
x
i
)
+
b
)
≥
1
−
ε
i
,
此处将
x
i
替换为了
φ
(
x
i
)
ε
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
m
min_{w,b,\varepsilon} \frac{1}{2}||w||^2+R\sum_{i=1}^m\varepsilon_i\\ s.t.(约束条件):
其中w,b是模型参数,类似有: m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 min_{w,b} \frac{1}{2}||w||^2 minw,b21∣∣w∣∣2
对偶问题:
由于特征维数可能很高,直接计算
ϕ
(
x
i
)
T
ϕ
(
x
j
)
\phi(x_i)^T\phi(x_j)
ϕ(xi)Tϕ(xj)通常会很困难,因此引入了核函数。于是,我们将对偶问题重写
核函数带入之后进行求解,可得分类决策函数为:
定义:设
χ
\chi
χ是输入空间,
ψ
\psi
ψ为特征空间,如果存在一个从
χ
\chi
χ到
ψ
\psi
ψ的映射:
ϕ
(
x
)
\phi(x)
ϕ(x),使得对所有的
x
,
z
∈
χ
x,z\in\chi
x,z∈χ,函数
K
(
x
,
z
)
K(x,z)
K(x,z)满足条件
K
(
x
,
z
)
=
ϕ
(
x
)
⋅
ϕ
(
z
)
K(x,z)=\phi(x)\cdot\phi(z)
K(x,z)=ϕ(x)⋅ϕ(z)
则称K(x, z)为核函数(二者的内积),
ϕ
(
x
)
\phi(x)
ϕ(x)为映射函数。
- 我们不需要知道无限维映射函数 ϕ ( x ) \phi(x) ϕ(x)的显示表达,我们只需要知道一个核函数(kernel function)K(x,z)= ϕ ( x ) T ϕ ( z ) \phi(x)^T\phi(z) ϕ(x)Tϕ(z)(两个无限维向量的内积),替换掉软间隔限制条件中的 x i 或者 φ ( x i ) x_i或者\varphi(x_i) xi或者φ(xi),则对应的优化式仍然是可解的。
注:K(x,z)能写成
ϕ
(
x
)
T
ϕ
(
z
)
\phi(x)^T\phi(z)
ϕ(x)Tϕ(z)的充要条件如下(Mercer’s Theorem),
① 交换性:K(x,z)= K(z, x)
② 半正定性:
∀
C
i
,
X
i
(
i
=
1
,
2
,
.
.
.
,
N
)
,
有
∑
i
=
1
N
∑
j
=
1
N
C
i
C
j
K
(
X
i
,
X
j
)
≥
0
\forall C_i,X_i(i=1,2,...,N),有 \sum_{i=1}^N\sum_{j=1}^NC_iC_jK(X_i, X_j) \ge0
∀Ci,Xi(i=1,2,...,N),有∑i=1N∑j=1NCiCjK(Xi,Xj)≥0
在实际应用中往往依赖领域知识直接选择核函数,核函数的选择成为支持向量机最大的变数,模型的有效性需要通过实验验证。
线性核Linear
K
(
x
i
,
x
j
)
=
x
i
T
x
j
K(x_i,x_j)=x_i^Tx_j
K(xi,xj)=xiTxj
两向量的内积,相当于没有用核。
多项式核Ploy(常用)
K
(
x
i
,
x
j
)
=
(
x
i
T
x
j
)
d
K(x_i,x_j)=(x_i^Tx_j)^d
K(xi,xj)=(xiTxj)d
其中d大于等于1,为多项式的次数;
d值越大,维度越高。
当d=1时,退化为线性核。
高斯核Rbf(常用)
K
(
x
i
,
x
j
)
=
e
−
∣
∣
x
i
−
x
j
∣
∣
2
2
σ
2
K(x_i,x_j)=e^{-\frac{||x_i-x_j||^2}{2\sigma^2}}
K(xi,xj)=e−2σ2∣∣xi−xj∣∣2
其中
σ
\sigma
σ为高斯核的带宽(width);
例如,如果我们输入的特征是一维的标量,高斯核函数对应的形状是一个反钟形的曲线,该参数就是控制其宽度的。
该核对应的
ϕ
(
x
)
\phi(x)
ϕ(x)是无限维的:函数可以将输入特征映射到无限多维。公式的推导会用到泰勒公式。
拉普拉斯核
K
(
x
i
,
x
j
)
=
e
−
∣
∣
x
i
−
x
j
∣
∣
σ
K(x_i,x_j)=e^{-\frac{||x_i-x_j||}{\sigma}}
K(xi,xj)=e−σ∣∣xi−xj∣∣
其中
σ
>
0
\sigma>0
σ>0
sigmoid核(常用)
K
(
x
i
,
x
j
)
=
t
a
n
h
(
β
x
T
+
b
)
K(x_i,x_j)=tanh(\beta x^T+b)
K(xi,xj)=tanh(βxT+b)
其中tanh为双曲正切函数:
t
a
n
h
(
x
)
=
e
x
−
e
−
x
e
x
+
e
−
x
,
β
>
0
,
b
<
0
tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}, \beta>0, b<0
tanh(x)=ex+e−xex−e−x,β>0,b<0
PS: 情况不明时可先尝试高斯核
①、构造并求解带约束的最优化问题:
求得最优解(对偶问题的解)
α
∗
=
(
α
1
∗
,
α
2
∗
,
.
.
.
,
α
N
∗
)
\alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_N^*)
α∗=(α1∗,α2∗,...,αN∗)。
②、计算:
w
∗
=
∑
i
=
1
N
α
i
∗
y
i
K
(
x
i
,
x
j
)
w^*=\sum_{i=1}^N\alpha_i^*y_iK(x_i,x_j)
w∗=∑i=1Nαi∗yiK(xi,xj)
并选择
α
∗
\alpha^*
α∗的一个正分量
0
<
α
j
∗
0<\alpha_j^*
0<αj∗<C,计算
b
∗
=
y
j
−
∑
i
=
1
N
α
i
∗
y
i
x
i
T
K
(
x
i
,
x
j
)
b^*=y_j-\sum_{i=1}^N\alpha_i^*y_ix_i^TK(x_i,x_j)
b∗=yj−∑i=1Nαi∗yixiTK(xi,xj)
③、由此求得分离超平面:
w
∗
x
+
b
∗
=
0
w^*x+b^*=0
w∗x+b∗=0;以及分类决策函数:
f
(
x
)
=
s
i
g
n
(
w
∗
x
+
b
∗
)
f(x) = sign(w^*x+b^*)
f(x)=sign(w∗x+b∗)
优点:
• 使用核函数可以向高维空间进行映射,解决非线性的分类;
• 分类思想很简单:将样本与决策面的间隔最大化;
• 分类效果较好,计算开销不大;
• SVM 是一种有坚实理论基础的小样本学习方法
缺点:
• 对缺失数据敏感,对参数调节和核函数的选择敏感;
• 对大规模数据训练比较困难
对偶问题以及KKT条件
当训练样本容量很大时,很多实现算法往往变得非常低效,以至于无法使用。
SMO是一种启发式算法,基本思路是:
如此SMO算法将原问题不断分解为子问题,并对子问题求解,直至全都满足KKT条件为止,进而达到求解原问题的目的
整个SMO算法包括两个部分:求解两个变量二次规划的解析方法,和选择变量的启发式方法
详细推导过程可参考:SVM支持向量机-SMO算法公式推导(2)
SMO算法是支持向量机学习的一种快速算法,其特点是不断地将原二次规划问题分解为只有两个变量的二次规划子问题,并对子问题进行解析求解,知道所有变量满足KKT条件为止。这样通过启发式的方法得到原二次规划问题的最优解。因为子问题有解析解,所以每次计算子问题都很快,虽然计算子问题次数很多,但在总体上还是高效的。
SVM支持向量机算法实战(SMO)可参考该博客:《机器学习实战》第六章 Python3代码-(亲自修改测试可成功运行)
以上就是关于决策树的分享,若有不妥之处,欢迎各路大佬不吝赐教~
参考:
《统计学习方法》,李航, 清华大学出版社,第二版
《机器学习》,周志华,清华大学出版社
https://blog.csdn.net/BIT_666/article/details/79865225
喜欢的伙伴点个赞关注一下吧~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。