2016-12-06 24 views
1

Я знаю методы уменьшения размерности, такие как PCA или SVD.Как PCA и SVD распространяются в библиотеках, таких как MLlib или Mahout

Я хотел бы знать, как эти методы реализованы в распределенных платформах Big Data, таких как Apache Spark.

Имеется ли псевдокод или схема с формулировкой? Я хотел бы знать, какие части алгоритма могут вызвать узкое место из-за проблем с коммуникацией.

Большое спасибо заранее

+1

Отъезд http://stackoverflow.com/questions/40262539/pca-in-spark-mllib-and-spark-ml/40268082#40268082 – broncoAbierto

+0

Мой вопрос частично разрешен в этом вопросе, они объясняют СПС. Они распараллеливают A'A, а затем мастер-узел вычисляет собственные значения без распараллеливания. В SVD вы разлагаете матрицу A на три подматрицы A = USV '. Я понимаю, что процедура получения S и V должна распараллеливаться так же, как и PCA, но как насчет U? – Rob

+1

Если вам нужно U, вы можете получить его, вычислив продукт AVS^(- 1). – broncoAbierto

ответ

1

Apache Mahout реализует Distributed Stochastic Singular Value Decomposition, который непосредственно основан на Randomized methods for computing low-rank approximations of matrices Натан Halko

Обратите внимание, что dssvd для Apache-Mahout сансары это библиотека, которая будет работать на вершине Спарк. Таким образом, по сути, это основанный на Spark подход к svd, который фактически распределяется.

Что касается распределенного PCA, Mahout также предоставляет распространенный стохастический PCA, в последнее время произошел перетасовка веб-сайта, но dspca (распределенный стохастический анализ основных компонентов) приведен в качестве примера here, который дает алгоритм и реализацию.

Halko Я верю (см. Ссылку выше) также обсуждает распределенные PCA. Я не могу сказать вам, где будут узкие места, но я надеюсь, что эта информация поможет вам начать свое исследование.

 Смежные вопросы

  • Нет связанных вопросов^_^