13 votos

Selección de los componentes del ACP que separan los grupos

Con frecuencia solía diagnosticar mis datos multivariados utilizando PCA (datos ómicos con cientos de miles de variables y docenas o cientos de muestras). Los datos a menudo provienen de experimentos con varias variables independientes categóricas que definen algunos grupos, y a menudo tengo que pasar por unos cuantos componentes antes de encontrar los que muestran una separación entre los grupos de interés. Se me ha ocurrido una forma bastante primitiva de encontrar esos componentes discriminantes, y me pregunto

  1. hasta qué punto es razonable/justificable, y
  2. si hay mejores formas de lograr lo mismo.

Tenga en cuenta que esto es exploratorio. Antes de convencer a alguien más, quiero convencerme a mí mismo. Si veo que hay componentes que distinguen claramente los grupos de interés (por ejemplo, control frente a tratamiento), aunque sean responsables de una parte menor de la varianza de las respuestas, me fío más que de un resultado de, por ejemplo, aprendizaje automático supervisado.

Este es mi enfoque. Utilizaré el conjunto de datos de ejemplo "metabo" de pca3d en R.

La idea es evaluar cuánta varianza de cada uno de los componentes puede ser explicada por la variable independiente. Para ello, calculo un modelo simple para cada componente y utilizo $R^2$ como métrica para ordenar los componentes de "más interesante" a "menos interesante".

require( pca3d )
# data on metabolic profiles of TB patients and controls
data( metabo )
# first column is the independent variable
pca <- prcomp( metabo[,-1], scale.= T ) 

# create a model for each component
lm.m <- lm( pca$x ~ metabo[,1] )
lm.s <- summary( lm.m )
lm.r2 <- sapply( lm.s, function( x ) x$r.squared )
plot( lm.r2, type= "l" )
text( 1:length( lm.r2 ), lm.r2, 1:length( lm.r2 ), pos= 3 )

Aquí está el resultado. El gráfico muestra el porcentaje de varianza de cada componente explicado por la variable independiente en metabo[,1] .

enter image description here

Podemos ordenar los componentes por $r^2$ para saber cuáles mostrar con order( lm.r2, decreasing= TRUE ) los tres primeros componentes son 2, 1 y 7.

pca3d( pca, components= c( 1, 2, 7 ), group= metabo[,1] )

Esta es la trama:

enter image description here

(Las categorías roja y verde son dos grupos de sujetos que no son pacientes, y es de esperar que no se puedan distinguir).

Para reformular mis preguntas,

  1. ¿Le parece que este enfoque tiene sentido? Mi problema es que se parece demasiado al dragado de datos. Además, intuitivamente creo que quizás debería darle la vuelta a la tortilla y preguntar qué parte de la varianza de la variable independiente es explicada por cada variable? Por último, estoy (casi) seguro de que estoy reinventando la rueda, pobremente, así que mi segunda pregunta es
  2. ¿Hay algo mejor?

Tenga en cuenta que no quiero pasar a mínimos cuadrados parciales ni nada parecido en esta fase; sólo quiero diagnosticar el PCA en el contexto de mi clasificación.

2 votos

Me gustaría hacer sólo dos comentarios sobre su interesante pregunta. 1) Describa en palabras su enfoque además de mostrar su código (recuerde que la gente aquí utiliza varios programas, no necesariamente R). 2) El diagrama de dispersión no es muy convincente sin picos en su suelo. Además, si usted tiene cualquier específico dudas sobre su planteamiento, por favor, háblenlas para que la pregunta esté más centrada.

0 votos

@ttnphns Gracias, he intentado ahora mejorar mi pregunta.

1 votos

editado: Para aclarar, ¿primero estás realizando el ACP y luego tratando de aislar los componentes principales que mejor se explican por alguna variable en particular? ¿Estás validando de forma cruzada con un diagrama de dispersión? Podría ser el caso de que alguna x que elija de su conjunto de datos pasa a explicar una gran cantidad de la varianza en un componente principal, pero no estoy seguro de que significa nada si la varianza es muy baja a lo largo de ese componente principal.

8voto

Diego Avrale Puntos 31

La respuesta a tu pregunta nº 1 es sí, tu solución equivale a dragar datos. La respuesta a su pregunta nº 2 es sí, hay métodos superiores en la literatura.

