The text of DEMO program S.Funk

## Generalized Non-negative Matrix FactorizationThere is no shortage of algorithms for non-negative matrix factorization, however, most of them do not provide support for hidden elements and for multiple elements in each matrix cell.In general case we may not know all elements of the matrix and also have multiple elements for a particular cell. Let us look at the data below. It is 3d matrix that has 3 layers, so we have 3 elements for each row-column combination, but there are two row-column combinations, for which we do not have data at all. But we still want to find decomposition in a form of two matrices, that being multiplied produce some product close to each of these layers.
With suggested under link at the top algorithm we found cofactors and the product of them shown below.
Negative value in the right cofactor is simple computational inaccuracy. It can be corrected by reduction of learning rate parameter. The credit goes to someone under name S.Funk, who published this procedure several years ago for two dimensional matrices, and my role is reduced to generalization it into 3d matrices. The impressive part of this algorithm is that (at the core) it needs only few lines of code. Andrew Polar, Jan, 2017. |