This implements the greedy algorithm from Wang and Stephens. It can be used to adds factors to an existing fit, or start from scratch. It adds factors iteratively, at each stage adding a new factor and then optimizing it. It is "greedy" in that it does not return to re-optimize previous factors. The function stops when an added factor contributes nothing, or Kmax is reached. Each new factor is intialized by applying the function `init_fn` to the residuals after removing previously-fitted factors.
flash_add_greedy(data, Kmax = 1, f_init = NULL, var_type = c("by_column", "by_row", "constant", "zero", "kroneker"), init_fn = "udv_si", tol = 0.01, ebnm_fn = ebnm_pn, ebnm_param = flash_default_ebnm_param(ebnm_fn), verbose = FALSE, nullcheck = TRUE, seed = 123)
data | An n by p matrix or a flash data object created using
|
---|---|
Kmax | The maximum number of factors to be added to the flash
object. (If |
f_init | The flash object to which new factors are to be added.
If |
var_type | The type of variance structure to assume for residuals. |
init_fn | The function used to initialize factors. This
function should take parameters (Y,K) where Y is an n by p matrix
of data (or a flash data object) and K is a number of factors. It
should output a list with elements (u,d,v) where u is n by K matrix
v is a p by K matrix and d is a K vector. See |
tol | Specifies how much the objective can change in a single iteration to be considered not converged. |
ebnm_fn | The function used to solve the Empirical Bayes Normal Means problem. |
ebnm_param | A named list containing parameters to be passed to
ebnm_fn when optimizing; defaults are set by
|
verbose | If TRUE, various progress updates will be printed. |
nullcheck | If TRUE, then after running hill-climbing updates,
|
seed | A random number seed to use before running |
A fitted flash object.
l = rnorm(100) f = rnorm(10) Y = outer(l,f) + matrix(rnorm(1000),nrow=100) f = flash_add_greedy(Y,10)#>#>#> [1] 26# Example to show how to use a different initialization function. library(softImpute)#>#>#>#>