Articulo de referencia

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 . Especí...

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 . Específicamente, la vectorización de una matriz A de m × n , denotada por vec( A ), es el vector columna de mn × 1 que se obtiene al apilar las columnas de la matriz A una encima de la otra: vector(A)=[a1,1,,ametro,1,a1,2,,ametro,2,,a1,norte,,ametro,norte]{\displaystyle \operatorname {vec} (A)=[a_{1,1},\ldots ,a_{m,1},a_{1,2},\ldots ,a_{m,2},\ldots ,a_{1,n},\ldots ,a_{m,n}]^{\mathrm {\top } }} Aquí,ai,j{\displaystyle a_{i,j}}representa el elemento en la i -ésima fila y j -ésima columna de A , y el superíndice{\displaystyle {}^{\mathrm {\top } }}denota la transpuesta . En otras palabras, vec( A ) es un vector que contiene las entradas de A en orden de columna principal .

La vectorización expresa, a través de coordenadas, el isomorfismo.Rmetro×norteRmetronorte{\displaystyle \mathbf {R} ^{m\times n}\cong \mathbf {R} ^{mn}}entre estos (es decir, de matrices y vectores) como espacios vectoriales.

Por ejemplo, para la matriz de 2×2A=[abdod]{\displaystyle A={\begin{bmatrix}a&b\\c&d\end{bmatrix}}}, la vectorización esvector(A)=[adobd]{\displaystyle \operatorname {vec} (A)={\begin{bmatrix}a\\c\\b\\d\end{bmatrix}}}.

La conexión entre la vectorización de A y la vectorización de su transpuesta viene 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 en matrices. En particular, vector(ABdo)=(doA)vector(B){\displaystyle \operatorname {vec} (ABC)=(C^{\mathrm {\top } }\otimes A)\operatorname {vec} (B)} para matrices A , B y C de dimensiones k × l , l × m y m × n . [ nota 1 ] Por ejemplo, sianuncioA(incógnita)=AincógnitaincógnitaA{\displaystyle \operatorname {ad} _{A}(X)=AX-XA}(el endomorfismo adjunto del álgebra de Lie gl( n , C ) de todas las matrices n × n con entradas complejas ), entoncesvector(anuncioA(incógnita))=(AInorteInorteA)vector(incógnita){\displaystyle \operatorname {vec} (\operatorname {ad} _{A}(X))=(A\otimes I_{n}-I_{n}\otimes A^{\mathrm {\top } }){\text{vec}}(X)}, dóndeInorte{\displaystyle I_{n}}es la matriz identidad n × n .

Existen otras dos formulaciones útiles: vector(ABdo)=(InorteAB)vector(do)=(doBIk)vector(A)vector(AB)=(ImetroA)vector(B)=(BIk)vector(A){\displaystyle {\begin{aligned}\operatorname {vec} (ABC)&=(I_{n}\otimes AB)\operatorname {vec} (C)=(C^{\mathrm {\top } }B^{\mathrm {\top } }\otimes I_{k})\operatorname {vec} (A)\\\operatorname {vec} (AB)&=(I_{m}\otimes A)\operatorname {vec} (B)=(B^{\mathrm {\top } }\otimes I_{k})\operatorname {vec} (A)\end{aligned}}}

Si B es una matriz diagonal (es decir,B=diagnóstico(b1,,bnorte){\textstyle B=\operatorname {diag} (b_{1},\dots ,b_{n})}), la vectorización se puede escribir utilizando el producto de Kronecker por columnas.{\textstyle \ast }(véase el producto Khatri-Rao ) y la diagonal principalb=[b1,,bnorte]{\textstyle b={\begin{bmatrix}b_{1},\dots ,b_{n}\end{bmatrix}}^{\mathrm {\top } }}de B : vector(ABdo)=(doA)b{\displaystyle \operatorname {vec} (ABC)=(C^{\mathrm {\top } }\ast A)b}

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 del espacio de matrices n × n con el producto de Hadamard (elemento a elemento) a C n 2 con su producto de Hadamard: vector(AB)=vector(A)vector(B).{\displaystyle \operatorname {vec} (A\circ B)=\operatorname {vec} (A)\circ \operatorname {vec} (B).}

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 : tr(AB)=vector(A)vector(B),{\displaystyle \operatorname {tr} (A^{\dagger }B)=\operatorname {vec} (A)^{\dagger }\operatorname {vec} (B),} donde el superíndice denota la transpuesta conjugada .

