Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 分布式标准差算法_Algorithm_Standard Deviation - Fatal编程技术网

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脚本检查过,它们都是正确的。