Tengo una matriz de correlaciones por pares entre n elementos. Ahora quiero encontrar un subconjunto de k elementos con la menor correlación. Por lo tanto, hay dos preguntas:
- ¿Cuál es la medida adecuada para la correlación dentro de ese grupo?
- ¿Cómo encontrar el grupo con la menor correlación?
Este problema me parece una especie de análisis factorial inverso y estoy bastante seguro de que hay una solución directa.
Creo que este problema en realidad es igual al problema de eliminar (nk) nodos de un gráfico completo para que los nodos restantes estén conectados con pesos de borde mínimos. ¿Qué piensas?
Gracias por sus sugerencias de antemano!
correlation
ranking
Chris
fuente
fuente
Respuestas:
[Advertencia: esta respuesta apareció antes de que el OP decidiera reformular la pregunta, por lo que puede haber perdido relevancia. Originalmente la pregunta era sobre
How to rank items according to their pairwise correlations
]Debido a que la matriz de correlaciones por pares no es una matriz unidimensional, no está muy claro cómo podría ser la "clasificación". Especialmente siempre que no haya elaborado su idea en detalle, como parece. Pero mencionó PCA como adecuado para usted, y eso inmediatamente me hizo pensar en la raíz de Cholesky como una alternativa potencialmente aún más adecuada.
La raíz de Cholesky es como una matriz de cargas dejadas por PCA, solo que es triangular. Explicaré ambos con un ejemplo.
La matriz de carga A de PCA es la matriz de correlaciones entre las variables y los componentes principales. Podemos decirlo porque las sumas de cuadrados de las filas son todas 1 (la diagonal de R) mientras que la suma de cuadrados de la matriz es la varianza general (rastro de R). Los elementos de la raíz de Cholesky de B también son correlaciones, porque esa matriz también tiene estas dos propiedades. Las columnas de B no son componentes principales de A, aunque son "componentes", en cierto sentido.
Tanto A como B pueden restaurar R y, por lo tanto, ambos pueden reemplazar a R, como su representación. B es triangular, lo que muestra claramente el hecho de que captura las correlaciones por pares de R de forma secuencial o jerárquica. El componente de Cholesky se
I
correlaciona con todas las variables y es la imagen lineal de la primera de ellasV1
. El componenteII
no comparte más con,V1
pero se correlaciona con los últimos tres ... Finalmente,IV
se correlaciona solo con el últimoV4
,. Pensé que ese tipo de "clasificación" es quizás lo que buscas ?Sin embargo, el problema con la descomposición de Cholesky es que, a diferencia de PCA, depende del orden de los elementos en la matriz R. Bueno, puede ordenar los elementos en orden descendente o ascendente de la suma de elementos al cuadrado (o, si lo desea , suma de elementos absolutos, o en orden de coeficiente de correlación múltiple (ver más abajo). Este orden refleja cuánto correlaciona bruto un artículo.
De la última matriz B vemos que
V2
, el ítem más correlacionado, empeña todas sus correlacionesI
. El siguiente elemento extremadamente correlacionadoV1
empeña toda su correlación, excepto que conV2
, enII
; y así.Otra decisión podría ser calcular el coeficiente de correlación múltiple para cada elemento y clasificación según su magnitud. La correlación múltiple entre un elemento y todos los demás elementos crece a medida que el elemento se correlaciona más con todos ellos, pero se correlacionan menos entre sí. Los coeficientes de correlación múltiple al cuadrado forman la diagonal de la llamada matriz de covarianza de imagen que es , donde es la matriz diagonal de los recíprocos de las diagonales de .SR−1S−2S+R S R−1
fuente
Aquí está mi solución al problema. Calculo todas las combinaciones posibles de k de n elementos y calculo sus dependencias mutuas transformando el problema en un gráfico teórico: ¿Cuál es el gráfico completo que contiene todos los k nodos con la suma de bordes más pequeña (dependencias)? Aquí hay un script de Python que usa la biblioteca networkx y una salida posible. ¡Por favor, discúlpese por cualquier ambigüedad en mi pregunta!
Código:
Salida de muestra:
Gráfico de entrada:
Gráfico de solución:
Para un ejemplo de juguete, k = 4, n = 6: Gráfico de entrada:
Gráfico de solución:
Mejor,
cristiano
fuente
Encuentre de elementos con la menor correlación por pares: dado que una correlación de digamos explica de la relación entre dos series, tiene más sentido minimizar la suma de los cuadrados de correlaciones para sus elementos objetivo . Aquí está mi solución simple.k n 0.6 0.36 k
Reescribe tu matriz de correlaciones en una matriz de cuadrados de correlaciones. Suma los cuadrados de cada columna. Eliminar la columna y la fila correspondiente con la mayor suma. Ahora tiene una matriz . Repita hasta que tenga una matriz . También podría mantener las columnas y las filas correspondientes con las sumas más pequeñas. Al comparar los métodos, encontré en una matriz con y que solo dos elementos con sumas cercanas se mantuvieron y eliminaron de manera diferente.n×n (n−1)×(n−1) k×k k n=43 k=20
fuente