Joh*_*ohn 8 c# math statistics
这是我们正在解决的现实世界问题.我们有一些相当大的数据集需要实时汇总和汇总,并应用了大量的过滤器和公式.当数据集小于50,000条记录时,它可以实时地将这些应用于每条记录,但是当我们接近100,000,然后是100多万时,对所有记录进行实时数学计算的开销变得太大了.我们花了很多时间在SQL中进行优化,然后假设在ram中抛出整个数据集,我们仍然得出结论,我们需要从数据中"缩小"并总结组.我们需要一种方法将记录组合在一起,然后将数学应用于一组"类似记录".这些记录的结合使我们能够非常快速地进行实时报告.我们当前的解决方案组记录集完全相同.
这是一个示例记录
ID77968 1,43:19.7,43:19.7,TRUE,1,3,0,4,1,1,1,1,1,0,0,0,3,0,0,0,3,14,79,
因此,如果我们有2个具有完全相同的数据
ID77968 1,43:19.7,43:19.7,TRUE,1,3,0,4,1,1,1,1,1,0,0,0,3,0,0,0,3,14,79,
ID77969 1,43:19.7,43:19.7,TRUE,1,3,0,4,1,1,1,1,1,0,0,0,3,0,0,0,3,14,79,
然后我们创建一个组.然后我们可以将数学和逻辑应用于单个组,然后将结果乘以2以得到真正的答案.这对我们来说非常有用,并且可以非常有助于解决项目的规模问题.那说我们现在有一个新问题.我们的一些值具有更大的结果范围,这些结果创建了数千条记录的数据集,其中只有几条完全相同.在一些头脑风暴之后,我们想出了一个应用一些"模糊"逻辑来将相似的东西组合在一起的想法.我们现在面临的问题是,我们不知道将记录集减少到不完全相同的组的最佳统计上合理的方法.
这是我们需要做的.(简单的例子,单列)
假设我们有以下数字20个数字
106
0
8
0
1
0
4
0
3474
0
204
0
75
0
128
0
617
0
20
0
在上面的集合中我们有很多0,所以这些很容易组合在一起.但我如何形成让我们再说3组.我认为在外部界限上我们有3474但是如果权重低于该数字,则出站组可能类似于2000,然后将值3474和617组合成一个组.我们的团队会议认为这是一个引力问题或更为人所知的cheerio吸引力.理想情况下,我们会找到一个方程式或方法,让我们看一下整个记录集,然后在X个组中表达.这将允许我们改变数据的分组/聚集.因此,假设我们使用上面的示例20个数字,并希望在15个组中表达这个,而我们能够做到这一点的8个组.现在请记住,在上面的示例中,这只是一个列,但我正在尝试将整个记录分组
ID77968 1,43:19.7,43:19.7,TRUE,1,3,0,4,1,1,1,1,1,0,0,0,3,0,0,0,3,14,79,
ID77969 1,43:19.4,43:19.7,TRUE,1.2,3.2,0,3,2,1,1,1,1,0,0,0,3,0,0,0,0,1,1,179,
我在这里先向您的帮助表示感谢
我们当前对每条记录进行哈希处理,然后如果记录具有相同的哈希值,我们将其分组.这里哈希的问题是,如果它完全相同,那么它就不会被分组.这对我们来说已经有一段时间了,因为我们在每一栏中的价值观都是相对有限的.我们现在已经介绍了一些具有更大范围的值,这些值使得我们的哈希分组无效.在我们能够获取100mm记录并将它们散列到超过100k组之前,我们现在看到的集合中的neew数据只有70k,所有70k都是唯一的.这里有不明数据:rv.zip的副本(3,58 MB)
我们需要更多地了解应用于数据的算法,因为可能可以通过不断地对新数据求和来计算某些内容(这可能只是对 Eric D. 的评论的改写)
否则,请考虑对最近 n 天或几个月的记录运行算法,然后将结果随时间变化绘制图表。