Epanechnikov多变量密度

时间:2013-06-18 19:17:13

标签: estimation kernel-density

我的数据由大小为1x5的向量组成,每个向量代表一个pikel:[x,y,r,g,b]xy是位置:0 <= x <= M,{{1} }。 0 <= y <= N是像素的颜色:r,g,b

我想使用多变量Epanechnikov核估计密度估计。我读到基本上有两种方法可以做到:

  1. 乘法方法 - 计算每个维度的内核,然后将它们相乘。
  2. 计算向量的范数并计算该值的内核。
  3. 这两种方法中的每种方法究竟如何处理我的数据?知道Epanechnikov内核为标准化值0 <= r,g,b <= 255> 1得出0,我需要进行标准化。

    我用C ++编程。

1 个答案:

答案 0 :(得分:2)

  
      
  1. 乘法方法 - 计算每个维度的内核,然后将它们相乘。
  2.   
  3. 计算向量的范数并计算该值的内核。
  4.   
  1. 假设您的x变量和y是statistically independent,但不适用于2.另一方面,2。是径向对称的内核。
  2.   

    这两种方法中的每种方法究竟如何处理我的数据?

    我会尝试两者并看看哪一个给出了更好的结果(例如哪一个给出了数据的更好的可能性,但注意不要过度拟合数据,例如通过使用cross validation)。

    在最基本的形式中,这意味着您拆分样本,使用一个部分来计算密度估计函数(即将核心置于数据点周围)并评估另一部分的可能性(密度估计值的乘积)在用于测试的点处起作用或更好地记录概率乘积的对数)并查看哪一个在“其他”样本上给出了更高概率的乘积(未用于计算估计的那个)。

    相同的参数(交叉验证)也适用于内核宽度的选择('缩放因子',使内核变窄或变宽)。

    您当然可以手动选择内核宽度来开始。选择内核宽度太小会产生“尖峰”密度估计,选择太大会“清除”数据的重要特征。

      

    我知道Epanechnikov内核的归一化值为0时,我需要进行标准化操作&gt; 1或者&lt; -1

    您提到的功能与规范化无关。您应该为内核本身使用规范化表达式,即内核为非零的范围内的积分应为1。对于你的情况1.,如果1D内核被标准化(例如3/4*(1-u^2)上的[-1..1]就是这种情况,那么2D产品也将被标准化。对于情况2.必须计算2D积分。

    假设内核已标准化,那么您可以按如下方式对密度估计进行标准化:

    normalization formula

    其中N是数据点的数量。这将被归一化,即p(x,y)在2D平面上的积分为1。


    请注意,您提到的这两种功能形式都不允许任意covariance matrices。解决此问题的一种方法是首先“去相关”数据集(即应用矩阵变换,使数据集的协方差矩阵成为单位矩阵),然后执行密度估计,然后应用逆变换。

    此外还有adaptive kernel density estimation等扩展程序,其中内核的宽度随xy的变化而变化,如果在某些时候您想要优化估算等。