首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分布式PCA或等效

分布式PCA或等效
EN

Data Science用户
提问于 2018-07-11 21:22:04
回答 2查看 497关注 0票数 5

我们通常有相当大的数据集可供建模,只是为了给您一个想法:

  • 超过1M的特征(稀疏,平均特征人口约为12%);
  • 超过六千万行。

许多建模算法和工具并不能扩展到如此广泛的数据集。

因此,我们正在寻找一个分布式运行的降维实现(例如,在Spark/Hadoop/ etc中)。我们想把功能减少到几千个。

由于PCA操作于矩阵乘法,而矩阵乘法并不能很好地分布在一组服务器上,所以我们正在研究其他算法,或者可能是其他分布式降维的实现。

有人遇到过类似的问题吗?你做了什么来解决这个问题?

有一篇关于“广义低等级模型”( http://web.stanford.edu/~boyd/papers/pdf/glrm.pdf )的康奈尔/斯坦福摘要,专门讨论这个问题:

  1. 第8页“并行化交替最小化”介绍了如何分配;
  2. 此外,第9页“缺失数据和矩阵完成”讨论了如何处理稀疏/缺失数据。

GLRM虽然似乎是我们正在寻找的,但我们找不到这些想法的好的实际实现。

更新7/15/2018年:另一个摘要是来自Facebook的快速随机化的SVD (请阅读此处http://tygert.com/spark.pdf )以及使用als-http://tygert.com/als.pdf进行低秩矩阵逼近的想法。虽然现在还没有明确的方法来使用它们--参见https://github.com/facebook/fbpca/issues/6的讨论

还有其他的解决办法吗?其他可用的GLRM或其他分布式降维实现?

EN

回答 2

Data Science用户

回答已采纳

发布于 2018-07-21 17:42:14

从问题描述来看,让我印象最深的是X翼式自动编码器。基本上,你有两个神经网络,可以有任何流行的神经网络架构,如完全连接,卷积和池层,甚至顺序单元,如LSTM/GRU,编码器和解码器。如果编码维数远小于原始编码维数,则可用作输入的低维表示形式。解码器用于检索原始维数/信息。有许多类型的自动编码器,但在这个用例中,您可以查看稀疏和去噪的自动编码器。你可以在“深度学习书:https://www.deeplearningbook.org/contents/autoencoders.html”中读到更多关于自动编码器的内容。

我真的不明白为什么您确实需要进行分布式的培训过程,但即便如此,也有Tensorflow的分布式实现,因此您可以对Tensorflow文档进行一些研究。另外,如果您想学习一个新的框架,优步的Horovod是一个用于编写Tensorflow解决方案的分布式框架:https://github.com/uber/horovod

最后,我要说的是数据的基本维度。你说过,一个可接受的维度将在数千。根据我的经验,稀疏数据驻留在小得多的流形中。因此,我建议将编码维数作为一个超参数,并对相应的损失函数进行优化。

票数 1
EN

Data Science用户

发布于 2018-07-16 17:47:51

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

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

复制
相关文章

相似问题

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