Expand matrix columns into linear, square, and unique product columns.
vector or matrix. If a vector, it will be converted to a column matrix. If it is desired that the squares and products of a vector are computed, pass rbind(X) instead of X, and thereby pass a row matrix.
Binary function which forms the products of the columns. By default, this is '*', but other commuting operators or kernels can be used if desired.
Options for FUN. Not needed if FUN doesn't have options.
Form a matrix with columns composed of into linear, square, and product columns:
[X | FUN(X[,i], X[,j])]
where i, j are the unique combinations of i and j, including i=j.
By default, the function used to form the squares and products, FUN, is just conventional multiplication = '*', but any commuting binary operator can be used.
This particular expansion is often applied in
General Method of Data Handling (GMDH).
Nonlinear Slow Feature Analysis (SFA). Performing
a multivariate polynomial of second degree expansion
in all the features, then
performing linear SFA on the resulting expanded
feature matrix, is a very common approach, and in fact
is the default method in
[X,X^2,unique products of columns of X]. The unique products are in row major upper right triangular order. Thus, for X with columns 1:3, the order is
X[,1]^2, X[,2]^2, X[,3]^2, X[,1]*X[,2], X[,1]*X[,3], X[,2]*X[,3]
1 2 3
# # Examples # eQuad(1:5) # eQuad(matrix(1:12,ncol=3),FUN=`+`)