[MsNmf] is the concrete [MsEngine] spec for non-negative matrix factorization extraction (U-M1s-12). Build one with [ms_nmf()]; the hyper-parameters are frozen on the spec object and the object is the first-class `method` citizen of [ms_extract()]. The Rust kernel runs one seeded fit (canonical zero stream): results are deterministic and thread-invariant. Violations raise `msuiter_error_engine`.
Arguments
- name
single lower-case snake_case engine name; the MsNmf class fixes it to `"nmf"` (the registry key).
- mode
spec mode; the MsNmf class fixes it to `"extract"`.
- params
named list of hyper-parameters (empty: the NMF hyper-parameters live in the dedicated `variant`/`max_iter`/`seed` properties below, mirroring the atomic property defaults of [MsEngine]).
- deterministic
always TRUE: the kernel is seeded and thread-invariant (A7).
- packages
character vector of required R packages; the msuiter kernel needs none.
- label
human-readable engine label.
- variant
single string, one of `"kl"` (generalized KL divergence, the D6 default: the multiplicative updates are the Poisson MLE of the multinomial catalog model) or `"eu"` (squared Frobenius).
- max_iter
single positive whole number of multiplicative-update iterations (no early stopping: a run is a pure function of its inputs).
- seed
single whole number in `[0, 2^31 - 1]` seeding the in-house PCG64 stream of the initializer.