Vectorización como una 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 decirmii=[0,,0,1,0,,0]T{\textstyle \mathbf {e} _{i}=\left[0,\dots ,0,1,0,\dots ,0\right]^{\mathrm {T} }}. Sea B i una matriz de bloques ( mn ) × m definida de la siguiente manera: Bi=[00Imetro00]=miiImetro{\displaystyle \mathbf {B} _{i}={\begin{bmatrix}\mathbf {0} \\\vdots \\\mathbf {0} \\\mathbf {I} _{m}\\\mathbf {0} \\\vdots \\\mathbf {0} \end{bmatrix}}=\mathbf {e} _{i}\otimes \mathbf {I} _{m}}

B i consta de n matrices de bloques de tamaño m × m , apiladas por columnas, 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: vector(incógnita)=i=1norteBiincógnitamii{\displaystyle \operatorname {vec} (\mathbf {X} )=\sum _{i=1}^{n}\mathbf {B} _{i}\mathbf {X} \mathbf {e} _{i}}

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 puede expresarse utilizando el producto de Kronecker : vector(incógnita)=i=1nortemiiincógnitamii{\displaystyle \operatorname {vec} (\mathbf {X} )=\sum _{i=1}^{n}\mathbf {e} _{i}\otimes \mathbf {X} \mathbf {e} _{i}}

Semivectorizació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 sobre y debajo de la diagonal principal . Para tales matrices, la semivectorización a veces es más útil que la vectorización. La semivectorizació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 : vech(A)=[A1,1,,Anorte,1,A2,2,,Anorte,2,,Anorte1,norte1,Anorte,norte1,Anorte,norte].{\displaystyle \operatorname {vech} (A)=[A_{1,1},\ldots ,A_{n,1},A_{2,2},\ldots ,A_{n,2},\ldots ,A_{n-1,n-1},A_{n,n-1},A_{n,n}]^{\mathrm {\top } }.}

Por ejemplo, para la matriz de 2×2A=[abbd]{\displaystyle A={\begin{bmatrix}a&b\\b&d\end{bmatrix}}}, la semivectorización esvech(A)=[abd]{\displaystyle \operatorname {vech} (A)={\begin{bmatrix}a\\b\\d\end{bmatrix}}}.

Existen matrices únicas que transforman la semivectorización de una matriz en su vectorización y viceversa, denominadas 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 semivectorización con vec(A)y vech(A)respectivamente. Juliavec(A) también tiene la función. En Python, los arreglos NumPy implementan el flattenmétodo, [ nota 1 ] mientras que en R el efecto deseado se puede lograr mediante las funciones c()o as.vector()o, de manera más eficiente, eliminando el atributo de dimensiones de una matriz Acon dim(A) <- NULL. 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 semivectorizació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 aleatorias, asintótica, así como matrices jacobianas y hessianas. [ 5 ] También se utiliza en la sensibilidad local y el diagnóstico estadístico. [ 6 ]

Notas

  1. 1 2 La identidad para la vectorización por filas esvector(ABdo)=(Ado)vector(B){\displaystyle \operatorname {vec} (ABC)=(A\otimes C^{\mathrm {\top } })\operatorname {vec} (B)}.

Véase también

Referencias

  1. Macedo, HD; Oliveira, JN (2013). "Etiquetando el álgebra lineal: un enfoque orientado al biproducto". Science of Computer Programming . 78 (11): 2160– 2191. arXiv : 1312.4818 . doi : 10.1016/j.scico.2012.07.012 . S2CID 9846072 . 
  2. Duong, Tarn (2018). "ks: Suavizado de núcleo" . Paquete R versión 1.11.0 .
  3. Azzalini, Adelchi (2017). "El paquete R 'sn': La distribución sesgada normal y distribuciones relacionadas como la distribución sesgada t" . Versión del paquete R 1.5.1 .
  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 vía Google Libros .
  5. Magnus, Jan; Neudecker, Heinz (2019). Cálculo diferencial matricial con aplicaciones en estadística y econometría . Nueva York: John Wiley. ISBN 978-1-119-54120-2.
  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 su diagnóstico" . Journal of Multivariate Analysis . 188 104849. doi : 10.1016/j.jmva.2021.104849 .