wide-product implements a partial, column-wise Khatri-Rao product. It is fast, and works on sparse matrices.
It can be useful for engineering of cross-features for machine learning.
For a pair of scalars (~ one by one matrices), the wide product is multiplication:
wide_product ( [[a]], [[b]] ) == [[a * b]]
Where matrices are constructed by vertical stacking, the product is row-wise:
wide_product ( vstack((A, B)), vstack((C, D)) ) == vstack((wide_product(A, C), wide_product(B, D)))
Where matrices are constructed by horizontal stacking, the product contains all the products of the subcomponents up to permutation of columns:
wide_product ( hstack((A, B)), hstack((C, D)) ) == hstack((wide_product(A, C), wide_product(A, D), wide_product(B, C), wide_product(B, D)))
pip install wide-product
To build the module:
python setup.py build
PYTHONPATH=$(echo build/lib*):. py.test
pip install .