Dada una matriz M, quiero encontrar una matriz ortogonal U que maximice el número de entradas que son cero en el producto MU. ¿Cómo puedo hacerlo?
Respuesta
¿Demasiados anuncios?Por lo que sé, el problema de encontrar el maximizador U será un problema difícil y probablemente intratable.
Sin embargo, si se cambia la noción de escasez, existen métodos razonables. Estas nociones alternativas de escasez dicen que una matriz es escasa si tiene muchas entradas de valor absoluto pequeño. Para hacer un problema de maximización, hay que crear una función que mida la dispersión y esperar que se preste a un problema de optimización manejable.
Un método que he utilizado es el algoritmo Varimax (puedes buscarlo en Google, hay mucho escrito sobre él). Este método mide la dispersión de una matriz calculando la varianza de los cuadrados de las entradas de la matriz. Si todas las entradas son de tamaño similar, esta varianza será pequeña. Si muchas de las entradas tienen un valor absoluto pequeño, esta varianza será grande. Por lo tanto, al maximizar esta varianza se maximiza una noción razonable de dispersión. El algoritmo Varimax es un método iterativo que encuentra un máximo local para esta varianza sobre el conjunto de MU donde U es ortogonal.
Hay otros algoritmos por ahí (Promax, Quartimax, etc, etc) que no he utilizado, pero deduzco que son simples variaciones del algoritmo Varimax para una función objetivo diferente. En todos estos casos se trata de encontrar la rotación máxima dispersa de la matriz dada.
Por último, si la matriz M que se introduce en estos algoritmos tiene una buena razón para ser dispersa, en la práctica resulta que muchas de las entradas acabarán siendo cero a la primera. Así que para muchas aplicaciones del mundo real esto hace un trabajo bastante bueno.
Todos estos métodos son una pequeña parte de una gran clase de técnicas estadísticas que se engloban bajo el título de "análisis factorial". Si buscas en Google el análisis factorial, probablemente encontrarás un montón de cosas útiles.