Algorithm 分布式标准差算法
我目前有一个算法,用于在一组机器上查找标准偏差,其中一个节点将通过网络从其他节点请求整个数据集,并在收到数据后对其运行标准偏差计算 我想要的是在每个节点上独立地处理数据,然后将结果发送到请求节点,请求节点将合并结果。这将减少网络流量并并行计算结果Algorithm 分布式标准差算法,algorithm,standard-deviation,Algorithm,Standard Deviation,我目前有一个算法,用于在一组机器上查找标准偏差,其中一个节点将通过网络从其他节点请求整个数据集,并在收到数据后对其运行标准偏差计算 我想要的是在每个节点上独立地处理数据,然后将结果发送到请求节点,请求节点将合并结果。这将减少网络流量并并行计算结果 问题是是否有一种算法可以做到这一点,或者所有标准偏差计算都依赖于迄今为止处理的整个结果。您可以让每个节点计算它们拥有的数据的sum\u i、sum\u squared\u i和count\u i,然后将结果合并为: totalSum = Sum(sum
问题是是否有一种算法可以做到这一点,或者所有标准偏差计算都依赖于迄今为止处理的整个结果。您可以让每个节点计算它们拥有的数据的
sum\u i
、sum\u squared\u i
和count\u 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
总和由于取消,此算法可能会受到精度损失的影响,因此您可能更愿意采用来自的任何其他算法。如果
s1
和s2
是标准偏差:
要合并s1
和s2
以获得组合标准偏差s
,公式为:
因此,您需要通过网络从每台机器传输平均值、标准偏差和样本数。我无法在stackoverflow中写入latex,因此发布了图像。你可以在上阅读更多。当我手工计算这个问题时,我得到的是
n1(y1^2-y^2)+n2(y2^2-y^2)
而不是n1(y1-y)^2+n2(y2-y)^2
,对吗?不过,我用python脚本检查过,它们都是正确的。