Realización de PCA con solo una matriz de distancia


12

Quiero agrupar un conjunto de datos masivo para el que solo tengo las distancias por pares. Implementé un algoritmo k-medoids, pero está tardando demasiado en ejecutarse, así que me gustaría comenzar reduciendo la dimensión de mi problema aplicando PCA. Sin embargo, la única forma en que sé realizar este método es usando la matriz de covarianza que no tengo en mi situación.

¿Hay alguna manera de aplicar PCA conociendo solo las distancias por pares?


1
Entonces, tiene una gran matriz cuadrada de distancias entre los puntos que desea agrupar. (¿A qué distancia? ¿Euclidiana?) ¿Qué te hace pensar que es el número de dimensiones que abarcan estos puntos, y no el número de puntos en sí (cardinalidad), lo que impide el agrupamiento?
ttnphns

1
El número de puntos no es "muy grande" (unos pocos miles). La distancia que estoy usando es la correlación de Pearson entre estos puntos
bigTree

2
Pero mi pregunta era: ¿realmente quieres reducir la dimensionalidad (y si es así, ¿por qué?) O la cardinalidad (el número de puntos)? Porque tu pregunta no está clara .
ttnphns

1
@ttnphns: Oh chico, por supuesto, simplemente escribí mal mi comentario anterior. Para eliminar la posible confusión, ahora eliminaré ese comentario y repetiré lo que dije aquí con la redacción correcta: "Reducir la cardinalidad en este caso significa hacer que su matriz de distancia más pequeña (disminuir ). Reducir la dimensionalidad significa hacerlo rango inferior, sin cambiar PCA equivale a este último y realmente no ayuda con el objetivo anterior ". N NN×NNN
ameba dice Reinstate Monica

1
Creo que la forma más fácil para usted es usar tal (a) método de agrupamiento o (b) tal implementación o (c) una computadora tan fuerte (suficiente RAM) que tomará y clasificará 6000 objetos (no sé por qué el programa medoid lo encuentra difícil. 6000 es grande, pero no muy grande. Algunos métodos (como K-means) requieren objetos X características de datos. Puede crear dichos datos a partir de la matriz de distancia de objetos a través de MDS métrico (si, nuevamente, su computadora / programa MDS permitirá 6000 objetos).
ttnphns

Respuestas:


8

Actualización: eliminé por completo mi respuesta original, porque estaba basada en una confusión entre las distancias euclidianas y los productos escalares. Esta es una nueva versión de mi respuesta. Disculpas

Si por distancias por pares te refieres a distancias euclidianas, entonces sí, hay una manera de realizar PCA y encontrar componentes principales. Describo el algoritmo en mi respuesta a la siguiente pregunta: ¿Cuál es la diferencia entre el análisis de componentes principales y el escalado multidimensional?

Muy brevemente, la matriz de distancias euclidianas se puede convertir en una matriz de Gram centrada, que se puede usar directamente para realizar PCA mediante descomposición propia. Este procedimiento se conoce como escalamiento multidimensional [clásico] (MDS) .

Si sus distancias por pares no son euclidianas, entonces no puede realizar PCA, pero aún puede realizar MDS, que ya no será equivalente a PCA. Sin embargo, en esta situación, es probable que MDS sea aún mejor para sus propósitos.


La distancia que estoy usando es una correlación (correlación de Pearson) y, por lo tanto, no es la distancia euclidiana. ¿Funcionaría de manera similar?
bigTree

1
@bigTree: si no es una distancia euclidiana, no hay forma de que pueda ejecutar PCA. Sin embargo, puede usar el escalamiento multidimensional, que es una técnica de reducción de dimensionalidad que usa precisamente la matriz de distancias por pares (puede ser cualquier distancia). Otra nota: bajo ciertos supuestos sobre los puntos de datos originales (que no tiene) las correlaciones pueden transformarse en distancias euclidianas. Los supuestos son: (1) que tiene media cero, (2) que tiene una longitud fija, por ejemplo, unidad. ¿Es por casualidad cierto para sus datos?
ameba dice Reinstate Monica

Ninguno de estos es verdadero o mis datos, pero intentaré MDS gracias
bigTree

1
no puedes usar kernel PCA? Imagino que sólo necesitaría pairwise dot productos, pero no sé mucho sobre el tema, así que no sé si tiene sentido
rep_ho

4

Existe PCA con una matriz de distancia, y se llama escalamiento multidimensional (MDS). Puede obtener más información en wikipedia o en este libro .

Puedes hacerlo Rcon la función mds cmdscale. Para una muestra x, puede verificar eso prcomp(x)y cmdscale(dist(x))dar el mismo resultado (donde prcompPCA y distsolo calcula distancias euclidianas entre elementos de x)


3

Esto parece un problema al que se podría aplicar la agrupación espectral. Dado que tiene la matriz de distancia por pares, puede definir un gráfico completamente conectado donde cada nodo tiene N conexiones, lo que corresponde a su distancia desde cualquier otro nodo en el gráfico. A partir de esto, puede calcular el gráfico laplaciano (si esto suena aterrador, no se preocupe, es un cálculo fácil) y luego tomar vectores propios de los más pequeños.valores propios (aquí es donde difiere de PCA). Si toma 3 vectores propios, por ejemplo, tendrá una matriz Nx3. En este espacio, los puntos deberían (con suerte) estar bien separados debido a alguna teoría de gráficos clara que sugiere que este es un corte óptimo para maximizar el flujo (o la distancia, en este caso) entre grupos. A partir de ahí, puede usar un algoritmo k-means o similar para agrupar en 3 espacios. Recomiendo revisar este increíble tutorial para obtener más información:

http://arxiv.org/abs/0711.0189


0

Las distancias por pares también forman una matriz cuadrada al igual que la matriz de covarianza. PCA es solo SVD ( http://en.wikipedia.org/wiki/Singular_value_decomposition ) aplicado a la matriz de covarianza. Aún debería poder hacer una reducción de dimensión usando SVD en sus datos. No estoy exactamente seguro de cómo interpretar su salida, pero definitivamente es algo para probar. Puede utilizar métodos de agrupación como k-means o agrupación jerárquica. También eche un vistazo a otras técnicas de reducción de dimensiones, como el escalado multidimensional. ¿Qué estás tratando de sacar de tus grupos?


La respuesta de Andrew Cassidy es realmente válida. Si su medida de distancia es la correlación de Pearson, usted es simplemente un factor de estandarización "demasiado lejos" de tener una matriz de covarianza. Por lo tanto, aplicar SVD es básicamente lo mismo que hacer PCA.
Matthew Anthony el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.