首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解分布式PCA的工作原理

理解分布式PCA的工作原理
EN

Data Science用户
提问于 2017-04-19 08:58:18
回答 2查看 916关注 0票数 8

作为大数据分析项目的一部分,我正在研究,

我需要对一些数据执行PCA,使用云计算系统。

在我的例子中,我正在使用Amazon作为工作,尤其是火花。

撇开“如何在星星之火中执行PCA”问题不说,我想了解一下,在基于云的体系结构上计算PC时,事情是如何在幕后进行的。

例如,确定数据的PC的方法之一是计算特征的协方差矩阵。

例如,当使用基于HDFS的体系结构时,原始数据分布在多个节点上,我猜每个节点都接收X记录。

那么,当每个节点只有部分数据时,如何计算协方差矩阵呢?

这只是一个例子。我试图找到一些文件或文档解释所有这些幕后巫毒,但找不到足够好的东西,我的需要(可能是我的糟糕的谷歌技能)。

所以我可以概括一下我的问题(S)\需要以下几点:

1.云体系结构上的分布式主成分分析是如何工作的

最好是一些学术论文或其他类型的解释,其中也包含一些视觉效果。

2. D-PCA

的火花实现

星火是怎么做到的?他们的体系结构是否有任何“扭曲”来提高效率,或者RDD对象的使用如何有助于提高效率?等。

如果你能在网上上一堂课的话,那就太棒了。

预先感谢任何人谁能提供一些阅读材料。

EN

回答 2

Data Science用户

回答已采纳

发布于 2017-04-19 12:16:14

这个问题更多地与Apache星火体系结构和地图缩减有关;这里有不止一个问题,但是,您问题的中心部分可能是

例如,确定数据的PC的方法之一是计算特征的协方差矩阵。例如,当使用基于HDFS的体系结构时,原始数据分布在多个节点上,我猜每个节点都接收X记录。那么,当每个节点只有部分数据时,如何计算协方差矩阵呢?

我将谈到这一点,希望这将在一定程度上澄清这一问题。

让我们看一种常用的协方差计算形式,\frac{1}{n}\sum(x-\bar{x})(y-\bar{y})

这要求您计算以下内容:

\bar{x}
\bar{y}
  • x-\bar{x}y-\bar{y}
  • (x-\bar{x})(y-\bar{y})

以分布式的方式。其余的都很简单,假设我有100个数据点(x,y),分发给10个Apache工作人员,每个都得到10个数据点。

计算\bar{x}\bar{y}:每个工作人员将添加10个数据点的x/y值,并将其除以10,得出x/y的部分平均值(这是映射函数)。然后,Spark将运行聚合步骤(在作业的Spark中),在该步骤中,所有10名工人的部分方法被取下来,并再次添加,然后除以10,得到最终的\bar{x}\bar{y} (聚合/减少操作)。

计算(x-\bar{x}) \cdot (y-\bar{y}):相同方式,分配数据点,向所有工作人员广播\bar{x}\bar{y}值,计算部分(x-\bar{x}) \cdot (y-\bar{y}),再次运行聚合以获取\sum (x-\bar{x})(y-\bar{y})

采用上述方法进行分布式计算,得到协方差,对于多维数据,可以得到协方差矩阵。

重点是将计算分发到可以分布的阶段,然后集中处理不能分布的计算阶段。这实际上是星火建筑的一个重要方面。

希望这能有所帮助。

票数 5
EN

Data Science用户

发布于 2018-07-25 22:56:33

如果您想了解Spark是如何做到的,请看org.apache.spark.mllib.linalg.distributed.RowMatrix类,从这个computePrincipalComponentsAndExplainedVariance方法开始。

它的实际分布部分是在这个computeGramianMatrix方法中,它使用BLAS.spr(1.0, v, U.data)将每个输入向量累加到Gramian矩阵中,其中v是输入向量,U表示矩阵的上三角部分。这可以在多个执行者上同时运行,然后通过将矩阵相加在一起,可以将部分聚集的矩阵组合起来。

一旦将所有向量聚集到Gramian矩阵中,就将矩阵转换为协方差矩阵,然后利用SVD生成PCA矩阵/向量。然而,这一最后阶段没有得到分发。

票数 2
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/18447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档