有没有一种快速的方法来计算高维大型数据集的直方图?

计算科学 算法 统计数据 可视化 数据管理
2021-11-24 15:03:57

目前我计算数据直方图的方式是在N尺寸(其中N是数据的维度)并通过搜索M每个维度中的数据点,以查看每个维度适合哪个 bin。

这与穷举搜索相同,并且需要很长时间,如果NM很大(在我的情况下N=6,M=125,000)。

我的问题是:在给定网格和数据的情况下,是否有更快的方法来准确计算(或可能估计)每个 bin 中的样本数量?

或者,如果无法估计/计算直方图,是否有另一种方法可以快速构建高维大型数据集的分布?我使用过内核密度估计器,但它们对您使用的内核类型很敏感,并且依赖于对数据性质的先验知识以获得良好的结果。(我对数据的性质一无所知。)

2个回答

直方图对高维数据没有用处。维度的诅咒影响一个相当快的。与您的情况一样,如果网格的大小为 7**6,则您平均在一个 bin 中有一个点。只要您保持足够大的内核带宽,内核密度估计器就更适合。根据我的经验,如果采样足够,作为 k 最近邻的顶帽内核会产生合理的结果,直到 D=10。还有一个非常有效的算法来计算更高维度的k 最近邻,我可以推荐。

此外,内核形状并不那么重要,因为由于缺乏数据,您需要保持足够大的带宽。如果您看到对内核形状的依赖,您的带宽可能太小了。有几个经验法则如何选择带宽。

如果您根据概率密度计算其他一些属性,那么在几乎所有情况下,您最好根本不计算密度。

编辑以正确评论评论

如果您检查每个箱的统计误差,恐怕您无法用直方图捕捉高维数据的细微差别。继续做一些简单的随机数实验,用你的样本量检查每个箱的波动。除非您使用像 2**6 这样非常小的网格尺寸,否则一开始是没有意义的,否则您只会将噪声视为细微差别。

为了计算熵 == Jensen Shannon 散度,我推荐以下我在博士论文中使用的论文。

文章 (Hnizdo2007) Hnizdo, V.;达里安,E。费多罗维茨,A.;德姆丘克,E.;Li, S. & Singh, H. 用于估计复杂分子构型熵的最近邻非参数方法。计算化学杂志, J Comput Chem, 2007, 28, 655

文章 (Hnizdo2008) Hnizdo, V.;谭,J。Killian, B. & Gilson, M. 通过结合互信息扩展和最近邻方法从分子模拟中高效计算构型熵 计算化学杂志,NIH 公共访问,2008, 29, 1605

我不知道推土机的距离,但以前从未使用过。看起来您需要将两个分布组合在一起的相空间转换工作。在我看来,这类似于分布给出的两个系统之间的自由能差异。

我对此没有严格的证据,但我们已经通过基于随机抽样的方法解决了这个问题。或者数据类似于4096×12000×1000×6×3×2×4. 提示:(X、Y、Z、stack#、RGB、状态、样本)

基本上,我们弄清楚我们想要为哪两个类别做差分直方图,然后在剩余的轴上使用均匀采样来选择随机点。一个确切的答案显然需要考虑所有的点,但是对于我们的数据集,考虑 1-3% 的人得到的答案是,谁的 PDF 是完整数据集的 >0.95 正确(1 - RMSE)。

注意:这个答案显然也取决于基础分布。例如,如果每个样本在所有 IEEE 754 浮点 64 空间上均匀分布,那么这种方法将失败。因此,这种方法的准确性实际上取决于底层 PDF。

正如@bort 在上面的回答中提到的那样,您数据集的熵将直接衡量直方图的准确性,该直方图有选择地采样,因为它毕竟是对给定的总信息内容或容量的直接衡量样本来代表整体。