在之前的学习中,我们总是假设概率密度函数的参数形式已知,并在此条件下处理有监督学习过程。而在现实世界中,我们给出的概率密度函数很少符合实际情况,本节我们讨论非参数化方法(non-parametric method),它可以处理任意的概率分布而不必假设密度的参数形式已知。大体上还是遵循着贝叶斯决策论,主要有两个非参数估计的方向:
- 从训练样本中估计类条件概率密度: p ( x ∣ ω i ) p(\textbf{x}|\omega_i) p(x∣ωi)
- 直接估计后验概率: P ( ω j ∣ x ) P(\omega_j|\textbf{x}) P(ωj∣x)
一 概率密度的估计
估计类条件概率密度的最基本的一个条件就是:一个向量x落在区域
R
R
R中的概率为
P
(
x
∈
R
)
=
∫
R
p
(
x
′
)
d
x
′
P(\textbf{x} \in R)=\int_{R}p(\textbf{x}{'})d\textbf{x}'
P(x∈R)=∫Rp(x′)dx′
P
(
x
∈
R
)
P(\textbf{x} \in R)
P(x∈R)是在区域
R
R
R上
p
(
x
)
p(\textbf{x})
p(x)关于
x
x
x的导数的积分(相当于区域R内每个点的概率密度函数的积分,概率密度函数的积分就是概率函数),因此概率
P
P
P是概率密度函数
p
(
x
)
p(\textbf{x})
p(x)的平滑(或取平均)的版本,因此我们可以通过概率
P
P
P来估计概率密度函数
p
(
x
)
p(\textbf{x})
p(x)。
先假设
p
(
x
)
p(\textbf{x})
p(x)是连续的,并且区域
R
R
R足够小,以至于在这个区间中条件概率密度
p
(
x
)
p(\textbf{x})
p(x)几乎没有变化,若其中
V
R
V_R
VR表示区域
R
R
R所包含的体积(二维面积,三维代表体积)有:
P
R
=
P
(
x
∈
R
)
=
∫
R
p
(
x
′
)
d
x
′
≈
p
(
x
)
∫
R
d
x
′
=
p
(
x
)
V
R
P_R=P(\textbf{x} \in R)=\int_{R}p(\textbf{x}{'})d\textbf{x}'\approx p(\textbf{x})\int_{R}d\textbf{x}'=p(\textbf{x})V_R
PR=P(x∈R)=∫Rp(x′)dx′≈p(x)∫Rdx′=p(x)VR
假设n个样本
x
1
,
x
2
,
.
.
.
,
x
n
x_1,x_2,...,x_n
x1,x2,...,xn都是根据概率密度函数
p
(
x
)
p(\textbf{x})
p(x)独立同分布(i,i,d)
的抽取而得到的,其中有k
个样本落在
R
R
R区域中的概率服从二项式定理:
K
∼
B
(
n
,
P
R
)
,
P
(
K
=
k
)
=
(
n
k
)
P
R
k
(
1
−
P
R
)
n
−
k
E
[
K
]
=
n
P
R
K\sim B(n,P_R),\;P(K=k)=\binom{n}{k}P_R^k(1-P_R)^{n-k}\\ E[K]=nP_R
K∼B(n,PR),P(K=k)=(kn)PRk(1−PR)n−kE[K]=nPR
当样本足够大时,综合(2)式与(3)式,我们能够得到
p
(
x
)
p(\textbf{x})
p(x)的估计为:
p
(
x
)
≈
E
[
K
]
/
n
V
R
p(\textbf{x})\approx \frac{E[K]/n}{V_R}
p(x)≈VRE[K]/n
让
k
R
k_R
kR代表区域
R
R
R中样本的确切数量,有:
p
(
x
)
≈
k
R
/
n
V
R
p(\textbf{x})\approx \frac{k_R/n}{V_R}
p(x)≈VRkR/n
推导过程如下图所示:
类比利用频率直方图估计概率密度函数,理论上当我们的样本足够多,同时频率分布直方图组距设置的特别小,就是在逼近样本点的真实概率密度函数【2】:
为了估计点
x
\textbf{x}
x处的概率密度函数,构造了一系列的包含
x
\textbf{x}
x的区域
R
1
,
R
2
,
.
.
.
,
R
n
R_1,R_2,...,R_n
R1,R2,...,Rn,其中第一个区域使用一个样本,第二个区域使用2个样本…,记
V
n
V_n
Vn为区域
R
n
R_n
Rn的体积,
k
n
k_n
kn为落在
R
n
R_n
Rn中的样本的个数,而
p
n
(
x
)
p_n(\textbf{x})
pn(x)表示对
p
(
x
)
p(\textbf{x})
p(x)的第n次估计:
p
n
(
x
)
=
k
R
/
n
V
R
p_n(\textbf{x})= \frac{k_R/n}{V_R}
pn(x)=VRkR/n
要求估计的概率密度函数收敛到真实值:
l
i
m
p
n
(
x
)
n
→
∞
=
p
(
x
)
\underset{n\to\infty}{limp_n(\textbf{x})}=p(\textbf{x})
n→∞limpn(x)=p(x)
必须满足以下三个条件,以及他们分别代表的意义【3】:
- 随着样本数量的增加,体积尽可能小,类比频率分布直方图的组距尽可能小
- 在小区域 R n R_n Rn内有足够多的样本,保证频率之比能够收敛到概率
- 在小区域 R n R_n Rn内的样本数在总样本中所占的比例是很小的一部分
有两种经常采用的估计途径:
- Parzen窗:根据某一个确定的体积函数,比如 V n = 1 n V_n= \frac{1}{\sqrt{n}} Vn=n1,来逐渐收缩一个给定的初始区间。(要求 k n , k n / n k_n,k_n/n kn,kn/n能保证 p n ( x ) p_n(\textbf{x}) pn(x)能收敛到 p ( x ) p(\textbf{x}) p(x))
- K-nearest-neighbor:确定 k n k_n kn为n的某个函数,比如 k n = n k_n=\sqrt{n} kn=n,这样体积必须逐渐生长,直到最后能包进 x \textbf{x} x的 k n k_n kn个相邻点。
这两种方法最终都能收敛到真实概率,但在有限样本下效果不好
二 Parzen窗方法
2.1 原理
假设区间 R n R_n Rn是一个d维的超立方体,如果 h n h_n hn表示超立方体一条边的长度,则体积为: V n = h n d V_n=h_n^d Vn=hnd,通过定义最简单的方型窗函数,得到点 x ’ \textbf{x}’ x’是否落在落在窗中:
φ
(
x
−
x
′
h
n
)
=
{
1
∣
x
j
−
x
j
′
∣
≤
h
n
/
2
j
=
1
,
.
.
.
d
0
其
他
\varphi(\frac{\textbf{x}-\textbf{x}'}{h_n})=\left\{\begin{matrix} 1 &|x_j-x_j'|\leq h_n/2\;j=1,...d\\ 0& 其他 \end{matrix}\right.
φ(hnx−x′)={10∣xj−xj′∣≤hn/2j=1,...d其他
该窗函数定义了一个d维空间中,中心点在点
x
\textbf{x}
x的超立方体。因此
k
n
kn
kn代表超立方体中的样本个数是:
代入公式(11)得到Parzen窗概率密度函数:
**窗口函数本质上是出现在该区域 R n R_n Rn内部的采样点的加权频数,可以看做是一种平滑。**更一般的,窗函数 φ \varphi φ并不一定是超立方体定义的函数,它可以是任意形式只要保证: V n = h n d V_n=h_n^d Vn=hnd
另一个常见的高斯窗口函数如下:
高斯窗口函数,随着采样点与中心点距离的增大而减小。
当采用高斯窗口函数时, k n k_n kn是出现在该区域 R n R_n Rn内部的采样点的加权频数,每个采样点的权重取决于它们与中心 x x x的距离。
回过头来看Parzen窗估计的概率密度函数:
p
n
(
x
)
=
1
n
∑
i
=
1
n
1
V
n
φ
(
x
−
x
i
h
n
)
p_n(\textbf{x})=\frac{1}{n} \sum_{i=1}^n \frac{1}{V_n}\varphi(\frac{\textbf{x}-\textbf{x}_i}{h_n})
pn(x)=n1i=1∑nVn1φ(hnx−xi)
表示我们对
p
(
x
)
p(\textbf{x})
p(x)的估计是对一系列关于
x
\textbf{x}
x和
x
i
\textbf{x}_i
xi的函数做平均,在本质上,是每一个样本依据它离
x
\textbf{x}
x的远近不同而对结果做出不同贡献。而且在进行估计前要确定一个具体形式的
V
n
V_n
Vn函数
2.2 窗宽 h n h_n hn的影响
我们定义 δ ( x ) \delta(\textbf{x}) δ(x)如下,可以重写 p n ( x ) p_n(\textbf{x}) pn(x):
因为 V n = h n d V_n=h_n^d Vn=hnd,窗宽会显著影响 δ ( x ) \delta(\textbf{x}) δ(x)的振幅与宽度
-
如果 h n h_n hn非常大,那么 δ ( x ) \delta(\textbf{x}) δ(x)的影响就很低,即使 x \textbf{x} x距离 x i \textbf{x}_i xi很远, δ ( x − x i ) \delta(\textbf{x}-\textbf{x}_i) δ(x−xi)和 δ ( 0 ) \delta(\textbf{0}) δ(0)的差别也不大,这种情况下, p n ( x ) p_n(\textbf{x}) pn(x)是n个宽的、满变的函数的叠加,因此 p n ( x ) p_n(\textbf{x}) pn(x)非常平滑
-
如果 h n h_n hn很小, δ ( x − x i ) \delta(\textbf{x}-\textbf{x}_i) δ(x−xi)的峰值就非常大,这种情况下, p n ( x ) p_n(\textbf{x}) pn(x)是n个以样本为中心的尖脉冲的叠加,也就是一个充满噪声(不确定性)的估计
p n ( x ) p_n(x) pn(x)的收敛性: p n ( x ) p_n(x) pn(x)是样本点 x 1 , . . . x n x_1,...x_n x1,...xn(随机变量)的函数, 所以我们希望随机变量 p n ( x ) p_n(x) pn(x)的均值 p n ‾ ( x ) \overline{p_n}(x) pn(x)和方差 σ n 2 ( x ) \sigma^2_n(x) σn2(x)满足:
经过证明需要满足以下条件,证明过程可参考【4】:
这就告诉我们对于 V n V_n Vn的选择,当n趋向于正无穷时趋近于0,但必须以低于1/n的速率,因此常设定 V n = 1 / n 或 V n = 1 / ln n V_n=1/n或V_n=1/\ln n Vn=1/n或Vn=1/lnn
总结:对于窗宽 h n h_n hn(或 V n V_n Vn)的选取在很大程度上影响 p n ( x ) p_n(\textbf{x}) pn(x)。如果 V n V_n Vn太大,那么估计结果的分辨率就太低,如果 V n V_n Vn太小,那么估计结果的统计稳定性就不够。当样本有限时,尽可能的取折中的估计,然而当样本个数无限,那么就可以在n增加时,让 V n V_n Vn缓缓趋近于0,这样 p n ( x ) p_n(\textbf{x}) pn(x)就收敛到某个概率密度函数 p ( x ) p(\textbf{x}) p(x)
下面举一个例子说明窗宽对估计结果的影响:
下图是一个二维Prazen窗的两类分类器,左图是小窗宽,右图为大窗宽
三 K-Nearest Neighbor方法
在Parzen窗中,最佳的窗函数的选择总是一个问题。另一种思路是固定
k
n
k_n
kn,让体积进行变化,而不是硬性的规定窗函数为落在区域
R
n
R_n
Rn内的全体样本个数
k
n
k_n
kn的某个函数。比如我们以样本点
x
\textbf{x}
x为中心,让体积扩张,直到包含
k
n
k_n
kn个样本为止(
k
n
k_n
kn是关于n的某个特定函数)。这些样本称为点
x
\textbf{x}
x的
k
n
k_n
kn个最近邻,带入(一)中的非参数估计公式:
p
(
x
)
≈
k
R
/
n
V
R
p(\textbf{x})\approx \frac{k_R/n}{V_R}
p(x)≈VRkR/n
四 后验概率的估计
假设我们把一个体积放在点
x
\textbf{x}
x周围,并且能够包含进k个样本,其中
k
i
k_i
ki个属于类别
ω
i
\omega_i
ωi。对于联合概率密度的估计为:
p
n
(
x
,
ω
i
)
=
k
i
/
n
V
p_n(\textbf{x},\omega_i)=\frac{k_i/n}{V}
pn(x,ωi)=Vki/n
这样对后验概率的估计就是:
p
n
(
ω
i
∣
x
)
=
p
n
(
x
,
ω
i
)
∑
j
=
1
c
p
n
(
x
,
ω
j
)
=
k
i
k
p_n(\omega_i|\textbf{x})=\frac{p_n(\textbf{x},\omega_i)}{\sum_{j=1}^{c}p_n(\textbf{x},\omega_j)}=\frac{k_i}{k}
pn(ωi∣x)=∑j=1cpn(x,ωj)pn(x,ωi)=kki
这里
V
n
,
k
n
V_n,k_n
Vn,kn的值可以由Parzen窗与K近邻决定。
- Parzen窗方法中, V n V_n Vn必须是关于n的某个固定形式的函数,比如 V n = 1 / n 或 V n = 1 / ln n V_n=1/n或V_n=1/\ln n Vn=1/n或Vn=1/lnn
- Kn最近邻方法中, V n V_n Vn必须保证能够包含进足够的样本个数,比如 k n = x k_n=\sqrt{x} kn=x
如果有足够多的样本点并且体积足够小就可以证明这样处理是比较准确的。
五 最近邻规则
最近邻可以看作的k=1情况下的K近邻方法,最近邻规则描述了我们只依赖某个 x \textbf{x} x的单一的最近的邻居来做估计,也能达到足够好的性能:令 D n = { x 1 , x 2 , . . . , x n } D^n=\{\textbf{x}_1,\textbf{x}_2,...,\textbf{x}_n\} Dn={x1,x2,...,xn},每个样本已标记,对于测试样本点 x \textbf{x} x,在集合D中距离它最近的点 x ′ \textbf{x}' x′的类别为样本点 x \textbf{x} x的类别。
最近邻规则是次优的方法,通常的误差率比贝叶斯误差要高,然而在无限训练样本的情况下,这个误差率至多不会超过贝叶斯误差率的两倍。
通过最近邻规则,我们可以把样本特征空间分为一个个小的单元格(cell),每个单元格中的点到最近邻 x ′ \textbf{x}' x′的距离都比到别的样本点的距离要小。这个小单元格中的任意点的类别就与最近邻 x ′ \textbf{x}' x′的类别相同。被称为:空间Voronoi网格。
将相同类型的网格的边界相连就可以形成决策边界,最近邻的边界通常是不平滑的,我们可以通过扩大K值来去除噪音,平滑边界。
参考
【1】模式识别