5 votos

PCA: Cómo seleccionar un conjunto más pequeño de las características originales que representen mejor la primera PC con una contribución mínima a las otras PC

He realizado un ACP sobre una matriz de covarianza. Tengo 24 características originales y, sujeto a algunas restricciones sobre las características que se utilizan, me gustaría elegir la combinación de características que mejor representen el primer PC, es decir, elegir un conjunto más pequeño de características originales para representar el PC1 con una contribución tan pequeña a los otros componentes como sea posible.

La solución óptima es, por supuesto, el 1er PC en sí mismo, pero digamos que quiero limitarme a un subconjunto de las características originales, ¿cuál debo elegir y cómo calcular los ratios?

Esto se puede hacer de forma aproximada/visual mirando la contribución relativa de cada característica a cada PC y seleccionando sólo aquellas que sólo tienen contribución neta al primer PC y 0 a cualquier otro PC, pero ¿qué otras formas de hacerlo existen?

Por ejemplo, a partir de lo que se muestra a continuación, se podría decir aproximadamente que la elección de las características 1 y 24 se aproximará a PC1 sin contribuir a PC2, pero sí a PC3... estaba buscando una forma sistemática de hacer esta elección dada y una lista fija de características para elegir.

enter image description here

0 votos

En general, está mal visto modificar la pregunta de forma que invalide la respuesta de un usuario. Sin embargo, ahora tengo una idea general de lo que está tratando de hacer y voy a sugerir un enfoque de aprendizaje automático cuando el tiempo para volver a publicar una segunda respuesta

0 votos

Gracias, estaba dudando en enmendar, pero tenías razón en que estaba mal redactado para empezar, así que espero que a largo plazo la enmienda (+ respuestas útiles) ayude a otros.

1 votos

Tómate también el tiempo de leer mi respuesta a un concepto similar: quant.stackexchange.com/questions/44140/pca-for-risk-bucketing/ y ver si ese tipo de idea es de valor para usted, es muy similar (no necesariamente exactamente lo mismo) a lo que sugeriría aquí..

3voto

dotnetcoder Puntos 1262

Lo que describes no es matemáticamente plausible.

En primer lugar, pero menos importante, un PC es un vector normalizado (un vector propio), lo que significa que si tiene más de un elemento distinto de cero siempre será menor que uno. Por supuesto, se puede escalar el PC, pero técnicamente cualquier característica nunca valdrá uno en la dirección del PC a menos que cualquier otra característica tiene un peso cero en ese mismo PC.

En segundo lugar, y muy importante, PCA es una transformación de base de coordenadas, lo que significa que si su espacio original es realmente de 24 dimensiones (la matriz de covarianza tiene rango 24), nunca devolverá una descomposición PCA con lo que usted requiere.

Como ejemplo, suponga que obtiene una descomposición PCA del siguiente espacio de 4 dimensiones que satisface sus requisitos para las características 1 y 2 (éstas son escaladas, no ortonormales):

      PC1   PC2   PC3   PC4
f1    1     0     0     0
f2    1     0     0     0
f3    1     -1    -1    0
f4    1     1     -1    0

Esto no define una base de 4 dimensiones para sus instrumentos originales. Lo que te dice de hecho es que tu espacio original era linealmente dependiente. Las características 1 y 2 son linealmente dependientes - están idénticamente correlacionadas. En términos de la matriz de correlación se verá forzosamente así (donde * no son 1):

1 1 * *
1 1 * *
* * 1 *
* * * 1

Esto, por supuesto, tiene implicaciones para lo que está pidiendo, los instrumentos con mayor correlación tienen más probabilidades de ajustarse a sus necesidades.

Sin embargo, consideremos la siguiente matriz de covarianza (de rango 2):

   1 1 0 0 
   1 1 0 0 
   0 0 2 2 
   0 0 2 2 

Esto representa 4 instrumentos, 2 de los cuales son linealmente dependientes, pero completamente no correlacionados con los otros 2, que a su vez son linealmente dependientes. Me atrevería a decir que el ACP lo es:

    PC1  PC2  PC3  PC4 
f1  0    1    0    0
f2  0    1    0    0
f3  1    0    0    0
f4  1    0    0    0

Así que probablemente se puede formular algún tipo de problema de minimización asociado a su pregunta planteada y devolver algunas características, pero en el contexto de lo anterior sospecho que todo lo que está haciendo es encontrar las dependencias lineales más fuertes.

Sin embargo, mi instinto me dice que está haciendo la pregunta equivocada, ya que creo que la respuesta no iluminará lo que usted espera ver. ¿Qué es lo que está tratando de visualizar en sus datos y tal vez hay una mejor manera ...

0 votos

