# 31第三十一章 支持向量机

advertisement
```第三十一章

§1

T = {( x1,y1 ), ( x2 ,y2 ), L , ( xl ,yl )} ∈ ( X × Y ) l ，

n
yi ∈ Y = {−1,1}, i = 1,L, l 。寻找 R n 上的一个实值函数 g (x) ，以便用分类函数
f ( x) = sgn( g ( x)),

1.1

n
(ω ⋅ xi ) + b ≥ ε（这里 (ω ⋅ xi ) 表示向量 ω 和 xi 的内积），而对所有使 yi = −1 的下标 i 有
(ω ⋅ xi ) + b ≤ −ε ，则称训练集 T 线性可分，称相应的分类问题是线性可分的。

+
= {xi | yi = 1, xi ∈ T } ， M − = {xi | yi = −1, xi ∈ T } 。定义
M + 的凸包 conv( M + ) 为
N+
N+
⎧
conv( M + ) = ⎨ x = ∑ λ j x j | ∑ λ j = 1, λ j ≥ 0, j = 1, L , N + ;
j =1
j =1
⎩
−
−
M 的凸包 conv( M ) 为
⎫
x j ∈ M + ⎬,
⎭
N−
N−
⎧
⎫
conv( M − ) = ⎨ x = ∑ λ j x j | ∑ λ j = 1, λ j ≥ 0, j = 1, L, N − ; x j ∈ M − ⎬.
j =1
j =1
⎩
⎭

+
−

-762-

+
= {xi | yi = 1, xi ∈ T } ， M − = {xi | yi = −1, xi ∈ T } ，由线

n
(ω ⋅ xi ) + b ≥ ε ， ∀xi ∈ M + 且 (ω ⋅ xi ) + b ≤ −ε ， ∀xi ∈ M − .

N+
N−
i =1
j =1
x = ∑ α i xi 和 x' = ∑ β j x' j

N+
∑α
i =1
N−
i
= 1， ∑ β j = 1 。
j =1

N+
N+
N+
⎛
⎞
(ω ⋅ x) + b = ⎜⎜ ω ⋅ ∑ α i xi ⎟⎟ + b = ∑ α i ((ω ⋅ xi ) + b) ≥ ε ∑ α i = ε > 0
i =1
i =1
⎝ i =1
⎠
N−
N−
N−
⎛
⎞
⎜
⎟
(ω ⋅ x' ) + b = ⎜ ω ⋅ ∑ β j x' j ⎟ + b = ∑ β j ((ω ⋅ x' j ) + b) ≤ −ε ∑ β j = −ε < 0
j =1
j =1
j =1
⎝
⎠

②充分性
+
−

n

+
−
(ω ⋅ x) + b ≥ ε
(ω ⋅ x' ) + b ≤ −ε

+
−
(ω ⋅ xi ) + b ≤ −ε ，由训练集线性可分的定义可知 T 是线性可分的。

n
⎧⎪ yi ((ω ⋅ xi ) + b) ≥ 0, i = 1, L , l
⎨ min (ω ⋅ x ) + b = 1
i
⎪⎩i =1,L,l

⎧(ω ⋅ xi ) + b ≥ 1 yi = 1;
⎨
⎩(ω ⋅ xi ) + b ≤ −1 yi = −1.
（1）

-763-
⎧⎪ yi ((ω ⋅ xi ) + b) ≥ 0, i = 1, L , l ,
⎨ min (ω ⋅ x ) + b = 1.
i
⎪⎩i =1,L,l

ω ' = ω" ， b′ = b′′ ，

ω ' = −ω" ， b′ = −b′′ .

min
yi =1
(ω ⋅ xi ) + b
ω
=
1
ω
，

min
yi = −1

2
ω
(ω ⋅ xi ) + b
ω
=
1
ω
，
。最优超平面即意味着最大化

2
ω
。如图 2 所示

(ω ⋅ x) + b = ±1 称为分类边界，于是寻找最优超平面的问题可以转化为如下的二次规

min
s.t.

-764-
1 2
ω
2
yi ((ω ⋅ xi ) + b) ≥ 1 i = 1, L, l
1 2
ω 是 ω 的凸函数，并且约束条件都是线性的。
2
（2）
L(ω , b, α ) =
1 2 l
ω + ∑ α i (1 − yi ((ω ⋅ xi ) + b))
2
i =1

l+
T

l
∂L
= 0 ⇒ ω = ∑ α i yi xi
∂ω
i =1
l
∂L
= 0 ⇒ ∑ α i yi = 0
∂b
i =1

max −
α
l
1 l l
y
y
α
α
(
x
⋅
x
)
+
αi
∑∑ i j i j i j ∑
2 i =1 j =1
i =1
l
∑yα
s.t.
i i
i =1
=0
（3）
α i ≥ 0, i = 1,L ,l
*
*
* T

l
ω * = ∑ α i* yi xi
i =1

α i* (1 − yi ((ω * ⋅ xi ) + b* )) = 0

*
*

*
l
b* = y j − ∑ yi αi* ( xi ⋅ x j ),
i =1

*
*
l
g ( x) = ∑ α i* yi ( xi ⋅ x) + b* ,
i =1

l
f ( x) = sgn (∑ α i* yi ( xi ⋅ x) + b* )
（4）
i =1

1.2 线性支持向量分类机

(ω ⋅ xi ) + b = ±1 上外，其余的所有样本点都分布在分类边界以外。此时构造的超平面

yi ((ω ⋅ xi ) + b) ≥ 1
-765-

ξi ≥ 0, i = 1,L, l

yi ((ω ⋅ xi ) + b) ≥ 1 − ξ i
i = 1,L, l ,

l
1 2
ω + C ∑ ξi ,
2
i =1
yi ((ω ⋅ xi ) + b) ≥ 1 − ξ i ,
min
s.t.
（5）
ξ i ≥ 0, i = 1, L , l.

L(ω , b, ξ, α , γ ) =
l
l
l
1 2
ω + C ∑ ξ i − ∑ α i ( yi ((ω ⋅ xi ) + b) − 1 + ξ i ) − ∑ γ iξ i ,
2
i =1
i =1
i =1

max −
l
1 l l
yi y j αi α j ( xi ⋅ x j ) + ∑ α i
∑∑
2 i=1 j =1
i =1
s.t.
∑ yα
α
l
i =1
i
i
=0
（6）
0 ≤ α i ≤ C , i = 1,L ,l

*
*
l
ω * = ∑ α i* yi xi ,
i =1

*
-766-
*
j
* T
l
b* = y j − ∑ yi αi* ( xi ⋅ x j )
i =1

*
*
l
f ( x) = sgn (∑ α i* yi ( xi ⋅ x) + b* )
i =1

1.3 可分支持向量分类机

T = {( x1,y1 ), ( x2 ,y2 ),L, ( xl ,yl )} ∈ ( X × Y )l

T = {( x1,y1 ), ( x2 ,y2 ) L ( xl ,yl )} = {(ϕ ( x1 ), y1 ), (ϕ ( x2 ), y2 ), (ϕ ( xl ), yl )}

min
s.t.

1 2
ω
2
yi ((ω ⋅ ϕ ( xi )) + b) ≥ 1 i = 1, L , l
K ( xi , x j ) = (ϕ ( xi ) ⋅ ϕ ( x j ))

K ( xi , x j ) = ( xi ⋅ x j )

K ( xi , x j ) = [( xi ⋅ x j ) + 1]q

S形内核函数
K ( xi , x j ) = exp{−
σ2
2
}
K ( xi , x j ) = tanh (v( xi ⋅ x j ) + c)
n

xi − x j
K ( xi , x j ) = ∑
k =1
1 − q2
2(1 − 2q cos( xik − x jk ) + q 2 )

max
α
−
l
1 l l
yi y jα iα j K ( xi ⋅ x j ) + ∑ α i
∑∑
2 i =1 j =1
i =1
l
s.t.
∑ yα
i =1
i
i
=0
α i ≥ 0, i = 1,L ,l
-767-

*
*
* T
*
*
l
b* = y j − ∑ yi αi* K ( xi ⋅ x j )
i =1

l
f ( x) = sgn (∑ yi α*i K ( x ⋅ x j ) + b* )
i =1

1.4 C-支持向量分类机

max −
α
l
1 l l
y
y
α
α
K
(
x
⋅
x
)
+
αi
∑∑ i j i j i j ∑
2 i =1 j =1
i =1
l
∑ yα
s.t.
i =1
i
i
=0
(7)
0 ≤ α i ≤ C , i = 1,L ,l

*
*
1
* T
l
*
*
l
b* = y j − ∑ yi αi* K ( xi ⋅ x j )
i =1

l
g ( x) = ∑ yi αi* K ( x ⋅ x j ) + b*
i =1

l
f ( x) = sgn (∑ yi α*i K ( x ⋅ x j ) + b* )
i =1

*

α i* = 0 ⇒ yi g ( xi ) > 1
0 < α i* < C ⇒ yi g ( xi ) = 1
-768-
*
* T
α i* = C ⇒ yi g ( xi ) < 1

*
g ( x) = ±1 上，有 g ( xi ) = 1 ； α i* = C 所对应的 xi 就是边界支持向量(BSV)，代表了所

§2

T = {( x1,y1 ), ( x2 ,y2 ), L , ( xl ,yl )} ∈ ( X × Y ) l

n

2.1 线性 ε − 支持向量回归机

− ε ≤ (ω ⋅ xi ) + b − yi ≤ ε , i = 1, L , l

ε min ，是下列优化问题的最优值
min ε
ω ,b
（8）
s.t. − ε ≤ (ω ⋅ xi ) + b − yi ≤ ε , i = 1, L , l

D + = {( xiΤ , yi + ε ) Τ , i = 1, L , l}
（9）
D − = {( xiΤ , yi − ε ) Τ , i = 1, L , l}

-769-

+
−

+

−

+
−
− ε ≤ (ω ⋅ xi ) + b − yi ≤ ε , i = 1,L, l

(~
y + εe) − Aω − be ≥ 0
~
( y − εe) − Aω − be ≤ 0
（10）

y = ( y1 ,L, yl ) ，e = (1,L,1) ， A = ( x1 ,L, xl ) ， D 的凸包中的任意一点都可
Τ
Τ
Τ
+

l
t = (t xΤ , t y ) Τ = ∑ ui ( xiΤ , yi + ε ) Τ
i =1
Τ

l
∑u
i
i =1
= 1 ， ui ≥ 0 ， i = 1,L, l ，由（10）的第一式可知
t y − (ω ⋅ t x ) − b = ( yˆ + εe) Τ u − ω Τ ⋅ ( AΤu ) − b ≥ 0.
（11）
−

l
s = ( s xΤ , s y ) Τ = ∑ vi ( xiΤ , yi − ε ) Τ
i =1
Τ

l
∑v
i =1
i
= 1 ， vi ≥ 0 ， i = 1,L, l ，由（10）的第二式可知
s y − (ω ⋅ s x ) − b = ( yˆ − εe) Τ u − ω Τ ⋅ ( AΤu ) − b ≥ 0
+
（12）
−

②充分性：

e Τu = 1 ， u ≥ 0
+
Τ
Τ

y + εe) Τ u ) Τ ，与此对应，选

e Τ v = 1 ， AΤ u = AΤ v
-770-
−

(( AΤ v) Τ , ( ~
y − εe) Τ v) Τ = (( AΤu ) Τ , ( ~
y − εe ) Τ v ) Τ
+

y = f ( x) = (ω ⋅ x) + b
+
−

(~
y + εe ) Τ u − ( ~
y − εe ) Τ v ≥ 0

⎧ AΤ u = AΤ v
⎪ Τ
Τ
⎪e u = e v = 1
⎨ ~
Τ
Τ
~
⎪( y + εe) u − ( y − εe) v < 0
⎪u ≥ 0, v ≥ 0
⎩

⎧ AΤ u = AΤ v
⎪ Τ
Τ
⎪e u = e v = 1
⎨ ~
Τ
Τ
~
⎪( y + εe) u − ( y − εe) v = −1
⎪u ≥ 0, v ≥ 0
⎩

y + εe) − Aω − be ≥ 0
(~
~
( y − εe) − Aω − be ≤ 0

+
min
s.t.
−
1 2
ω
2
yi − ((ω ⋅ xi ) + b) ≤ ε , i = 1, L , l
（13）
((ω ⋅ xi ) + b) − yi ≥ ε , i = 1, L , l

n

*
*
*
*
*
*

*
*
*
*
ω1* = ω2* = r
-771-

*
*
ω1* + ω2*
2
，b =
b1* + b1*
，则 (ω , b)
2

1 * 1 *
ω1 + ω2 = r
2
2
*
*

r≤ ω ≤

*
*
l
1 2 l
ω − ∑ α i (ε + yi − (ω ⋅ xi ) − b) − ∑ α i* (ε − yi + (ω ⋅ xi ) + b)
2
i =1
i =1
*
* Τ
= (α1 , α1 ,L, α l , α l ) ≥ 0 为 Lagrange 乘子，根据 Wolfe 对偶的定义，分别对
L(ω , α (∗) , b) =

( ∗)
ω ， b 求偏导置零得到
l
∂L
= ω − ∑ (α i* − α i ) xi =0
∂ω
i =1
l
∂L
= ∑ (α i* − α i ) = 0
∂b i=1

min
(*)
2l
α ∈R
l
l
1 l l
(α i* − α i )(α *j − α j )( xi ⋅ x j ) + ε ∑ (α i* − α i ) −∑ yi (α i* − α i )
∑∑
2 i=1 j =1
i =1
i =1
l
∑ (α
s.t.
i =1
*
i
− αi ) = 0
（14）
α (*) = (α1 , α1* ,L, α l , α l* ) Τ ≥ 0

(∗)
= (α1 , α1* , L, α l , α l* ) Τ ，其中只有支持向量对应的 α i 或 α i* 非零，计算
l
ω = ∑ (α i* − α i ) xi
i =1

(*)

b = y j − (ω ⋅ x j ) + ε

(*)

*
b = y j − (ω ⋅ x j ) − ε

l
∑ (α
i =1
*
i
− α i )( xi ⋅ x) + b ，即可对未知样本进行预测。
ε − 支持向量回归机
+
−

2.2

-772-

min
(*)
2l
α ∈R
l
l
1 l
*
*
*
(
α
−
α
)(
α
−
α
)
(
,
)
+
ε
(
α
−
α
)
−
K
x
x
yi (α i* − α i )
∑
∑
∑
i
i
j
j
i
j
i
i
2 i , j =1
i =1
i =1
l
s.t.
∑ (α
i =1
*
i
− αi ) = 0
（15）
C
, i = 1, L , l
l
= (α1 , α1* ,L, α l , α l* ) Τ ，选择 α (*) 的正分量 α j > 0 ，计算
0 ≤ α i , α i* ≤

(∗)
l
b = y j − ∑ (α i* − α i ) K ( xi , x j ) +ε
i =1

(*)

*
j
l
b = y j − ∑ (α i* − α i ) K ( xi , x j ) −ε
i =1

l
∑ (α
i =1
*
i
− α i ) K ( xi , x) + b ，即可对未知样本进行预测。

*
C
C
] ，α i = 0 ；或 α *i = 0 ，α i ∈ [0, ] 。
l
l
C
C
*
*
。

l
l

*

§3

3.1 问题的提出

3.2 支持向量机的分类模型
-773-

。

30
g i = 1 为良性肿瘤， g i = −1 为恶性肿瘤。
（1）样本线性或非线性可分

T
30
⎧wT ti + b ≥ 1, g i = 1 时
⎨
⎩wti + b ≤ −1, g i = −1 时
T

2
1
⇒ min w
2
w
max
2

1 2
w
2
T
s.t. g i ( w ti + b) ≥ 1 ， i = 1,2, L , n
min

*
*
g ( x) = sgn( w*T x + b* )

L( w, α ) =
1 2 n
w + ∑ α i [1 − g i ( wT ti + b)]
2
i =1

T

n
∂L
= w − ∑ α i g i ti = 0
∂w
i =1
-774-
∂L n
= ∑ α i gi = 0
∂b i=1

n
n
i =1
i =1
n
∑ α i giti ， ∑ α i gi = 0 ，代入原始拉格朗日函数得
L = ∑αi −
i =1
1 n n
∑∑ α iα j gi g j (ti ⋅ t j )
2 i =1 j =1

n
max
1 n n
∑∑ α iα j gi g j (ti ⋅ t j )
2 i =1 j =1
∑αi −
i =1
⎧n
⎪∑ α i g i = 0
s.t. ⎨ i =1
⎪0 ≤ α , i = 1,2,L, n
i
⎩

*
*
n
∑α
i =1
*
i
g i ti 。

α i*[1 − g i (( w* ⋅ ti ) + b* )] = 0

*

*
*
*
n
b* = g j − ∑ g iα i* (ti ⋅ t j )
i =1

g ( x) = sgn( w*T x + b* )

K ( x, y ) = x ⋅ y
 线性内核




K ( x, y ) = exp{−
q
| x − y |2
σ2
}
K ( x, y ) = tanh(v( x ⋅ y ) + c)


S 形内核

n
max
∑αi −
i =1
1 n n
∑∑ α iα j gi g j K (ti , t j )
2 i=1 j =1
-775-
⎧n
⎪∑ α i g i = 0
s.t. ⎨ i =1
⎪0 ≤ α , i = 1,2, L , n
i
⎩

n
g ( x) = sgn(∑ α i* g i K (ti , x) + b* )
i =1
（2）样本不可分时的软间隔处理。

n
1 2
w + c∑ ξ i
2
i =1
min
⎧ g i ( wT ti + b) ≥ 1 − ξ i
s.t. ⎨
⎩ξ i ≥ 0, i = 1,2,L, n
*
*

g ( x) = sgn( w*T x + b* )

n
max
∑α
i =1
i
−
1 n n
∑∑ α iα j gi g j K (ti , t j )
2 i=1 j =1
⎧n
⎪∑ α i g i = 0
s.t. ⎨ i =1
⎪0 ≤ α ≤ c, i = 1,2,L, n
i
⎩

n
g ( x) = sgn(∑ α i* g i K ( xi , x) + b* )
i =1

3.3 分类模型的求解

*
*
~

g (~
t j ) = 1 ，第 j 个样本点为良性肿瘤
~
g ( t ) = −1 ，第 j 个样本点为恶性肿瘤
j

-776-
*T
*

1
3
5
6
7
8
9
11
12
2
4
10
13
15
17
18
22
29
14
16
19
20
21
23
24
25
26
34
36
37
42
63
64
65
66
67
27
28
30
31
32
33
35
38
39
68
40
41
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
69

%原始数据中的 B 替换成 1，M 替换成-1，X 替换成 2，删除了分割符*
clc,clear
load cancerdata.txt;
can=cancerdata;
can(:,1)=[]; %删除第一列病例号
gdb=find(can(:,1)==1); %读出良性肿瘤的序号
n1=length(gdb);
%计算良性肿瘤样本点的个数
bdb=find(can(:,1)==-1); %读出恶性肿瘤的序号
n2=length(bdb);
%计算恶性肿瘤样本点的个数
gd=can(gdb,2:end); %提出良性肿瘤的数据
bd=can(bdb,2:end); %提出恶性肿瘤的数据
xd=can([501:569],[2:end]); %提出待分类数据
H=eye(31);H(31,31)=0; %w,b 总共 31 个待定参数，b 对应最后一个参数
ga=[gd,ones(n1,1)]; %良性样本点对应的系数矩阵
ba=[bd,ones(n2,1)]; %恶性样本点对应的系数矩阵
a=[-ga;ba]; %线性不等号约束的系数矩阵
b=-ones(500,1); %线性不等号约束的右端项
[wb,fval,flag]=quadprog(H,[],a,b) %调用二次规划命令
xdf=[xd,ones(69,1)];
g=xdf*wb; %计算ｗ'*x+b 的值
g1=find(g>0)' %良性样本序号
g2=find(g<0)' %恶性样本序号

function svm1
clc,clear
global N
load cancerdata.txt;
can=cancerdata;
can(:,1)=[]; %删除第一列病例号
gdb=find(can(:,1)==1); %读出良性肿瘤的序号
n1=length(gdb);
%计算良性肿瘤样本点的个数
bdb=find(can(:,1)==-1); %读出恶性肿瘤的序号
n2=length(bdb);
%计算恶性肿瘤样本点的个数
gd=can(gdb,2:end); %提出良性肿瘤的数据
-777-
bd=can(bdb,2:end); %提出恶性肿瘤的数据
xd=can([501:569],[2:end]); %提出待分类数据
X=[gd;bd];
%重新排序后的训练样本
N=size(X,1);
gb=[ones(n1,1);-ones(n2,1)]; %g_i 的取值向量
a0=eps*ones(N,1); %eps 为 Matlab 中最小的正数
C=1; %人为地设定参数的取值范围
[a,fval,flag]=fmincon(@qfun,a0,[],[],gb',0,zeros(N,1),C*ones(N,1),[],[],X,gb)
w=X'*(a.*gb) %计算 w'*x+b=0 中的 w
b=sum(diag(a)*(X*w0-gb))/sum([a>10*eps]) %计算 w'*x+b=0 中的 b
save dwb w b
function y=qfun(a,X,gb); %定义非线性规划的目标函数
global N
y=-ones(1,N)*a+0.5*a'*diag(gb)*X*X'*diag(gb)*a;

%原始数据中的 B 替换成 1，M 替换成-1，X 替换成 2，删除了分割符*
clc,clear
load cancerdata.txt;
can=cancerdata;
can(:,1)=[]; %删除第一列病例号
gdb=find(can(:,1)==1); %读出良性肿瘤的序号
n1=length(gdb);
%计算良性肿瘤样本点的个数
bdb=find(can(:,1)==-1); %读出恶性肿瘤的序号
n2=length(bdb);
%计算恶性肿瘤样本点的个数
gd=can(gdb,2:end); %提出良性肿瘤的数据
bd=can(bdb,2:end); %提出恶性肿瘤的数据
xd=can([501:569],[2:end]); %提出待分类数据
hd=[gd;bd];
%重新排序后的训练样本
N=size(hd,1);
[email protected](x,y) (x*y'+1).^2; %定义多项式核函数的匿名函数
gb=[ones(n1,1);-ones(n2,1)]; %g_i 的取值向量
H=gb*gb'.*basefun(hd,hd); %定义二次规划目标函数的二次项系数矩阵
f=-ones(N,1); %定义二次规划目标函数的一次项系数列向量
aeq=gb';
%定义二次规划的线性等号约束矩阵
[alpha,fval,flag]=quadprog(H,f,[],[],aeq,0,zeros(N,1),ones(N,1))

1．蠓虫分类问题：生物学家试图对两种蠓虫（Af 与 Apf）进行鉴别，依据的资料

Af：(1.24,1.27)，(1.36,1.74)，(1.38,1.64)，(1.38,1.82)，(1.38,1.90)，(1.40,1.70)，
(1.48,1.82)，(1.54,1.82)，(1.56,2.08)
Apf：(1.14,1.82)，(1.18,1.96)，(1.20,1.86)，(1.26,2.00)，(1.28,2.00)，(1.30,1.96)
-778-

（i）根据如上资料，如何制定一种方法，正确地区分两类蠓虫。
（ii）对触角和翼长分别为(1.24,1.80)，(1.28,1.84)与(1.40,2.04)的 3 个标本，用所得

2．考虑下面的优化问题
n
n
i =1
i =1
min w + c1 ∑ ξ i + c2 ∑ ξ i2
2
g i (( w ⋅ xi ) + b) ≥ 1 − ξ i ， i = 1,2, L , n
ξ i ≥ 0 ， i = 1,2, L , n

s.t.
-779-
```