fill.nuclear {filling}R Documentation

Low-Rank Completion with Nuclear Norm Optimization

Description

In many circumstances, it is natural to assume that there exists an underlying low-rank structure. The assumption of low-rank property leads to an optimization problem for matrix completion problem,

\mathrm{minimize}\quad rank(X)

\mathrm{s.t}~~ X_{ij}=A_{ij} ~~\mathrm{for}~~ A_{ij} \in E

where A_{ij}\in E means the (i,j)-th entry of data matrix A is not missing. The objective function can be further relaxed by nuclear norm

\|X\|_* = \sum \sigma_i(X)

where \sigma_i (X) is i-th singular value of the matrix X. Note that for modeling purpose, we adopted closeness parameter tolerance for equality constraint. CVXR package was used in implementation. Computational efficiency may not be guaranteed for large data matrix.

Usage

fill.nuclear(A, tolerance = 0.001)

Arguments

A

an (n\times p) partially observed matrix.

tolerance

level of tolerance for entrywise equality condition.

Value

a named list containing

X

an (n\times p) matrix after completion.

norm

solution of the minimization problem; approximate rank.

cvxr.status

“optimal” denotes the problem was solved. See psolve for more details on solvability.

cvxr.niters

the number of iterations taken.

cvxr.solver

type of solver used by CVXR.

References

Candès EJ, Recht B (2009). “Exact Matrix Completion via Convex Optimization.” Foundations of Computational Mathematics, 9(6), 717–772. ISSN 1615-3375, 1615-3383.

Examples

## Not run: 
## load image data of 'lena64'
data(lena64)

## transform 5% of entries into missing
A <- aux.rndmissing(lena64, x=0.05)

## apply the method
filled <- fill.nuclear(A)

## visualize
opar <- par(no.readonly=TRUE)
par(mfrow=c(1,2), pty="s")
image(A, col=gray((0:100)/100), axes=FALSE, main="5% missing")
image(filled$X, col=gray((0:100)/100), axes=FALSE, main="processed")
par(opar)

## End(Not run)


[Package filling version 0.2.3 Index]