我目前有一种算法可以在一组机器上查找标准差,其中一个节点将通过网络从其他节点请求整个数据集,并在收到数据后对数据运行标准差计算。
我想要的是在每个节点上独立处理数据,然后将结果发送到将合并结果的请求节点。这将减少网络流量并并行计算结果。
问题是,是否存在可以执行此操作的算法,或者所有标准偏差计算是否依赖于到目前为止已处理的整个结果。
答案 0 :(得分:1)
因此,您需要通过网络从每台机器传输平均值,标准偏差和样本数。我无法在stackoverflow中编写latex,因此发布了图像。您可以在wikipedia page上了解更多信息。
答案 1 :(得分:0)
您可以让每个节点计算他们拥有的数据的sum_i
,sum_squared_i
和count_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中的任何其他算法。