现在每个人都关心保护用户隐私和他们的数据。能够对数据进行统计分析,而不必实际保持数据样本的时间超过必要时间,这是朝着正确方向迈出的坚定一步。
boost库中的累加器的概念看起来非常适合于实现它。
累加器框架是执行增量计算的框架。该框架的使用遵循以下模式: 用户每次将数据推送到
accumulator_set<>对象中一个示例。accumulator_set<>以最有效的方法计算所请求的数量,解决请求计算之间的依赖关系,可能缓存中间结果。
只有一个大问题。我不知道如何序列化累加器实例,这样我就可以持久化它,而无需在应用程序启动之间保留示例数据。
如何创建实例和,恢复应用新示例所需的所有必要参数,继续其增量计算()?我不想从头开始,也不想保留以前的样本。
发布于 2015-08-29 23:52:45
我认为您误解了accumulator_set内部的工作方式。
它不保存样本。实际上,如果您只是参数化了'min‘和'max’状态的设置,那么唯一要保持的状态是结果类型的2个值。
其他一些统计数据保持更多的状态(例如直方图、百分位数等)。
既然accumulator_set<>首先支持序列化,那么它应该可以保留样本。
我还没查过
更新
好吧。我已经研究了大约一个小时,没有理由认为序列化是受支持的或易于实现的。
我见过的最多的是功能是可以复制的。
但是没有可以从外部调整的分配器,因此您也不能利用内存映射文件。
这使我得出结论,您想要的是,而不是库的特性。因此,在文档介绍的地方:
Boost.Accumulators既是增量统计计算库,也是可扩展的增量计算框架。
显然,我们应该把它理解为“在accumulator_set生存期内的增量操作”,而不是“增量”,如可恢复/持久的。
它看起来确实是一个很好的特性请求,库作者想要帮助它吗?
https://stackoverflow.com/questions/32289719
复制相似问题