Disculpas, la pregunta estaba mal formulada. Me gustaría saber cómo puedo seleccionar un conjunto más pequeño de las características originales que más contribuyen a la primera PC, pero con la menor contribución posible a las otras PC. Es decir, la solución óptima sería seleccionar todas las características originales en las proporciones de la primera PC; pero digamos que quiero limitarme a un subconjunto de las características originales, cuál debería elegir y cómo calcular las proporciones.

2voto

John Rennie Puntos 6821

Para responder a su pregunta sobre el mejor representación 1D de un conjunto de vectores , te sugiero que vuelvas a la sensación que quieres dar a " la mejor representación ":

  • debe saber que el PCA ( análisis de componentes principales ) busca combinaciones lineales de sus vectores iniciales para explican la mayor fracción de su varianza
  • pero podría utilizar ICA ( análisis de componentes independientes ) si quiere obtener el vector más no gaussiano
  • De hecho, con las modernas herramientas de optimización que se han desarrollado para el aprendizaje automático, se podría incluso diseñe las características que desee de cualquier combinación (no) lineal de sus vectores y obtener un "mejor componente representativo" en su sentido personalizado.

En realidad, la cuestión principal es: ¿por qué es importante para usted utilizar un criterio en lugar de otro? en el caso del ACP, puede ser porque percibe la varianza como métrica de riesgo . No es tanto el caso porque es una medida L2 simétrica.

Todo esto para concluir que puedes aceptar no abastecer tanto a un PCA regular, y añadir a sus componentes un poco de requisito de escasez . Es el tema de esta tesis doctoral: Interacciones entre el rango y la dispersión en la estimación penalizada por P.-A. Savalle. En la tesis de Pierre-André encontrará toda la matemática necesaria.

Para su caso concreto, podría completar el criterio estándar del PCA

$$\max_{P_1,\ldots,P_{24}} \mathbb{E} \sum_n \| P_n^T F \|^2$$

añadiendo restricciones a la dispersión de los componentes principales, como

$$\forall n> 1,\; \sum_d 1_{|P_{nd}|>0} \leq \rho_d.$$

Esto significa que le pides al optimizador que no tenga más que $\rho_d$ componentes no nulos en el $n$ componente del PCA (para todos los componentes que no sean el primero, por supuesto).

2voto

dotnetcoder Puntos 1262

Para ser honesto, no creo que lo que está haciendo sea particularmente útil, y creo que incluso puede ser engañoso a efectos de gestión de riesgos. Pero con ese descargo de responsabilidad fuera del camino, ¿qué hay de esto...

Con su pregunta actualizada, ahora estamos en condiciones de formular sus requisitos, matemáticamente.

Dejemos que $E=[e_1:e_2:...:e_n]$ sea su matriz de vectores propios donde $e_1$ es el primer PC, $e_2$ el segundo, etc.
Está buscando un vector binario, $b$ que contiene 0 y 1, representando la exclusión, o la inclusión, de una característica sujeta a las siguientes restricciones:

1) La contribución neta de otros PC es cero: $b^Te_i=0 \quad \forall \quad i\ne1$
2) La contribución neta a PC1 es proporcional al número de características que contribuyen: $b^Te_1 = \alpha b^T \delta$

La segunda restricción garantiza que no se seleccionen instrumentos que sean representativos de PC1 de alguna manera.

Como no se puede encontrar esto con precisión, se puede introducir una función de pérdida que gobierne si una solución es mejor que otra. Incluso puede ponderar ( $w_i$ ) consideraciones más importantes para que en conjunto se tenga la función objetivo:

$$ \min_b f(b) = \sum_{i\ne1} | w_i b^T e_i | + w_1 b^T |e_i - \alpha \delta|$$

Para 24 instrumentos en los que se incluye uno ( $b_i=1$ ) o excluido ( $b_i=0$ ) da lugar a $2^24=16mm$ que es un poco demasiado para un bucle nativo de python (habría que optimizarlo), pero puede manejar 15 instrumentos en un segundo:

import numpy as np
import itertools

n = 15
generator = itertools.product([0, 1], repeat=n)

E = np.random.randn(n,3)
w = np.array([1,1,1])
d = np.ones(n)
alpha = 1 / np.sqrt(n)

B = np.zeros(shape=(n, 2**n))
for i, combination in enumerate(generator):
    B[:, i] = np.array(combination)

def objective_function(b, w, E, d, alpha):
    return np.sum(np.abs(np.einsum('i,ij->j', b, E[:, 1:])) * w[1:]) \
           + w[0] * np.dot(b, np.abs(E[:,0] - alpha * d))

def loop(B,w,E,d,alpha):
    f_min = 999999999
    b_min = np.zeros(n)
    for i in range(2**n):
        b = B[:, i]
        f = objective_function(b, w, E, d, alpha)
        if f < f_min and np.sum(b) > 0.001:
            f_min = f
            b_min = combination
    return (f_min, b_min)

print(loop(B, w, E, d, alpha))

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X