dNTF {dcTensor}R Documentation

Discretized Non-negative CP Decomposition Algorithms (dNTF)

Description

This function is the discretized version of nnTensor::NTF. The input data X is assumed to be a non-negative tensor and decomposed to a product of a diagonal core tensor (S) and low-dimensional factor matrices (A_k, k=1..K). Unlike regular NTF, in dNTF, each A_k is estimated by adding binary regularization so that the values are 0 or 1 as much as possible. Likewise, each A_k are estimated by adding ternary regularization so that the values are 0, 1, or 2 as much as possible.

Usage

dNTF(X, M=NULL, pseudocount=.Machine$double.eps,
    initA=NULL, fixA=FALSE,
    Bin_A=rep(1e-10, length=length(dim(X))),
    Ter_A=rep(1e-10, length=length(dim(X))),
    L1_A=rep(1e-10, length=length(dim(X))),
    L2_A=rep(1e-10, length=length(dim(X))),
    rank = 3,
    algorithm = c("Frobenius", "KL", "IS", "Beta"),
    init = c("dNMF", "Random"),
    Beta = 2, thr = 1e-10, num.iter = 100, viz = FALSE, figdir = NULL,
    verbose = FALSE)

Arguments

X

K-order input tensor which has I_1, I_2, ..., and I_K dimensions.

M

K-order mask tensor which has I_1, I_2, ..., and I_K dimensions. If the mask tensor has missing values, specify the element as 0 (otherwise 1).

pseudocount

The pseudo count to avoid zero division, when the element is zero (Default: Machine Epsilon).

initA

A list containing the initial values of K factor matrices (A_k, <Ik*Jk>, k=1..K, Default: NULL).

fixA

Whether the factor matrices Ak are updated in each iteration step (Default: FALSE).

Bin_A

A K-length vector containing the paramters for binary (0,1) regularitation (Default: rep(1e-10, length=length(dim(X)))).

Ter_A

A K-length vector containing the paramters for terary (0,1,2) regularitation (Default: rep(1e-10, length=length(dim(X)))).

L1_A

A K-length vector containing the paramters for L1 regularitation (Default: rep(1e-10, length=length(dim(X)))). This also works as small positive constant to prevent division by zero, so should be set as 0.

L2_A

A K-length vector containing the paramters for L2 regularitation (Default: rep(1e-10, length=length(dim(X)))).

rank

The number of low-dimension in each mode (Default: 3).

algorithm

dNTF algorithms. "Frobenius", "KL", "IS", and "Beta" are available (Default: "Frobenius").

init

The initialization algorithms. "dNMF", and "Random" are available (Default: "dNMF").

Beta

The parameter of Beta-divergence.

thr

When error change rate is lower than thr1, the iteration is terminated (Default: 1E-10).

num.iter

The number of interation step (Default: 100).

viz

If viz == TRUE, internal reconstructed tensor can be visualized.

figdir

the directory for saving the figure, when viz == TRUE (Default: NULL).

verbose

If verbose == TRUE, Error change rate is generated in console windos.

Value

S : K-order tensor object, which is defined as S4 class of rTensor package. A : A list containing K factor matrices. RecError : The reconstruction error between data tensor and reconstructed tensor from S and A. TrainRecError : The reconstruction error calculated by training set (observed values specified by M). TestRecError : The reconstruction error calculated by test set (missing values specified by M). RelChange : The relative change of the error.

Author(s)

Koki Tsuyuzaki

References

Andrzej CICHOCKI et. al., (2007). Non-negative Tensor Factorization using Alpha and Beta Divergence. IEEE ICASSP 2007

Anh Huy PHAN et. al., (2008). Multi-way Nonnegative Tensor Factorization Using Fast Hierarchical Alternating Least Squares Algorithm (HALS). NOLTA2008

Andrzej CICHOCKI et. al., (2008). Fast Local Algorithms for Large Scale Nonnegative Matrix and Tensor Factorizations. IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences

See Also

plotTensor3D

Examples

tensordata <- toyModel(model = "dNTF")
out <- dNTF(tensordata, rank=3, num.iter=2)

[Package dcTensor version 1.3.0 Index]