View source: R/get_pcp_defaults.R
get_pcp_defaults | R Documentation |
get_pcp_defaults()
calculates "default" PCP parameter settings lambda
,
mu
(used in root_pcp()
), and eta
(used in rrmc()
) for a given data
matrix D
.
The "default" values of lambda
and mu
offer theoretical guarantees
of optimal estimation performance. Candès et al. (2011) obtained the
guarantee for lambda
, while
Zhang et al. (2021)
obtained the result for mu
. It has not yet been proven whether or
not eta
enjoys similar properties.
In practice it is common to find different optimal parameter values
after tuning these parameters in a grid search. Therefore, it is
recommended to use these defaults primarily to help define a reasonable
initial parameter search space to pass into grid_search_cv()
.
get_pcp_defaults(D)
D |
The input data matrix. |
A list containing:
lambda
: The theoretically optimal lambda
value used in root_pcp()
.
mu
: The theoretically optimal mu
value used in root_pcp()
.
eta
: The default eta
value used in rrmc()
.
root_pcp()
's objective function is given by:
\min_{L, S} ||L||_* + \lambda ||S||_1 + \mu ||L + S - D||_F
lambda
controls the sparsity of root_pcp()
's output S
matrix;
larger values of lambda
penalize non-zero entries in S
more
stringently, driving the recovery of sparser S
matrices. Therefore,
if you a priori expect few outlying events in your model, you might
expect a grid search to recover relatively larger lambda
values, and
vice-versa.
mu
adjusts root_pcp()
's sensitivity to noise; larger values of mu
penalize errors between the predicted model and the observed data (i.e.
noise), more severely. Environmental data subject to higher noise levels
therefore require a root_pcp()
model equipped with smaller mu
values
(since higher noise means a greater discrepancy between the observed
mixture and the true underlying low-rank and sparse model). In virtually
noise-free settings (e.g. simulations), larger values of mu
would be
appropriate.
rrmc()
's objective function is given by:
\min_{L, S} I_{rank(L) \leq r} + \eta ||S||_0 + ||L + S - D||_F^2
eta
controls the sparsity of rrmc()
's output S
matrix, just as
lambda
does for root_pcp()
. Because there are no other parameters
scaling the noise term, eta
can be thought of as a ratio between
root_pcp()
's lambda
and mu
: Larger values of eta
will place a
greater emphasis on penalizing the non-zero entries in S
over penalizing
the errors between the predicted and observed data (the dense noise Z
).
lambda
is calculated as \lambda = 1 / \sqrt{\max(n, p)},
where
n
and p
are the dimensions of the input matrix
D_{n \times p}
Candès et al. (2011).
mu
is calculated as \mu = \sqrt{\frac{\min(n, p)}{2}},
where
n
and p
are as above
[Zhang et al. (2021)].
eta
is simply \eta = \frac{\lambda}{\mu}
.
Candès, Emmanuel J., Xiaodong Li, Yi Ma, and John Wright. "Robust principal component analysis?." Journal of the ACM (JACM) 58, no. 3 (2011): 1-37.
Zhang, Junhui, Jingkai Yan, and John Wright. "Square root principal component pursuit: tuning-free noisy robust matrix recovery." Advances in Neural Information Processing Systems 34 (2021): 29464-29475. [available here]
grid_search_cv()
# Examine the queens PM2.5 data
queens
# Get rid of the Date column
D <- as.matrix(queens[, 2:ncol(queens)])
# Get default PCP parameters
default_params <- get_pcp_defaults(D)
# Use default parameters to define parameter search space
scaling_factors <- sort(c(10^seq(-2, 4, 1), 2 * 10^seq(-2, 4, 1)))
etas_to_grid_search <- default_params$eta * scaling_factors
etas_to_grid_search
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.