Vectorisation (mathématiques)

En mathématiques, et plus particulièrement en algèbre linéaire et en théorie des matrices la vectorisation d'une matrice est une transformation linéaire qui convertit cette matrice en un vecteur. Plus précisément, la vectorisation d'une matrice A de dimension , notée , est le vecteur colonne de dimension obtenu en empilant les colonnes de la matrice A les unes au-dessous des autres : Ici, représente l'élément situé à la i-ième ligne et à la j-ième colonne de A, et l'exposant désigne la transposition. En d'autres termes, est un vecteur contenant les éléments de A ordonnés colonne par colonne.

La vectorisation exprime, au moyen de coordonnées, l'isomorphisme entre ces espaces (c'est-à-dire entre l'espace des matrices et celui des vecteurs) en tant qu'espaces vectoriels.

Par exemple, pour la matrice , la vectorisation est

Le lien entre la vectorisation d'une matrice A et celle de sa transposée est établi par la matrice de commutation (en).

Compatibilité avec le produit de Kronecker

modifier

La vectorisation est fréquemment utilisée conjointement avec le produit de Kronecker pour exprimer la multiplication matricielle sous la forme d'une transformation linéaire agissant sur des matrices. En particulier,

pour des matrices A, B et C de dimensions respectives k×l, l×m et m×n[note 1]. Par exemple, si (l'endomorphisme adjoint de l'algèbre de Lie gl(n, C) constituée de toutes les matrices n×n à coefficients complexes), alors

où désigne la matrice identité n×n. Il existe deux autres formulations utiles :

Si B est une matrice diagonale (c'est-à-dire ), la vectorisation peut s'écrire à l'aide du produit de Kronecker colonne par colonne (voir produit de Khatri-Rao (en)) et de la diagonale principale de B :

Plus généralement, il a été démontré que la vectorisation constitue une foncteur adjoint au sein de la structure monoïdale fermée de toute catégorie de matrices[1].

Compatibilité avec les produits de Hadamard

modifier

La vectorisation est un homomorphisme d'algèbres de l'espace des matrices n × n, muni du produit matriciel de Hadamard (produit terme à terme), vers Cn2, lui aussi muni de son produit de Hadamard :

Compatibilité avec les produits scalaires

modifier

La vectorisation est une transformation unitaire de l'espace des matrices — muni du produit scalaire de Frobenius (ou de l'opérateur de Hilbert-Schmidt (en)) — vers  :

où l'exposant désigne la matrice adjointe.

Vectorisation sous forme de somme linéaire

modifier

L'opération de vectorisation d'une matrice peut s'exprimer sous la forme d'une somme linéaire. Soit X une matrice de dimension m × n que l'on souhaite vectoriser, et soit ei le i-ième vecteur de la base canonique de l'espace de dimension n, c'est-à-dire . Soit Bi une matrice par blocs de dimension (mn) × m, définie comme suit :

La matrice Bi est composée de n blocs de taille m × m, empilés verticalement ; tous ces blocs sont nuls, à l'exception du i-ième, qui correspond à la matrice identité Im de taille m × m.

La version vectorisée de X peut alors s'exprimer comme suit :

La multiplication de X par ei permet d'extraire la i-ième colonne, tandis que la multiplication par Bi la place à la position souhaitée dans le vecteur final. Par ailleurs, la somme linéaire peut s'exprimer à l'aide du produit de Kronecker :

Demi-vectorisation

modifier

Pour une matrice symétrique A, le vecteur vec(A) contient davantage d'informations qu'il n'est strictement nécessaire, car la matrice est entièrement déterminée par sa symétrie et par sa partie triangulaire inférieure — c'est-à-dire les n(n + 1)/2 éléments situés sur la diagonale principale et en dessous de celle-ci. Pour de telles matrices, la demi-vectorisation s'avère parfois plus utile que la vectorisation. La demi-vectorisation, notée vech(A), d'une matrice symétrique A de dimension n × n, est le vecteur colonne de dimension n(n + 1)/2 × 1 obtenu en vectorisant uniquement la partie triangulaire inférieure de A :

Par exemple, pour la matrice 2×2 , la demi-vectorisation est .

Il existe des matrices uniques permettant de passer de la demi-vectorisation d'une matrice à sa vectorisation, et inversement. Elles sont appelées matrices de duplication et d'élimination (en).

Langage de programmation

modifier

Les langages de programmation qui implémentent des matrices peuvent offrir des moyens simples de vectorisation. Dans Matlab/GNU Octave, une matrice A peut être vectorisée à l'aide de A(:). GNU Octave permet également la vectorisation et la « demi-vectorisation » respectivement via vec(A) et vech(A). Le langage Julia propose aussi la fonction vec(A). En Python, les tableaux NumPy disposent de la méthode flatten[note 1], tandis qu'en R, le résultat souhaité peut être obtenu via les fonctions c() ou as.vector(), ou, de manière plus efficace, en supprimant l'attribut de dimension d'une matrice A à l'aide de dim(A) <- NULL. Dans le langage de programmation R la fonction vec() du paquet « ks » permet la vectorisation, tandis que la fonction vech() — implémentée à la fois dans les paquets « ks » et « sn » — permet la demi-vectorisation[2],[3],[4].

Applications

modifier

La vectorisation est utilisée dans le calcul matriciel et ses applications, notamment pour déterminer les moments de vecteurs et de matrices aléatoires, étudier les propriétés asymptotiques, ainsi que pour calculer des matrices jacobiennes et hessiennes[5]. Elle est également employée dans l'analyse de sensibilité locale et les diagnostics statistiques[6].

Notes et références

modifier
  1. 1 2 L'identité correspondant à une vectorisation ligne par ligne (ordre lexicographique des indices) est

Références

modifier
  1. ↑ (en) H. D. Macedo et J. N. Oliveira, « Typing Linear Algebra: A Biproduct-oriented Approach », Science of Computer Programming, vol. 78, no 11,‎ , p. 2160–2191 (DOI 10.1016/j.scico.2012.07.012, arXiv 1312.4818)
  2. ↑ (en) Duong Tarn, « ks: Kernel Smoothing », R package version 1.11.0,
  3. ↑ (en) Azzalini Adelchi, « The R package 'sn': The Skew-Normal and Related Distributions such as the Skew-t », R package version 1.5.1,
  4. ↑ (en) Hrishikesh D. Vinod, Hands-on Matrix Algebra Using R: Active and Motivated Learning with Applications, World Scientific, , 233–248 p. (ISBN 978-981-4313-69-8), « Simultaneous Reduction and Vec Stacking »
  5. ↑ (en) Jan Magnus et Heinz Neudecker, Matrix differential calculus with applications in statistics and econometrics, John Wiley, (ISBN 978-1-119-54120-2)
  6. ↑ (en) Liu Shuangzhe, Victor Leiva et Dan Zhuang, « Matrix differential calculus with applications in the multivariate linear model and its diagnostics », Journal of Multivariate Analysis, vol. 188,‎ (DOI 10.1016/j.jmva.2021.104849)