3.4 概率密度估计的非参数方法
最大似然估计和贝叶斯估计都属于参数估计,但有时我们无法给出密度函数的形式,这时就需要用非参数估计,直接用样本估计整个函数。
3.4.1 非参数估计的基本原理与直方图方法
要求解的问题是:已知样本集
χ
=
{
x
1
,
…
,
x
N
}
\chi = \{x_1,…,x_N\}
χ={x1,…,xN} 中的样本是从服从密度函数
p
(
x
)
p(x)
p(x) 的总体中独立抽取出来的,求
p
(
x
)
p(x)
p(x) 的估计
p
^
(
x
)
\hat p(x)
p^(x) 。
考虑在样本所在空间的某个小区域
R
R
R ,某个随机向量落入这个小区域的概率是
P
R
=
∫
R
p
(
x
)
d
x
(
3
−
55
)
P_R = \int_R p(x)dx \quad(3-55)
PR=∫Rp(x)dx(3−55)
根据二项分布,在样本集
χ
\chi
χ 中恰好有
k
k
k 个落入小区域
R
R
R 的概率是
P
k
=
C
N
k
P
R
k
(
1
−
P
R
)
N
−
k
(
3
−
56
)
P_k = C_N^kP_R^k(1-P_R)^{N-k} \quad(3-56)
Pk=CNkPRk(1−PR)N−k(3−56)
k
k
k 的期望值是
E
[
k
]
=
N
P
R
(
3
−
57
)
E[k] = NP_R \quad(3-57)
E[k]=NPR(3−57)
而且
k
k
k 的众数是
m
=
[
(
N
+
1
)
P
R
]
(
3
−
58
)
m=[(N+1)P_R] \quad(3-58)
m=[(N+1)PR](3−58)
其中
[
]
[ ]
[] 表示取整数。因此,当小区域中实际落入了
k
k
k 个样本时,
P
R
P_R
PR 的一个很好的估计是
P
^
R
=
k
N
(
3
−
59
)
\hat P_R=\dfrac{k}{N} \quad(3-59)
P^R=Nk(3−59)
当
p
(
x
)
p(x)
p(x) 连续、且小区域
R
R
R 的体积
V
V
V 足够小时,可以假定在该小区域范围内
p
(
x
)
p(x)
p(x) 是常数,则式(3-55)可近似为
P
R
=
∫
R
p
(
x
)
d
x
=
p
(
x
)
V
(
3
−
60
)
P_R = \int_R p(x)dx = p(x)V \quad(3-60)
PR=∫Rp(x)dx=p(x)V(3−60)
用式(3-59)的估计代入到式(3-60)中,可得,在小区域
R
R
R 的范围内
p
^
(
x
)
=
k
N
V
(
3
−
61
)
\hat p(x) = \dfrac{k}{NV} \quad(3-61)
p^(x)=NVk(3−61)
这就是在上面的直方图中使用的对小舱内概率密度的估计。
可以设想,小舱的选择是与估计的效果密切相连的,还与样本的分布有关。所以,小舱的选择应该与样本总数相适应,理论上,假定样本总数是
n
n
n ,小舱的体积为
V
n
V_n
Vn ,在
X
X
X 附近位置上落入小舱的样本个数是
k
n
k_n
kn ,那么当样本趋于无穷多时
p
^
(
x
)
\hat p(x)
p^(x) 收敛于
p
(
x
)
p(x)
p(x)的条件是
lim
n
→
∞
V
n
=
0
,
lim
n
→
∞
k
n
=
∞
,
lim
n
→
∞
k
n
n
=
0
(
3
−
62
)
\lim\limits_{n\rarr\infin}V_n = 0,\quad \lim\limits_{n\rarr\infin}k_n = \infin ,\lim\limits_{n\rarr\infin}\dfrac{k_n}{n} = 0 \quad(3-62)
n→∞limVn=0,n→∞limkn=∞,n→∞limnkn=0(3−62)
做法:
- 把样本 x x x 的每个分量在其取值范围内分成 k k k 个等间隔的小窗。如果 x x x 是 d d d 维向量,则这种分割就会得到 k d k^d kd 个小体积或者称作小舱,每个小舱的体积计作 V V V 。
- 统计落入每个小舱内的样本数目 q i q_i qi 。
- 把每个小舱内的概率密度看作是常数,并用 q i N V \dfrac{q_i}{NV} NVqi 作为其估计值,其中 N N N 为样本总数。
3.4.2 k N k_N kN 近邻估计方法
k
N
k_N
kN 近邻估计就是一种采用可变大小的小舱的密度估计方法,即调整小舱的体积,使小舱内恰好落入
k
N
k_N
kN 个样本,并用式(3-60)来估计
p
^
(
x
)
\hat p(x)
p^(x) ,
p
^
(
x
)
=
k
N
N
V
(
3
−
63
)
\hat p(x) = \dfrac{k_N}{NV} \quad(3-63)
p^(x)=NVkN(3−63)
这样,在样本密度比较高的区域小舱的体积就会比较小,而在密度低的区域则小舱体积自动增大。为了取得好的估计效果,仍然需要根据式(3-62)来选择
k
N
k_N
kN 与
N
N
N 的关系,比如可以选取为
k
N
∼
k
N
k_N\sim k\sqrt N
kN∼kN ,
k
k
k 为某个常数。
3.4.3 Parzen 窗法
Parzen 窗法与直方图很相似,但可以通过使用合适的核函数,使得估计的概率密度具有光滑连续的特点。
举例:
sample 1 2 3 4 5 6 value -2.1 -1.3 -0.4 1.9 5.1 6.2 左侧的直方图,横坐标被分割成不同的小区域,每个小区域的宽度为2,小区域的高度为 1/12 ,如果有多个点落在同一个区域中,将高度进行累加。
右侧的核密度估计,则在每个数据点的位置放置了一个方差为2.25的法向核函数(用红色虚线表示),并且同直方图一样对高度进行累加。
根据式(3-61) p ^ ( x ) = k N V \hat p(x) = \dfrac{k}{NV} p^(x)=NVk 。在固定小区域体积的前提下将其进行变换
p ^ ( x ) = 1 N V ∑ i = 1 N { 1 x − h ⩽ x i ⩽ x + h 0 e l s e = 1 N V ∑ i = 1 N { 1 − 1 ⩽ x i − x h ⩽ 1 0 e l s e = 1 N V ∑ i = 1 N φ ( x − x i h ) \hat p(x) = \dfrac{1}{NV} \sum \limits_{i=1}^N \begin{cases} 1&x-h\leqslant x_i\leqslant x+h \\ 0&else\end{cases} \newline =\dfrac{1}{NV} \sum \limits_{i=1}^N \begin{cases} 1&-1\leqslant \dfrac{x_i-x}{h}\leqslant 1 \\ 0&else\end{cases} \newline =\dfrac{1}{NV} \sum \limits_{i=1}^N \varphi(\dfrac{x-x_i}{h}) p^(x)=NV1i=1∑N{10x−h⩽xi⩽x+helse=NV1i=1∑N⎩ ⎨ ⎧10−1⩽hxi−x⩽1else=NV1i=1∑Nφ(hx−xi)
这样得到的 1 V φ ( x − x i h ) \dfrac1 V \varphi(\dfrac{x-x_i}{h}) V1φ(hx−xi) 就是一个核函数(方窗)
假设
x
∈
R
d
x \in R^d
x∈Rd 是
d
d
d 维特征向量,并假设每个小舱是一个超立方体,它在每一维的棱长都为
h
h
h ,则小舱的体积是
V
=
h
d
(
3
−
64
)
V = h^d \quad(3-64)
V=hd(3−64)
要计算每个小舱内落入的样本数目,可以定义如下的
d
d
d 维单位方窗函数
φ
(
[
u
1
,
u
2
,
…
,
u
d
]
T
)
=
{
1
∣
u
j
∣
⩽
1
2
,
j
=
1
,
2
,
…
,
d
0
e
l
s
e
(
3
−
65
)
\varphi ([u_1,u_2,…,u_d]^T) = \begin{cases} 1 & |u_j|\leqslant\dfrac1 2 ,j = 1,2,…,d \\ 0 & else\end{cases} \quad(3-65)
φ([u1,u2,…,ud]T)=⎩
⎨
⎧10∣uj∣⩽21,j=1,2,…,delse(3−65)
这个函数在以原点为中心的
d
d
d 维单位超正方体内取值为1,而其他地方取值都为0。对于每一个
x
x
x ,要考查某个样本
x
i
x_i
xi 是否在这个
x
x
x 为中心、
h
h
h 为棱长的小立方小舱内,就可以通过计算
φ
(
x
−
x
i
h
)
\varphi(\dfrac{x-x_i}{h})
φ(hx−xi) 来进行。现共有
N
N
N 个观测样本
{
x
1
,
x
2
,
…
,
x
N
}
\{x_1,x_2,…,x_N\}
{x1,x2,…,xN} ,那么落入以
x
x
x 为中心的超立方体内的样本数就可以写成
k
N
=
∑
i
=
1
N
φ
(
x
−
x
i
h
)
(
3
−
66
)
k_N = \sum\limits_{i=1}^N \varphi(\dfrac{x-x_i}{h}) \quad(3-66)
kN=i=1∑Nφ(hx−xi)(3−66)
代入(3-61)可以得到对于任意一点
x
x
x 的密度估计的表达式
p
^
(
x
)
=
1
N
V
∑
i
=
1
N
φ
(
x
−
x
i
h
)
(
3
−
67
)
\hat p(x) = \dfrac{1}{NV} \sum\limits_{i=1}^N \varphi(\dfrac{x-x_i}{h}) \quad(3-67)
p^(x)=NV1i=1∑Nφ(hx−xi)(3−67)
核函数要求:
因为要估计的概率密度函数积分为1。
∫
R
p
^
(
x
)
d
x
=
1
∫
R
1
N
V
∑
i
=
1
N
φ
(
x
−
x
i
h
)
=
1
1
N
∑
i
=
1
N
∫
−
∞
+
∞
1
V
φ
(
x
−
x
i
h
)
d
x
=
1
\int\limits_R \hat p(x)dx = 1 \newline \int\limits_R\dfrac{1}{NV} \sum\limits_{i=1}^N \varphi(\dfrac{x-x_i} {h}) = 1 \newline \dfrac{1}{N} \sum\limits_{i=1}^N \int_{-\infin}^{+\infin} \dfrac1 V \varphi(\dfrac{x-x_i}{h})dx = 1 \newline
R∫p^(x)dx=1R∫NV1i=1∑Nφ(hx−xi)=1N1i=1∑N∫−∞+∞V1φ(hx−xi)dx=1
令
t
=
x
−
x
i
h
t=\dfrac{x-x_i}{h}
t=hx−xi 则,
1
N
∑
i
=
1
N
∫
−
∞
+
∞
1
V
φ
(
t
)
d
t
=
1
\dfrac{1}{N} \sum\limits_{i=1}^N \int_{-\infin}^{+\infin} \dfrac1 V \varphi(t)dt = 1
N1i=1∑N∫−∞+∞V1φ(t)dt=1
因此核函数
∫
K
(
x
,
x
i
)
d
x
=
1
且
K
(
x
,
x
i
)
⩾
0
(
3
−
71
)
\int K(x,x_i)dx = 1 且 K(x,x_i) \geqslant 0 \quad(3-71)
∫K(x,xi)dx=1且K(x,xi)⩾0(3−71)
常见核函数:
- 方窗
k ( x , x i ) = { 1 h d ∣ x J − x i j ∣ ⩽ h 2 , j = 1 , 2 , … , d 0 e l s e ( 3 − 72 ) k(x,x_i) = \begin{cases} \dfrac{1}{h^d}&|x^J-x_i^j|\leqslant\dfrac h 2,j=1,2,…,d \\ 0&else \end{cases} \quad(3-72) k(x,xi)=⎩ ⎨ ⎧hd10∣xJ−xij∣⩽2h,j=1,2,…,delse(3−72) - 高斯窗(正态窗)
k ( x , x i ) = 1 ( 2 π ) d ρ 2 d ∣ Q ∣ exp [ − 1 2 ( x − x i ) T Q − 1 ( x − x i ) ρ 2 ] ( 3 − 73 ) k(x,x_i)=\dfrac1 {\sqrt{(2\pi)^d\rho^{2d}|Q|}}\exp[-\dfrac1 2 \dfrac{(x-x_i)^TQ^{-1}(x-x_i)}{\rho^2}] \quad(3-73) k(x,xi)=(2π)dρ2d∣Q∣1exp[−21ρ2(x−xi)TQ−1(x−xi)](3−73) - 超球窗
k ( x , x i ) = { V − 1 ∣ ∣ x − x i ∣ ∣ ⩽ ρ 0 e l s e k(x,x_i) = \begin{cases} V^{-1}&||x-x_i||\leqslant\rho \\ 0&else \end{cases} k(x,xi)={V−10∣∣x−xi∣∣⩽ρelse
非参数法的共同问题是对样本数目需求较大。
参考
张学工. 模式识别. 第三版. 北京:清华大学出版社,2010
张学工,汪小我. 模式识别与机器学习. 第四版. 北京:清华大学出版社,2021
部分图片来源于网络