势函数法
假设要划分属于两种类别
ω
1
,
ω
2
\omega_1,\omega_2
ω1,ω2的模式样本,这些样本可以看做是分布在
n
n
n维模式空间中的点
x
k
x_k
xk,把属于
ω
1
\omega_1
ω1的点比拟为某种能源点,在点上,电位达到峰值,随着与该点距离的增大,电位分布迅速减小,即把样本
x
k
x_k
xk附近空间
x
x
x点上的电位分布看做一个实函数
K
(
x
,
x
k
)
K(x,x_k)
K(x,xk),,对于属于
ω
1
\omega_1
ω1的样本集群,其附近空间会形成一个高地,这些样本点所处的位置就是山头,同理,用电位的几何分布来看待属于
ω
2
\omega_2
ω2的样本,在其附近空间就形成一个凹地,只要在两类电位分布之间选择合适的等高线,就可以认为是模式分类的判别函数
模式分类的判别函数可由分布在模式空间中的许多样本向量
{
x
k
,
k
=
1
,
2
,
⋯
,
x
k
∈
(
ω
1
⋃
ω
2
)
}
\{x_k,k = 1,2,\cdots,x_k \in (\omega_1 \bigcup \omega_2)\}
{xk,k=1,2,⋯,xk∈(ω1⋃ω2)}的势函数产生,任意一个样本所产生的势函数以
K
(
x
,
x
k
)
K(x,x_k)
K(x,xk)表征,则判别函数
d
(
x
)
d(x)
d(x)可由势函数序列
K
(
x
,
x
1
)
,
K
(
x
,
x
2
)
,
⋯
K(x,x_1),K(x,x_2),\cdots
K(x,x1),K(x,x2),⋯来构成,序列中的这些实函数相应于在训练过程中输入机器的训练模式样本
x
1
,
x
2
,
⋯
x_1,x_2,\cdots
x1,x2,⋯,在训练状态,模式样本逐个输入分类器,分类器就连续计算相应的势函数,在第
k
k
k步迭代时的积累位势决定于在该步前所有的单独实函数的累加,以
K
(
x
)
K(x)
K(x)表示积累位势函数,若加入的训练样本
x
k
+
1
x_{k + 1}
xk+1是错误分类,则积累函数需要修改,若是正确分类,则不变
判别函数的产生
设初始势函数
K
0
(
x
)
=
0
K_0(x) = 0
K0(x)=0
第一步:加入第一个训练样本
x
1
x^1
x1,则有:
K
1
(
x
)
=
{
K
(
x
,
x
1
)
x
1
∈
ω
1
−
K
(
x
,
x
1
)
x
1
∈
ω
2
K_1(x) = \begin{cases} K(x,x^1) & x^1 \in \omega_1 \\ -K(x,x^1) & x^1 \in \omega_2 \end{cases}
K1(x)={K(x,x1)−K(x,x1)x1∈ω1x1∈ω2
这里第一步积累势函数
K
1
(
x
)
K_1(x)
K1(x)描述了加入第一个样本时的边界划分,当样本属于
w
1
w_1
w1时,势函数为正,否则为负
第二步:加入第二个训练样本
x
2
x^2
x2,则有
- 若 x 2 ∈ w 1 x^2 \in w_1 x2∈w1且 K 1 ( x 2 ) > 0 K_1(x^2) > 0 K1(x2)>0,或 x 2 ∈ w 2 x^2 \in w_2 x2∈w2且 K 1 ( x 2 ) < 0 K_1(x^2) < 0 K1(x2)<0则分类正确,此时 K 2 ( x ) = K 1 ( x ) K_2(x) = K_1(x) K2(x)=K1(x)即累积势函数不变
- 若
x
2
∈
w
1
x^2 \in w_1
x2∈w1且
K
1
(
x
2
)
<
0
K_1(x^2) < 0
K1(x2)<0,则
K 2 ( x ) = K 1 ( x ) + K ( x , x 2 ) = ± K ( x , x 1 ) + K ( x , x 2 ) K_2(x) = K_1(x) + K(x,x^2) = \pm K(x,x^1) + K(x,x^2) K2(x)=K1(x)+K(x,x2)=±K(x,x1)+K(x,x2) - 若
x
2
∈
w
2
x^2 \in w_2
x2∈w2且
K
1
(
x
2
)
>
0
K_1(x^2) > 0
K1(x2)>0,则
K 2 ( x ) = K 1 ( x ) − K ( x , x 2 ) = ± K ( x , x 1 ) − K ( x , x 2 ) K_2(x) = K_1(x) - K(x,x^2) = \pm K(x,x^1) - K(x,x^2) K2(x)=K1(x)−K(x,x2)=±K(x,x1)−K(x,x2)
第 K K K步:设 K k ( x ) K_k(x) Kk(x)为加入训练样本 x 1 , x 2 , ⋯ , x k x^1,x^2,\cdots,x^k x1,x2,⋯,xk后的积累位势,则加入第 k + 1 k + 1 k+1个样本时, K k + 1 ( x ) K_{k + 1}(x) Kk+1(x)决定如下: - 若 x k + 1 ∈ w 1 x^{k + 1} \in w_1 xk+1∈w1且 K k ( x k + 1 ) > 0 K_k(x^{k + 1}) > 0 Kk(xk+1)>0,或 x k + 1 ∈ w 2 x^{k + 1} \in w_2 xk+1∈w2且 K k ( x k + 1 ) < 0 K_k(x^{k + 1}) < 0 Kk(xk+1)<0则分类正确,此时 K k + 1 ( x ) = K k ( x ) K_{k + 1}(x) = K_k(x) Kk+1(x)=Kk(x)即累积势函数不变
- 若
x
k
+
1
∈
w
1
x^{k + 1} \in w_1
xk+1∈w1且
K
k
(
x
k
+
1
)
<
0
K_k(x^{k + 1}) < 0
Kk(xk+1)<0,则
K k + 1 ( x ) = K k ( x ) + K ( x , x k + 1 ) K_{k + 1}(x) = K_k(x) + K(x,x^{k + 1}) Kk+1(x)=Kk(x)+K(x,xk+1) - 若
x
k
+
1
∈
w
2
x^{k + 1} \in w_2
xk+1∈w2且
K
k
(
x
k
+
1
)
>
0
K_k(x^{k + 1}) > 0
Kk(xk+1)>0,则
K k + 1 ( x ) = K k ( x ) − K ( x , x k + 1 ) K_{k + 1}(x) = K_k(x) - K(x,x^{k + 1}) Kk+1(x)=Kk(x)−K(x,xk+1)
因此积累位势的迭代运算可写成 K k + 1 ( x ) = K k ( x ) + r k + 1 K ( x , x k + 1 ) K_{k + 1}(x) = K_k(x) + r_{k + 1}K(x,x^{k + 1}) Kk+1(x)=Kk(x)+rk+1K(x,xk+1),其中 r k + 1 r_{k + 1} rk+1为校正系数:
r k + 1 = { 0 x k + 1 ∈ w 1 , K k ( x k + 1 ) > 0 0 x k + 1 ∈ w 2 , K k ( x k + 1 ) < 0 1 x k + 1 ∈ w 1 , K k ( x k + 1 ) < 0 − 1 x k + 1 ∈ w 2 , K k ( x k + 1 ) > 0 r_{k + 1} = \begin{cases} 0 & x^{k + 1} \in w_1,K_k(x^{k + 1}) > 0 \\ 0 & x^{k + 1} \in w_2,K_k(x^{k + 1}) < 0 \\ 1 & x^{k + 1} \in w_1,K_k(x^{k + 1}) < 0 \\ -1 & x^{k + 1} \in w_2,K_k(x^{k + 1}) > 0 \end{cases} rk+1=⎩ ⎨ ⎧001−1xk+1∈w1,Kk(xk+1)>0xk+1∈w2,Kk(xk+1)<0xk+1∈w1,Kk(xk+1)<0xk+1∈w2,Kk(xk+1)>0
若从给定的训练样本集 { x 1 , x 2 , ⋯ , x k , ⋯ } \{x^1,x^2,\cdots,x^k,\cdots\} {x1,x2,⋯,xk,⋯}中去除不使积累位势发生变化的样本,即使 K j ( x j + 1 ) > 0 K_j(x^{j + 1}) > 0 Kj(xj+1)>0且 x j + 1 ∈ w 1 x^{j + 1} \in w_1 xj+1∈w1或 K j ( x j + 1 ) < 0 K_j(x^{j + 1}) < 0 Kj(xj+1)<0且 x j + 1 ∈ w 2 x^{j + 1} \in w_2 xj+1∈w2的那些样本,可得到一简化的样本序列 { x ^ 1 , x ^ 2 , ⋯ , x ^ j , ⋯ , } \{\hat{x}^1,\hat x^2,\cdots,\hat x^j,\cdots,\} {x^1,x^2,⋯,x^j,⋯,},他们完全是校正错误的样本,此时上述迭代公式可归纳为:
K k + 1 ( x ) = ∑ x ^ j a j K ( x , x ^ j ) K_{k + 1}(x) = \sum_{\hat x_j}a_jK(x,\hat x^j) Kk+1(x)=x^j∑ajK(x,x^j)
其中:
a j = { 1 x ^ j ∈ w 1 − 1 x ^ j ∈ w 2 a_j = \begin{cases} 1 & \hat x^j \in w_1 \\ -1 & \hat x^j \in w_2 \end{cases} aj={1−1x^j∈w1x^j∈w2
也就是说由 k = 1 k = 1 k=1个训练样本产生的积累位势,等于 w 1 , w 2 w_1,w_2 w1,w2类中的校正错误样本的总位势之差
势函数的选择
选择势函数的条件:一般来说,若两个 n n n维向量 x , x k x,x_k x,xk的函数同时满足下面三个条件,则可作为势函数:
- K ( x , x k ) = K ( x k , x ) K(x,x_k) = K(x_k,x) K(x,xk)=K(xk,x)并且当且仅当 x = x k x = x_k x=xk时达到最大值
- 当向量 x x x与 x k x_k xk的距离趋向于无穷时, K ( x , x k ) K(x,x_k) K(x,xk)趋向0
- K ( x , x k ) K(x,x_k) K(x,xk)是光滑函数,且是 x x x与 x k x_k xk之间距离的单调下降函数
下面是构成势函数的两种方式
- 第一类势函数:可用对称的有限多项式展开,即:
K ( x , x k ) = ∑ i = 1 m φ i ( x ) φ i ( x k ) K(x,x^k) = \sum_{i = 1}^m\varphi_i(x)\varphi_i(x^k) K(x,xk)=i=1∑mφi(x)φi(xk)
其中 { φ i ( x ) } \{\varphi_i(x)\} {φi(x)}在模式定义域内为正交函数集,将这类势函数代入判别函数,有:
d k + 1 ( x ) = d k ( x ) + r k + 1 ∑ i = 1 m φ i ( x k + 1 ) φ i ( x ) = d k ( x ) + ∑ i = 1 m r k + 1 φ i ( x k + 1 ) φ i ( x ) \begin{aligned} d_{k + 1}(x) &= d_k(x) + r_{k + 1}\sum_{i = 1}^m\varphi_i(x^{k + 1})\varphi_i(x) \\ &= d_k(x) + \sum_{i = 1}^mr_{k + 1}\varphi_i(x^{k + 1})\varphi_i(x) \end{aligned} dk+1(x)=dk(x)+rk+1i=1∑mφi(xk+1)φi(x)=dk(x)+i=1∑mrk+1φi(xk+1)φi(x)
得迭代关系:
d k + 1 ( x ) = ∑ i = 1 m C i ( k + 1 ) φ i ( x ) d_{k + 1}(x) = \sum_{i = 1}^mC_i(k + 1) \varphi_i(x) dk+1(x)=i=1∑mCi(k+1)φi(x)
其中
C i ( k + 1 ) = C i ( k ) + r k + 1 φ i ( x k + 1 ) C_i(k + 1) = C_i(k) + r_{k + 1}\varphi_i(x^{k + 1}) Ci(k+1)=Ci(k)+rk+1φi(xk+1)
因此,积累位势可写成:
K k + 1 ( x ) = ∑ i = 1 m C i ( k + 1 ) φ i ( x ) , K_{k + 1}(x) = \sum_{i= 1}^mC_i(k+ 1)\varphi_i(x), Kk+1(x)=i=1∑mCi(k+1)φi(x), - 第二类势函数:选择双变量
x
,
x
k
x,x^k
x,xk的对称函数作为势函数,即
K
(
x
,
x
k
)
=
K
(
x
k
,
x
)
K(x,x^k) = K(x^k,x)
K(x,xk)=K(xk,x),并且它可展开成无穷级数,例如:
K ( x , x k ) = e − a ∣ ∣ x − x k ∣ ∣ 2 K ( x , x k ) = 1 1 + α ∣ ∣ x − x k ∣ ∣ 2 K ( x , x k ) = sin α ∣ ∣ x − x k ∣ ∣ 2 α ∣ ∣ x − x k ∣ ∣ 2 \begin{aligned} K(x,x^k) &= e^{-a||x - x^k||^2} \\ K(x,x^k) &= \frac{1}{1 + \alpha||x - x^k||^2} \\ K(x,x^k) &= \frac{\sin\alpha||x - x^k||^2}{\alpha||x - x^k||^2} \end{aligned} K(x,xk)K(x,xk)K(x,xk)=e−a∣∣x−xk∣∣2=1+α∣∣x−xk∣∣21=α∣∣x−xk∣∣2sinα∣∣x−xk∣∣2
决策树
决策树对应于对特征空间的一个划分,它把特征空间分成若干个区域,在每个区域中,某类的样本占优势,二叉树结构分类器可以把一个复杂的多类别分类问题转化为多级多个两类问题来解决,在每个非终止节点都把样本集分成左右两个子集,分成的每一部分任然可能包含多个类别的样本,可以把每一部分再分成两个子集,如此下去,直至分成的每一部分只包含同一类别的样本,或某一类样本占优势为止