我正在寻找一种算法,以生成一个直方图在大量的流数据,最大和最小是不知道提前,但标准差和平均值是在一个特定的范围。
我很欣赏你的想法。
干杯,
发布于 2011-06-18 12:48:57
我只找到了一个解决方案。秒2.2的“基于流式并行决策树算法的在线直方图构建”一文。算法是由Hive项目中的NumericHistogram类实现的:
一个通用的、可重用的直方图类,支持部分聚合。该算法是改编自以下论文的启发式算法: Yael Ben-Haim和Elad Tom-Tov,"A streaming parallel decision tree algorithm",J. Machine Learning Research 11 (2010),pp.849-872。虽然没有近似保证,但在有足够的数据和大量(例如,20-80)直方图柱的情况下,它似乎工作得很好。
发布于 2011-06-17 23:34:53
标准差和均值对于直方图来说无关紧要。只需选择您的分辨率,并在其范围内绘制一个与您的命中率一样高的标尺。当然,随着分辨率的提高,这将变得更加昂贵。您可以尝试调整分辨率,方法是尝试将现有数据拟合到正常曲线(或您喜欢的任何模型)中,并找到标准差以选择合理的粒度。
编辑:第一次读错了。如果您知道近似标准差,则可以从一开始就为直方图组选择合理的大小。只需将每个新条目与您当前的最小和最大值进行比较,并相应地调整您的范围。
发布于 2014-11-13 00:20:17
我使用一个名为"GoHistogram“的包,它提供了两个流近似直方图(NumericHistogram和加权数值直方图)。它是用Golang (https://code.google.com)实现的。链接如下:
https://stackoverflow.com/questions/6385700
复制相似问题