El problema central de su enfoque es que no está abordando el problema de los datos de alta dimensión, es decir, los problemas que surgen cuando $n << p$ . Su solución es bastante arbitraria y carece de cualquier tipo de justificación teórica: A continuación, le indicaré la bibliografía que puede ayudarle a encontrar métodos adecuados.

Está ejecutando un análisis que se asemeja a la regresión de componentes principales, excepto que ha intercambiado sus variables independientes y dependientes, lo que resulta en un gran multivariante (a diferencia de múltiples ) análisis de regresión. La regresión multivariante requiere que el tamaño de la muestra sea mayor que el número de variables dependientes, un requisito que se incumple completamente en su ejemplo.

Si está realmente decidido a ejecutar el ACP en sus datos y luego utilizar la regresión multivariante, debe utilizar un método apropiado. Por ejemplo, busque el MRCE y los métodos relacionados [1].

Sin embargo, a pesar de algunos comentarios desconcertantes que ha hecho, todo en su análisis, tal como se presenta actualmente, sugiere que su objetivo final es identificar las relaciones entre un gran conjunto de variables continuas (metabo[,-1]) y una única variable categórica (metabo[,1]). El PCA es una mala manera de conseguirlo. Hay dos clases generales de soluciones a este problema en el caso de las altas dimensiones: en primer lugar, las soluciones que asumen la dispersión, y las soluciones que asumen una estructura factorial.

Las soluciones basadas en la dispersión suelen suponer que sólo una proporción muy pequeña de variables están relacionadas de hecho con la variable categórica de interés, e intentan encontrar este pequeño subconjunto; por ejemplo, véase DALASS [2]. Los métodos basados en la estructura factorial asumen que sus variables discriminantes son manifestaciones de variables latentes subyacentes con una verdadera relación con la variable categórica. Un ejemplo de esta clase de métodos es DLDA [3].

Tenga en cuenta que estoy no recomendar necesariamente ninguno de los métodos que he mencionado para sus datos; debe considerar cuidadosamente sus objetivos y el conocimiento a priori del problema para seleccionar un método apropiado.

1] Rothman, Levina, Zhu (2010). Sparse Multivariate Regression With Covariance Estimation. Journal of Computational and Graphical Statistics, Volumen 19, Número 4, Páginas 947-962.

2] Nickolay T. Trendafilov, Ian T. Jolliffe, DALASS: Variable selection in discriminant analysis via the LASSO, Computational Statistics & Data Analysis, Volume 51, Issue 8, 1 May 2007, Pages 3718-3736.

3] Yu, Yang (2001). A direct LDA algorithm for high-dimensional data with application to face recognition. Pattern Recognition 34, 2067-2070.

2 votos

He iniciado una nueva recompensa para premiar esta respuesta.

1 votos

@Enero: Esta es una buena respuesta, pero me gustaría señalar que el "LDA directo" es un algoritmo muy extraño en el mejor de los casos , ver Gao y Davis, 2005, Por qué el LDA directo no es equivalente al LDA : "demostramos que... D-LDA puede imponer una importante limitación de rendimiento en aplicaciones generales", así que hay que tener cuidado con él.

0 votos

@amoeba Gracias por la cita. Hace tiempo que me preocupa la DLDA, ya que no se justifica la selección de componentes de esa manera concreta. Lo veo como una solución muy específica para un problema que no necesariamente se generaliza más allá de los problemas de discriminación de rostros, aunque se puede adaptar fácilmente a cualquier problema con cierto conocimiento de qué componentes son más útiles para la discriminación. Todas las soluciones que implementan la discriminación de alta dimensión con una supuesta estructura factorial sufren problemas... ¿has encontrado algún enfoque mejor? Me interesa su opinión al respecto.

4voto

cbeleites Puntos 12461

@ahfoss ya te ha indicado que el LDA es el análogo de clasificación del PCA. En realidad, estos dos métodos están relacionados entre sí y también con PLS:

nature of dependent variable (for supervised)     unsupervised    supervised
or structure of data (unsupervised)
continuous                                        PCA             PLS
factor/groups/classes                                             LDA

La relación está en la proyección: El PCA proyecta los datos de manera que la matriz de varianza-covarianza de las puntuaciones será $\mathbf I$ . LDA realiza una proyección similar, pero en lugar de la matriz de varianza-covarianza de la todo conjunto de datos, el agrupado dentro de la clase la matriz de varianza-covarianza se convierte en $\mathbf I$ .

