3.3 支持向量回归机
SVM 本身是针对经典的二分类问题提出的,支持向量回归机(Support Vector
Regression,SVR)是支持向量在函数回归领域的应用。SVR 与 SVM 分类有以
下不同:SVM 回归的样本点只有一类,所寻求的最优超平面不是使两类样本点
分得“最开”,而是使所有样本点离超平面的“总偏差”最小。这时样本点都在
两条边界线之间,求最优回归超平面同样等价于求最大间隔。
3.3.1 SVR 基本模型
对 于 线 性 情 况 , 支 持 向 量 机 函 数 拟 合 首 先 考 虑 用 线 性 回 归 函 数
= w
+
bx
)(
xf
需要确定w 和 b 。
拟合
(
yx
i
,
i
),
i
=
,...,2,1
n
,
x ˛
i R
n
为输入量,
˛ 为输出量,即
R
yi
图 3-3a SVR 结构图 图 3-3be 不灵敏度函数
惩罚函数是学习模型在学习过程中对误差的一种度量,一般在模型学习前己
经选定,不同的学习问题对应的损失函数一般也不同,同一学习问题选取不同的
损失函数得到的模型也不一样。常用的惩罚函数形式及密度函数如表 3-1。
表 3-1 常用的损失函数和相应的密度函数
损失函数名称
e -不敏感
拉普拉斯
高斯
损失函数表达式 (
)ic x%
x
i e
x
i
21
x
2 i
噪声密度 (
)ip x
1
+
2(1
e
)
exp(
x
)
i e
x-
exp(
)
i
1
2
1
p
2
exp(
x
2
i
2
)
-
-
鲁棒损失
多项式
分段多项式
x
(
i
2
) ,
x
if
s
i
;
1
s
2
x
i
s
2
, otherwise;
1
x
ip
p
1
1
s
p
p
x s
i
x
i
p
p
,
1
p
x
if
s
i
,
otherwise
exp(
s
exp(
2
i
x
s
2
exp(
exp(
s
2
),
if
x
i
s
x
i
),
otherwise
p
2 (1/
x
s
p
p
p
exp(
x-
i
p
)
),
if
x
i
s
p
)
p
i
p
1
1
x
),
otherwise
i
标准支持向量机采用e -不灵敏度函数,即假设所有训练数据在精度e 下用线
性函数拟合如图(3-3a)所示,
e x
e x
£ +
)
(
f x
y
i
i
£ +
(
)
y
f x
i
i
x x
*
0
,
i
i
i
i
*
=
i
1, 2,...,
n
(3.11)
式中,
xx 是松弛因子,当划分有误差时,x ,
,
i
*
i
x 都大于 0,误差不存在取 0。
*
i
这时,该问题转化为求优化目标函数最小化问题:
xxw
,
(
,
R
*
)
=
ww
+
C
1
2
n
∑
=
1
i
x
(
i
+
x
*
i
)
(3.12)
式(3.12)中第一项使拟合函数更为平坦,从而提高泛化能力;第二项为减小误
差;常数 0>C 表示对超出误差e 的样本的惩罚程度。求解式(3.11)和式(3.12)
可看出,这是一个凸二次优化问题,所以引入 Lagrange 函数:
=
L
ww
+
C
n
x x
∑
(
=
1
i
+
i
*
i
n
a x e
∑
)
=
1
i
+ -
i
[
i
+
y
i
(
f x
i
)]
a x
[
*
i
e
+ -
*
i
+
y
i
(
f x
i
)]
n
xg xg
+
∑
(
=
1
i
i
(3.13)
* *
i
i
)
i
1
2
n
∑
=
1
i
式中,a ,
i
0
a
* ‡
g ,
g
* ‡
x 的最小化,对 i
, i
*
i
i
,为 Lagrange 乘数,
0
a ,
a , i
。求函数 L 对w ,
g 的最大化,代入 Lagrange 函数得到对
,...,2,1=
g ,
n
*
i
*
i
i
x ,
b , i
偶形式,最大化函数:
£
-
-
£
-
G
-
£
-
-
-
-
£
-
-
-
-
‡
-
-
-
n
a a a a
∑
=
1
(
=
1,
*
i
i
j
i
)(
j
*
j
)(
x x
i
j
)
aa
(
,
W
=
*
)
+
1
2
n
∑
=
1
a a
(
i
*
i
)
y
i
n
+
a a e
∑
(
=
1
i
i
(3.14)
*
i
)
i
其约束条件为:
n
∑
=
1
i
£
0
a a
(
i
=
) 0
*
i
a a
,
i
*
i C
(3.15)
求解式(3.14)、(3.15)式其实也是一个求解二次规划问题,由 Kuhn-Tucker
定理,在鞍点处有:
+ -
=
a e x
[
x g
i
i
0
i
i
+
y
i
(
f x
i
=
)] 0
a e x
x g
i
+
*
[
*
i
+
y
i
=
)] 0
(
f x
i
*
i
0
*
=
i
(3.16)
得出
a
i
a
* =
i
0
a ,
,表明 i
a 不能同时为零,还可以得出:
*
i
(
C
(
C
i
a x
)
a x
*
)
i
i
=
=
*
i
0
0
(3.17)
从式(3.17)可得出,当
=a
Ci
,或
=*a
i
C
时,
(
xf
i
-)
y
i
可能大于e ,与
其对应的 ix 称为边界支持向量(Boundary Support Vector,BSV),对应图 3-3a
中虚线带以外的点;当
˛a
*
i
,0(
C
)
时,
(
xf
i
)
y
i
e=
,即
x
i
0=
* =
x
i
0
,
,与其
对应的 ix 称为标准支持向量(Normal Support Vector,NSV),对应图 3-3a 中落
在e 管道上的数据点;当 0=i
a , 0
a *
i
-
-
-
-
-
£
-
-
-
-
ERROR: limitcheck
OFFENDING COMMAND: string
STACK:
66038
33018
32512
33019