我正在尝试为一个相当大的数据集构建一个非参数密度函数,该数据集可以有效地评估,并且可以在添加新点时有效地更新。最多只能有 4 个自变量,但我们可以从 2 个开始。让我们使用高斯核。令结果为概率密度函数,即其体积为 1。
在每次评估中,我们可以省略所有评估点在某个椭球之外的点,该椭球对应于我们关心的最小高斯值。我们可以更改此阈值以获得准确性或性能,阈值内的最大点数将取决于所选的内核协方差矩阵。然后,我们可以使用点的子集来近似评估分布。
如果我们使用一个固定的核,那么我们可以使用我们从协方差矩阵中得到的特征值和特征向量对每个点进行变换,使得阈值椭球是一个固定的圆。然后我们可以将所有变换后的点推入一个空间索引中,并有效地找到评估点所需半径内的所有点。
但是,出于两个原因,我们希望内核是可变的。(1) 更好地拟合数据,以及 (2) 因为添加或修改点需要更新固定内核,这意味着需要重新索引整个数据集。使用可变内核,我们可以使新的/更新的点只影响最近的点。
具体来说,是否有一个空间索引可以有效地从一组大约 1000 万个不同形状和大小的椭圆中找到围绕给定点的椭圆?
不过,更一般地说,我的方法看起来合理吗?我愿意接受诸如“放弃并预先计算结果网格”之类的答案。非常感谢答案!