Какова сложность PCA O (min (p ^ 3, n ^ 3))?

Я читал статью о Sparse PCA: http://stats.stanford.edu/~imj/WEBLIST/AsYetUnpub/sparse.pdf

И в нем говорится, что если у вас есть n точки данных, каждая из которых представлена ​​p функциями, то сложность PCA составляет O(min(p^3,n^3)).

Может кто-нибудь объяснить, как/почему?


person GrowinMan    schedule 10.12.2013    source источник


Ответы (3)


Вычисление ковариационной матрицы — O(p2n); его разложение по собственным значениям равно O(p3). Таким образом, сложность PCA равна O(p2n+p3).

O(min(p3,n3)) означает, что вы можете анализировать двумерный набор данных любого размера за фиксированное время, что явно неверно.

person Don Reba    schedule 11.12.2013
comment
Странно, как расплывчато это формулируется в газете, поскольку подразумевает поиск направлений. Это не говорит прямо, что это сложность алгоритма, просто сильно намекает на это. - person Don Reba; 11.12.2013
comment
Большой! Не могли бы вы дать ссылку на вышесказанное, чтобы было легче цитировать? - person Ébe Isaac; 15.01.2018
comment
@ÉbeIsaac Сложность ковариационной матрицы следует сразу из определения. Существуют алгоритмы меньшей сложности для разложения по собственным значениям, но они близки к O(p³), и, вероятно, именно такую ​​сложность предполагает автор статьи. Однако вы не должны цитировать ответы SO в качестве авторитетных источников, если только они не принадлежат Джону Скит. - person Don Reba; 04.02.2018

Предполагая, что ваш набор данных равен $X \in \R^{nxp}$, где n: количество выборок, d: размеры выборки, вас интересует собственный анализ $X^TX$, который является основной вычислительной стоимостью PCA. Теперь матрицы $X^TX \in \R^{pxp}$ и $XX^T \in \R^{nxn}$ имеют одинаковые min(n, p) неотрицательные собственные значения и собственные векторы. Предполагая, что p меньше n, вы можете решить собственный анализ в $O(p^3)$. Если p больше n (например, в компьютерном зрении во многих случаях размерность выборки — количество пикселей — больше, чем количество доступных выборок), вы можете выполнить собственный анализ за время $O(n^3)$. В любом случае вы можете получить собственные векторы одной матрицы из собственных значений и собственных векторов другой матрицы и сделать это за время $O(min(p, n)^3)$.

$$X^TX = V \Lambda V^T$$

$$XX^T = U \Lambda U^T$$

$$U = XV\лямбда^{-1/2}$$

person michaelt    schedule 10.03.2018
comment
К сожалению, нет поддержки латекса, я предлагаю вам использовать обратные кавычки, чтобы отформатировать это как код, или экспортировать свои латексные формулы в png и загрузить их. - person Ash; 10.03.2018

Ниже приведен ответ Майкла, представленный как в оригинальном LaTeX, так и в формате PNG.

Изображение ответа LaTeX

Латекс код:

Предполагая, что ваш набор данных равен $X \in R^{n\times p}$, где n: количество выборок, p: размеры выборки, вас интересует собственный анализ $X^TX$, который является основной вычислительной стоимостью СПС. Теперь матрицы $X^TX \in \R^{p \times p}$ и $XX^T \in \R^{n\times n}$ имеют одинаковые min(n, p) неотрицательные собственные значения и собственные векторы. Предполагая, что p меньше n, вы можете решить собственный анализ в $O(p^3)$. Если p больше n (например, в компьютерном зрении во многих случаях размерность выборки — количество пикселей — больше, чем количество доступных выборок), вы можете выполнить собственный анализ за время $O(n^3)$. В любом случае вы можете получить собственные векторы одной матрицы из собственных значений и собственных векторов другой матрицы и сделать это за время $O(min(p, n)^3)$.

person Ebram    schedule 30.03.2018
comment
пожалуйста, разместите любой код как фактический код, изображения не полезны - person Azsgy; 30.03.2018