Como también dijo @ahfoss, el LDA habitual no es factible para $n \ll p$ . Pero el PLS-LDA es una forma factible de abordar esto, véase por ejemplo Barker, M. & Rayens, W.: Partial least squares for discrimination, J Chemom, 17, 166-173 (2003). DOI: 10.1002/cem.785 (este documento también analiza la relación entre PLS y LDA).

El PLS puede considerarse una regularización como el LASSO, y también está disponible el PLS disperso (aunque no lo he utilizado: mis datos son más adecuados para el PLS normal, que no asume la dispersidad). Para una buena discusión de los diferentes métodos de regularización, véase, por ejemplo, el Elementos de aprendizaje estadístico .

Una buena propiedad de hacer PLS-LDA es que se puede escribir el modelo final en forma bilineal si se tiene cuidado de usar el mismo centrado para ambos pasos. Esto permite interpretar el modelo de la misma manera que se interpretaría el modelo LDA que se podría calcular si se tuvieran más casos y $n \gg p$ . (En caso de que se vea obligado a hacer PCA, esto se aplica también a PCA-LDA).

Digamos que las puntuaciones de PLS $\mathbf T = $ matriz de datos $\mathbf X \times$ Ponderaciones PLS $\mathbf W$ y
para un LDA habitual, las puntuaciones $\mathbf L = $ matriz de datos $\mathbf X\times$ Coeficientes LDA $\mathbf B$ .

Entonces, haciendo el LDA en el espacio PLS (X-)score, obtenemos:
$\mathbf L'^{(n \times k - 1)} = \mathbf T^{(n \times m)} \mathbf B'^{(m \times k - 1)}$
$\phantom{\mathbf L^{(n \times k - 1)}} = \mathbf X^{(n \times p)} \mathbf W^{(p \times m)} \mathbf B'^{(m \times k - 1)}$
$\phantom{\mathbf L^{(n \times k - 1)}} = \mathbf X^{(n \times p)} \mathbf B''^{(p \times k - 1)}$
Los guiones marcan que estas puntuaciones LDA ( $\mathbf L'$ ) pueden ser (ligeramente) diferentes de las puntuaciones del LDA que se obtendrían sin regularización, y también lo son los coeficientes $\mathbf B''$ . $\mathbf B'$ será muy diferente de $\mathbf B$ ya que se aplican al espacio de puntuación del PLS y no al espacio de datos original.

Nota práctica: en caso de que trabajes en R, tengo un paquete en desarrollo que proporciona modelos PLS-LDA y PCA-LDA. Hazme saber si quieres probarlo.


Para evitar el dragado de datos, hay que validar el modelo final (= medir su rendimiento) con datos independientes.

Independiente significa aquí que este caso (¿paciente?) no contribuyó al ajuste del modelo en cualquier manera. En particular,

  • no ha introducido ningún tipo de preprocesamiento que implique múltiples casos, como el centrado o la normalización
  • no entró en el cálculo de PCA/PLS/...
  • no se utilizó para la estimación de los hiperparámetros.

Como tiene pocos casos, una estrategia de remuestreo sería adecuada. En esta situación, probablemente sea mejor fijar cualquier hiperparámetro (como el número de PC o las variables latentes de PLS, o el límite de LASSO) mediante conocimiento externo para evitar una segunda división interna de sus datos de entrenamiento para la optimización del hiperparámetro.

0 votos

+1 para la validación cruzada de los modelos. Es muy importante. Sin embargo, me gustaría escuchar al OP @January, que ha declarado que no está interesado en la discriminación, aunque su problema parece muy adecuado para el análisis de discriminación/clasificación.

0 votos

No estoy de acuerdo con tu afirmación de que los k-means/PCA/etc pertenecen a la misma familia. Esto implica que son casos especiales del mismo modelo o algoritmo, lo cual no es cierto. El algoritmo PCA es un simple cálculo matricial, mientras que k-means es un algoritmo iterativo que se ha comparado con el algoritmo EM (no es técnicamente correcto, ya que no hay función de probabilidad, pero sigue siendo una comparación útil en algunos aspectos, según mi opinión).

1 votos

¿Se refiere a la función plsgenomics::pls.lda? Si no es así, ¿en qué se diferencia/mejora su paquete? También señalaré a los lectores interesados que PLS-LDA en general es superior a una técnica comúnmente utilizada de simplemente ejecutar PLS con una variable de resultado codificada con dummies. Aunque este último enfoque no es necesariamente incorrecto, es definitivamente torpe, sobre todo porque se pueden obtener probabilidades predichas menores que cero o mayores que uno.

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