Parzen Window and Likelihood

Kernel density estimation via the Parzen-Rosenblatt window method

Generative Adversarial Nets code

Nice explanation

对Ian提到的采用Gassian Parzen Window 去拟合G产生的样本并估计对数似然性(即给予观察样本,判断模型正确的可能性)如何实现的原理很感兴趣?
于是找到源代码parzen_ll.py来看,
但是苦于并没有学过theano及pylearn2所以看起来不是明白,本来想尝试安装py2learn来测试,结果看了官网的安装要求,请卸载python,清除所有组件。这个代价有点大
,毕竟我是要做Tensorflow的。因此只能破罐破摔来,硬着头皮看代码,有些东西只能靠google,看了一个大概。首先来说一下Parzen Window

2 Defining the Region Rn

Parzen windown 是一种应用广泛的非参数估计方法,从采样的样本 p(xn) p ( x n ) 中估计概率密度函数 p(x) p ( x )
这种方法最基本的思想是给定一个特定的区域(Window)对落入其中的样本进行计数,可以得到样本落入该区域的概率大约为:

p(x)=knn p ( x ) = k n n

从数学的角度来求取在区域R里k个观察样本的概率,我们可以考虑一个Binomial(二项式分布):

pk=[nk]pk(1p)nk p k = [ n k ] ⋅ p k ⋅ ( 1 − p ) n − k

然后在二项式分布假设的情况下, 所以我们可以求得其均值为:

E[k]=np E [ k ] = n ⋅ p

在连续性假设条件下:

p(x)=Rf(x)dx=f(x)V p ( x ) = ∫ R f ( x ) d x = f ( x ) ⋅ V

其中v为区域R的体积,我们可以对公式进行变形,可以得到:

f(x)=p(x)V=k/nV f ( x ) = p ( x ) V = k / n V

上面简单的公式可以让计算给定点 x x 的概率密度,通过计算有多少点落入确定性区域。

确定区域的两种不同的方法

一种方法是固定体积(volume)如下图,原理是取一个固定大小的区域R,观察有多少样本落入其中。

这里写图片描述
另外一种方法是样本数目K固定;k近邻算法就是这个原理,即是,对于一定大小的样本总数,我们取能框住k个样本的区域R
这里写图片描述

3D- hypercubes

这里写图片描述

The window function

如上面所示,我们可以可视化区域 R ,也就很容易计算出多少点在区域内,数学表达上是:

ϕ(u)=[10|uj|1/2;j=1,2,...,d
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值