分布式标准差的算法

时间:2017-06-01 16:31:04

标签: algorithm standard-deviation

我目前有一种算法可以在一组机器上查找标准差,其中一个节点将通过网络从其他节点请求整个数据集,并在收到数据后对数据运行标准差计算。

我想要的是在每个节点上独立处理数据,然后将结果发送到将合并结果的请求节点。这将减少网络流量并并行计算结果。

问题是,是否存在可以执行此操作的算法,或者所有标准偏差计算是否依赖于到目前为止已处理的整个结果。

2 个答案:

答案 0 :(得分:1)

如果s1s2是标准偏差: enter image description here

要合并s1s2以获得组合标准偏差s,公式为: enter image description here

因此,您需要通过网络从每台机器传输平均值,标准偏差和样本数。我无法在stackoverflow中编写latex,因此发布了图像。您可以在wikipedia page上了解更多信息。

答案 1 :(得分:0)

您可以让每个节点计算他们拥有的数据的sum_isum_squared_icount_i,然后将结果合并为:

totalSum = Sum(sum_i)
totalSumSquared = Sum(sum_squared_i)
totalCount = Sum(count_i)

mean = totalSum / totalCount
variance = (totalSumSquared - mean / totalCount) / (totalCount - 1)
sd = sqrt(variance)

Sum(x_i)表示所有节点的总和'计算x_i
此算法可能会因取消而导致精度损失,因此您可能更愿意调整here中的任何其他算法。