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 |
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)