Learn R Programming

filling (version 0.2.4)

fill.SVT: Singular Value Thresholding for Nuclear Norm Optimization

Description

fill.SVT is an iterative updating scheme for Nuclear Norm Minimization problem. An unconstrained parahrase of the problem introduced in fill.nuclear is $$\mathrm{minimize}\quad \frac{1}{2}\|P_{\Omega}(X-A) \|_F^2 + \lambda \| X \|_*$$ where \(P_{\Omega}(X)=X_{ij}\) if it is observed, or \(0\) otherwise. It performs iterative shrinkage on newly computed singular values.

Usage

fill.SVT(A, lambda = 1, maxiter = 100, tol = 0.001)

Value

a named list containing

X

an \((n\times p)\) matrix after completion.

Arguments

A

an \((n\times p)\) partially observed matrix.

lambda

a regularization parameter.

maxiter

maximum number of iterations to be performed.

tol

stopping criterion for an incremental progress.

References

cai_singular_2010filling

See Also

fill.nuclear

Examples

Run this code
if (FALSE) {
## load image data of 'lena128'
data(lena128)

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

## apply the method
fill1 <- fill.SVT(A, lambda=0.1)
fill2 <- fill.SVT(A, lambda=1.0)
fill3 <- fill.SVT(A, lambda=20)

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

Run the code above in your browser using DataLab