Khatri-Rao Product: Nonlinear Function
Created: October 25, 2020
Modified: February 25, 2022

Khatri-Rao Product

This page is from my personal notes, and has not been specifically reviewed for public consumption. It might be incomplete, wrong, outdated, or stupid. Caveat lector.
  • This is a block Kronecker product.
  • Given block matrices
    A=(A11A12A21A22)\mathbf{A} = \begin{pmatrix} \mathbf{A}_{11}& \mathbf{A}_{12}\\ \mathbf{A}_{21} & \mathbf{A}_{22} \end{pmatrix}
B=(B11B12B21B22)\mathbf{B} = \begin{pmatrix} \mathbf{B}_{11}& \mathbf{B}_{12}\\ \mathbf{B}_{21} & \mathbf{B}_{22} \end{pmatrix}

their product is

AB=(A11B11A12B12A21B21A22B22)\mathbf{A}\star\mathbf{B} = \begin{pmatrix} \mathbf{A}_{11} \otimes \mathbf{B}_{11}& \mathbf{A}_{12} \otimes \mathbf{B}_{12}\\ \mathbf{A}_{21}\otimes \mathbf{B}_{21} & \mathbf{A}_{22}\otimes \mathbf{B}_{22} \end{pmatrix}
  • Unlike the Kronecker product, the Khatri-Rao product is commutative at the outer level (though it is non-commutative overall because the Kronecker product is). Instead of constructing this 2x2 block matrix, we could have built the 4x4 block matrix that contains all pairwise Kronecker products, i.e., a 'double Kronecker product'. This is called the Tracy-Singh product; it is just the Kronecker product applied at the block level:
AB=(A11BA1nBAm1BAmnB)\mathbf{A} \otimes \mathbf{B} = \begin{pmatrix}A_{11} \otimes \mathbf{B} & \ldots & A_{1n} \otimes \mathbf{B} \\ \vdots & & \vdots\\ A_{m1}\otimes \mathbf{B} & \ldots & A_{mn} \otimes\mathbf{B} \end{pmatrix}
  • By contrast we can think of the Khatri-Rao product as an 'elementwise' Kronecker product, generalizing the elementwise product of two non-block matrices:
    AB=(a11b11a12b12a21b21a22b22)A * B = \begin{pmatrix}a_{11}b_{11} & a_{12}b_{12}\\a_{21}b_{21} & a_{22}b_{22}\end{pmatrix}
  • Put differently, the Khatri-Rao product picks out the 'obvious' sub-block from each outer block of the Tracy-Sign product.