非参数估计

(本文仅用于个人学习,大部分来源于上课ppt)

非参数估计能处理任意的概率分布,而无需假设密度函数,主要的方法有直方图估计,K-NN,parzen窗估计。非参数估计的主要思想是,向量落入一个区域R的概率P为

其中直方图估计是最简单的一种:

1. 把x的每个分量分成k 个等间隔小窗,( x∈Ed ,则形成kd 个小舱)

2. 统计落入各个小舱内的样本数qi

3. 相应小舱的概率密度为: qi /(NV )( N :样本 总数,V :小舱体积)

原理:

假设N个样本的集合X={x1,x2,x3,x4...}是根据概率密度P(x)的分布独立抽取到的,那么K个样本落入区域R的概率服从二项分布:

K的期望值是E(k) = NP 对P的估计

N趋于∞大时,非常准确

假设p(x)是连续的,且R足够小使得p(x)在R内几乎没有变化。令R是包含样本点x的一个区域,其体积为V,设有N个训练样本,其中有k落在区域R中,则可对概率密度作出一个估计:




要求估计的概率密度函数收敛到真实值

必须满足



1.随着样本数的增加,小舱体积应该尽可能小,

2.同时又能保证小舱内有充分多的样本,

3.但每个小舱内的样本数又必须是总样本数中很小的一部分


Parzen窗估计

首先需要选择窗函数,Parzen窗估计过程是一个内插过程,样本xi距离x越近,对概率密度估计的贡献越大,越远贡献越小。

只要满足如下条件,就可以作为窗函数:



方窗函数:

正太分布窗函数:

指数窗函数:

其中

Parzen估计的性能与窗宽参数hn紧密相关当hn较大时,x和中心xi距离大小的影响程度变弱,估计的p(x)较为平滑,分辨率较差。当hn较小时,x和中心xi距离大小的影响程度变强,估计的p(x)较为尖锐,分辨率较好。

Parzen窗密度估计的渐近收敛性:

 渐进无偏性:

一致性:

简单的例子:对于一个二类( ω1 ,ω2 )识别问题,随机抽取ω1类的6个样本X=(x1,x2,…. x6) ω1=(x1,x2,…. x6) =(x1=3.2,x2=3.6,x3=3,x4=6,x5=2.5,x6=1.1) 估计P(x|ω1)即PN(x):

 选择正太分布窗函数



因为样本时一维的



简单的代码实现:



import numpy as np

import matplotlib.pyplot as plt

from pandas import Series

data = np.sort(np.array( [3.2,3.6,3,6,2.5,1.1]))

hi = 0.5/np.sqrt(6)

N = 6

hn = hi/np.sqrt(N)

Vn = hn

a = np.zeros(6)

i = 0

for x in data:

    k = 0

    for xi in data:

        k = (1/np.sqrt(2*np.pi))*np.exp(-0.5*(np.square(np.abs(x-xi)/hn)))+k

    a[i] = k/(Vn*N)

    i = i+1

obj = Series(a,index=data)

obj.plot()

plt.show()





由图看出,每个样本对估计的贡献与样本间的距离有关,样本越多,PN(x)越准确。

你可能感兴趣的:(非参数估计)