stringtranslate.com

Vectorización (matemáticas)

En matemáticas , especialmente en álgebra lineal y teoría de matrices , la vectorización de una matriz es una transformación lineal que convierte la matriz en un vector . En concreto, la vectorización de una matriz A de m × n , denotada vec( A ), es el vector columna de mn × 1 obtenido apilando las columnas de la matriz A una sobre otra: Aquí, representa el elemento de la i -ésima fila y la j -ésima columna de A , y el superíndice denota la transpuesta . La vectorización expresa, a través de coordenadas, el isomorfismo entre estas (es decir, de matrices y vectores) como espacios vectoriales.

Por ejemplo, para la matriz 2×2 , la vectorización es .

La conexión entre la vectorización de A y la vectorización de su transpuesta está dada por la matriz de conmutación .

Compatibilidad con productos Kronecker

La vectorización se utiliza frecuentemente junto con el producto de Kronecker para expresar la multiplicación de matrices como una transformación lineal sobre matrices. En particular, para las matrices A , B y C de dimensiones k × l , l × m y m × n . [nota 1] Por ejemplo, si (el endomorfismo adjunto del álgebra de Lie gl( n , C ) de todas las matrices n × n con entradas complejas ), entonces , donde es la matriz identidad n × n .

Hay otras dos formulaciones útiles:

De manera más general, se ha demostrado que la vectorización es una autoadjunción en la estructura cerrada monoidal de cualquier categoría de matrices. [1]

Compatibilidad con productos Hadamard

La vectorización es un homomorfismo algebraico desde el espacio de matrices n × n con el producto Hadamard (entrada por entrada) hasta C n 2 con su producto Hadamard:

Compatibilidad con productos internos

La vectorización es una transformación unitaria del espacio de matrices n × n con el producto interno de Frobenius (o Hilbert–Schmidt ) a C n 2 : donde el superíndice denota la transpuesta conjugada .

Vectorización como suma lineal

La operación de vectorización de matrices se puede escribir en términos de una suma lineal. Sea X una matriz m × n que queremos vectorizar, y sea e i el i -ésimo vector base canónico para el espacio n -dimensional, es decir . Sea B i una matriz de bloques ( mn ) × m definida de la siguiente manera:

B i consta de n matrices de bloques de tamaño m × m , apiladas columna por columna, y todas estas matrices son todas cero excepto la i -ésima, que es una matriz identidad m × m I m .

Entonces la versión vectorizada de X se puede expresar de la siguiente manera:

La multiplicación de X por e i extrae la i -ésima columna, mientras que la multiplicación por B i la coloca en la posición deseada en el vector final.

Alternativamente, la suma lineal se puede expresar utilizando el producto de Kronecker :

Semi-vectorización

Para una matriz simétrica A , el vector vec( A ) contiene más información de la estrictamente necesaria, ya que la matriz está completamente determinada por la simetría junto con la porción triangular inferior , es decir, las n ( n + 1)/2 entradas en y debajo de la diagonal principal . Para tales matrices, la semi-vectorización es a veces más útil que la vectorización. La semi-vectorización, vech( A ), de una matriz simétrica n × n A es el vector columna n ( n + 1)/2 × 1 obtenido al vectorizar solo la parte triangular inferior de A :

Por ejemplo, para la matriz 2×2 , la semi-vectorización es .

Existen matrices únicas que transforman la semi-vectorización de una matriz en su vectorización y viceversa, llamadas, respectivamente, matriz de duplicación y matriz de eliminación .

Lenguaje de programación

Los lenguajes de programación que implementan matrices pueden tener medios sencillos para la vectorización. En Matlab / GNU Octave, una matriz Ase puede vectorizar mediante A(:). GNU Octave también permite la vectorización y la semi-vectorización con vec(A)y vech(A)respectivamente. Juliavec(A) también tiene la función . En Python, las matrices NumPy implementan el flattenmétodo, [nota 1] mientras que en R el efecto deseado se puede lograr mediante las funciones c()o as.vector(). En R , la función vec()del paquete 'ks' permite la vectorización y la función vech()implementada en ambos paquetes 'ks' y 'sn' permite la semi-vectorización. [2] [3] [4]

Aplicaciones

La vectorización se utiliza en el cálculo matricial y sus aplicaciones para establecer, por ejemplo, momentos de vectores y matrices aleatorios, asintóticas, así como matrices jacobianas y hessianas. [5] También se utiliza en sensibilidad local y diagnósticos estadísticos. [6]

Notas

  1. ^ ab La identidad para la vectorización por filas principales es .

Véase también

Referencias

  1. ^ Macedo, HD; Oliveira, JN (2013). "Tipificación de álgebra lineal: un enfoque orientado a biproductos". Ciencia de la programación informática . 78 (11): 2160–2191. arXiv : 1312.4818 . doi :10.1016/j.scico.2012.07.012. S2CID  9846072.
  2. ^ Duong, Tarn (2018). "ks: Kernel Smoothing". Versión del paquete R 1.11.0 .
  3. ^ Azzalini, Adelchi (2017). "El paquete R 'sn': la distribución Skew-Normal y distribuciones relacionadas como Skew-t". Versión 1.5.1 del paquete R.
  4. ^ Vinod, Hrishikesh D. (2011). "Reducción simultánea y apilamiento de vectores". Álgebra matricial práctica con R: aprendizaje activo y motivado con aplicaciones . Singapur: World Scientific. págs. 233–248. ISBN 978-981-4313-69-8– a través de Google Books .
  5. ^ Magnus, Jan; Neudecker, Heinz (2019). Cálculo diferencial matricial con aplicaciones en estadística y econometría . Nueva York: John Wiley. ISBN 9781119541202.
  6. ^ Liu, Shuangzhe; Leiva, Victor; Zhuang, Dan; Ma, Tiefeng; Figueroa-Zúñiga, Jorge I. (marzo de 2022). "Cálculo diferencial matricial con aplicaciones en el modelo lineal multivariado y sus diagnósticos". Journal of Multivariate Analysis . 188 : 104849. doi : 10.1016/j.jmva.2021.104849 .