- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二维K-S检验的并行算法
K-S检验是一种常用的无参估计,用于检验两种经验分布是否起源于同一分布。一维K-S检验的做法比较简单,也很常用。随着数据处理的需要,人们类似地发展出了二维K-S检验的算法,并将之广泛用于天文、地理数据以及财政分析等领域。文章在Cook提出的双树结构算法的基础上进行改进,提出了并行算法。随着数据量的增大,这种算法的优点更加突出。
一、K-S检验
一维K-S检验:F,G是两个样本数分别为 n, m的采样,要判断它们是否起源于同一分布。统计量D是这两个样本在统计分布函数(cdf)上的最大差异。则一维情况满足:
二维K-S检验:与一维K-S检验有类似的统计关系,人们已通过蒙特卡罗方法证实了这一点。需要提出的是,这里的统计量D是一个象限中两种分布的点数比例的最大差异值;也就是说,要检查所有可能的象限划分,找出两个样本分占自己总数量比例差别最大的象限,这个最大差异值就是D。类似的统计关系如下:
二、以前的算法
假设两种样本拥有n个数据点:
1、考虑原点位于每个样本点上,这样的算法需要n2量级的运算量。
2、考虑原点的坐标是一个点的横坐标和另一个点纵坐标的结合。如果采用这种算法,计算量将达到n3量级。对于大样本的数据,这种算法计算量太大,不适用。
三、Cook的双树结构算法
征对传统算法计算量太大的问题,Cook(1999)提出了双树结构算法。这种算法只需要O(nlogn)的运算量。
先把数据按照y值的大小排序。对于一、二象限,沿y轴从上到下进行计算,构建出双树结构。在扫描中每遇到一个新的数据点就增加一个新节点。这样构建出的双树形结构,总是满足:
(1)左子点x值母点x值右子点x值
(2)子点y值母点y值
(3)无论y值如何,只要x1x2, 则点1一定在点2的左边
下面以第二象限为例,举一个简单的例子:
方框代表一组样本,圆圈代表另一组样本
Ns:方框数 Nc:圆圈数
从最左边的点(1,2)开始(注意它没有子点),原点在第一根线的位置
t1= (1/ Ns-0 / Nc) →点(1,2)本身带来的比例差异
delta1=t1 →此时第2象限的比例差异
D=delta1 →最大比例差
(2) 把原点移动到第二根线的位置,母点(2,3)被包括进来t2= (0/ Ns-1/ Nc) →点(2,3)本身带来的比例差异
Delta2= delta1+t2 →此时第2象限的比例差异D=max(abs(delta1),abs(delta2)) →最大比例差
D’=D
把原点移动到第三根线的位置,右子点(3,1)被包括进来
T3= (0/ Ns-1/ Nc)
Delta3= delta2+t3D=max(abs(delta3),D’)
D’=D
如此连续移动,可以检验出所有可能的象限划分中第二象限的最大差值
其他三个象限的算法与第二象限类似,例如第一象限就从最左边起算,然后逐步向右。而下面两个象限则按y的降序排列重新建立双树结构进行计算。整个算法的计算量为O(nlogn)。
四、并行算法
Cook的算法是从上到下进行计算,每次加入一个新节点,不断发展双树结构。最后在根部得到差异的最大值。如果我们用多个处理器同时进行运算,会存在一些问题:每个处理器的运算时间不一样,就会存在等待时间;而且如果A处理器下面的一个亚支是由B处理器计算的,B还未计算到此处的话,A就必须等待。
而并行算法的基本思路是首先建立整个双树结构,把整个树分成平行的几支,用多个处理器同时由下向上进行计算,在根部找出最大差异。由于树的结构是平行的,处理器之间相互等待的时间会大大减少。
采用并行算法有两个需要注意的问题: 第一、每个处理器的运算量要基本一致;第二、尽量减少处理器中途的交流,也就是说汇合的节点尽量在根部。
理想的情况如下图:
平衡处理器运算量的方法:
假设现有N个处理器,我们需要在双树结构的根部附近把数据分成N等分,尽量使每个处理器中有相等的节点数。我们从数据点中随机采样1000个点,把它们按X值得大小排序。每1000/N位置的X值大小作为划分点,把数据分为N等分。但这样划分其实默认数据的X,Y值是无关的,实际上的情况可能是X值小,Y值也小,X值大的位置,Y值也大。所以,每计算2000个点,要检查下每个处理器的负荷量,如果差异超过30%;就把原来划分点的X值进行平均作为新的划分点再进行计算。
五、试验结果
(1) [0,1]之间的均匀分布,考虑有 20,000和200,000个样本两种情况
(2)标准正态分布,处理过程中平衡和不平衡数据量的差别
六、结论
(1)并行算法的使用,提高了运算的效率,使得处理更大量的数据成为可能。
(2)速度的提高不是线性的,因为更多的处理器也
文档评论(0)