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. Я не могу сказать вам, где будут узкие места, но я надеюсь, что эта информация поможет вам начать свое исследование.
Отъезд http://stackoverflow.com/questions/40262539/pca-in-spark-mllib-and-spark-ml/40268082#40268082 – broncoAbierto
Мой вопрос частично разрешен в этом вопросе, они объясняют СПС. Они распараллеливают A'A, а затем мастер-узел вычисляет собственные значения без распараллеливания. В SVD вы разлагаете матрицу A на три подматрицы A = USV '. Я понимаю, что процедура получения S и V должна распараллеливаться так же, как и PCA, но как насчет U? – Rob
Если вам нужно U, вы можете получить его, вычислив продукт AVS^(- 1). – broncoAbierto