get_pcp_defaults {pcpr} | R Documentation |
Retrieve default PCP parameter settings for given matrix
Description
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()
.
Usage
get_pcp_defaults(D)
Arguments
D |
The input data matrix. |
Value
A list containing:
-
lambda
: The theoretically optimallambda
value used inroot_pcp()
. -
mu
: The theoretically optimalmu
value used inroot_pcp()
. -
eta
: The defaulteta
value used inrrmc()
.
The intuition behind PCP parameters
root_pcp()
's objective function is given by:
\min_{L, S} ||L||_* + \lambda ||S||_1 + \mu ||L + S - D||_F
-
lambda
controls the sparsity ofroot_pcp()
's outputS
matrix; larger values oflambda
penalize non-zero entries inS
more stringently, driving the recovery of sparserS
matrices. Therefore, if you a priori expect few outlying events in your model, you might expect a grid search to recover relatively largerlambda
values, and vice-versa. -
mu
adjustsroot_pcp()
's sensitivity to noise; larger values ofmu
penalize errors between the predicted model and the observed data (i.e. noise), more severely. Environmental data subject to higher noise levels therefore require aroot_pcp()
model equipped with smallermu
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 ofmu
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 ofrrmc()
's outputS
matrix, just aslambda
does forroot_pcp()
. Because there are no other parameters scaling the noise term,eta
can be thought of as a ratio betweenroot_pcp()
'slambda
andmu
: Larger values ofeta
will place a greater emphasis on penalizing the non-zero entries inS
over penalizing the errors between the predicted and observed data (the dense noiseZ
).
The calculation of the "default" PCP parameters
-
lambda
is calculated as\lambda = 1 / \sqrt{\max(n, p)},
wheren
andp
are the dimensions of the input matrixD_{n \times p}
Candès et al. (2011). -
mu
is calculated as\mu = \sqrt{\frac{\min(n, p)}{2}},
wheren
andp
are as above [Zhang et al. (2021)]. -
eta
is simply\eta = \frac{\lambda}{\mu}
.
References
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]
See Also
Examples
# 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