8 votos

¿Es el PCA una transformación no lineal?

En el artículo Pérdida de información relativa en el PCA Los autores hacen, en algún momento (en la sección introductoria), la siguiente afirmación:

En caso de que la matriz ortogonal no se conozca a priori, sino que haya que estimarla a partir de un conjunto de vectores de datos de entrada recogidos en la matriz $\underline{X}$ el PCA se convierte en un no lineal operación:

$$\underline{Y} = \underline{w}(\underline{X})\underline{X}$$

Aquí, $\underline{w}$ es una función de valor matricial que calcula la matriz ortogonal necesaria para rotar los datos (por ejemplo, utilizando el algoritmo QR).

Esta afirmación contrasta con la mayoría de las afirmaciones sobre el PCA, que se considera transformación lineal .

He diseñado un experimento de juguete para comprobar la linealidad (propiedad de aditividad): $f(a + b) = f(a) + f(b)$ .

import numpy
from sklearn.decomposition import PCA

if __name__ == '__main__':
    numpy.random.seed(42)
    m = 100
    d = 3
    X = numpy.random.normal(size = (m, d))

    # Center data
    X -= numpy.mean(X, axis = 0)

    pca = PCA(n_components = d)
    pca.fit(X)
    Y = pca.transform(X)

    # Check linearity, pca(a + b) = pca(a) + pca(b)
    for i in range(0, m):
        for j in range(0, m):
            d = pca.transform([X[i] + X[j]]) - (Y[i] + Y[j])
            assert numpy.allclose(d, numpy.array([0.0, 0.0, 0.0]))

La expresión $f(a + b) - (f(a) + f(b))$ , donde $f = \mathrm{PCA}$ parece ser el vector cero por lo que asumo que la transformación (PCA) es lineal.

Qué me falta entonces, que el ACP se considere no lineal cuando la matriz ortogonal (la matriz de los componentes principales) se estima a partir de $X$ (véase la cita anterior)?

1 votos

¿Tiene esto algo que ver con la forma en que sklearn centra los datos antes de transformarlos?

1 votos

El único caso en el que $w$ tiene una fórmula lineal en $X$ es en una dimensión. Si piensa lo contrario, puede deberse a un malentendido sobre lo que $w$ representa: ¿qué crees que es?

0 votos

@Aaron y amoeba, gracias por vuestros comentarios. He actualizado el código de ejemplo. $X$ está ahora centrado antes del PCA.

7voto

zowens Puntos 1417

Creo que la confusión se debe a qué se entiende aquí exactamente como lineal o no lineal.

Utilizando la notación de su cita, la operación $w(X)$ mapea una matriz de datos $X$ en un proyector $P_k$ en la primera $k$ ejes principales de $X$ . Seamos completamente claros con la notación aquí; para simplificar, fijemos $k=1$ y asumir que $X$ está centrado. Entonces $X\in\mathbb R^{n\times p}$ y $P\in \mathbb P^p \subset \mathbb R^{p\times p}$ , donde por $\mathbb P^p$ Me refiero al espacio de todas las matrices de la forma $P=\mathbf{uu}^\top$ con $\mathbf u\in \mathbb R^p$ y $\|\mathbf u\|=1$ .

Ahora:

  • Operación $w:\mathbb R^{n\times p} \to \mathbb P^p$ es no lineal.
  • Operación $P:\mathbb R^p \to \mathbb R$ es lineal.

La cita habla de la $w(\cdot)$ transforma una matriz de datos en un operador de proyección. Es no lineal. Su script investiga la $P(\cdot)$ transforma un vector de alta dimensión en una proyección PCA de baja dimensión, dado un conjunto de datos fijo . Es lineal.

Así que $w(\cdot)$ es un mapeo no lineal en proyecciones lineales.

No hay contradicción.

0 votos

Gracias. Aún así, no estoy seguro de por qué existe la restricción $P=\mathbf{uu}^\top$ . Una matriz de esa forma es simétrica, ¿no? Sin embargo, por lo que sé, la matriz de proyección aprendida por PCA (la matriz que comprende los vectores propios) no es necesariamente simétrica.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X