nmf.rrr.kernel.beta.cv: Optimize kernel beta for nmfae by cross-validation

View source: R/nmfae.R

nmf.rrr.kernel.beta.cvR Documentation

Optimize kernel beta for nmfae by cross-validation

Description

nmfae.kernel.beta.cv selects the optimal beta parameter of the kernel function by evaluating nmfae.cv for each candidate value. The kernel matrix A = K(U, V; \beta) replaces Y_2 in the three-layer NMF model.

When beta = NULL, candidate values are automatically generated via nmfkc.kernel.beta.nearest.med.

Usage

nmf.rrr.kernel.beta.cv(
  Y1,
  rank1 = 2,
  rank2 = NULL,
  U,
  V = NULL,
  beta = NULL,
  plot = TRUE,
  ...,
  rank = NULL,
  rank.encoder = NULL
)

Arguments

Y1

Output matrix Y_1 (P1 x N). Non-negative.

rank1

Integer. Rank of the response basis. Default is 2.

rank2

Integer. Rank of the covariate basis. Default (NULL) = rank1.

U

Covariate matrix U (K x M). Rows are features, columns are samples (or knot points for non-symmetric kernels).

V

Covariate matrix V (K x N). If NULL (default), V = U and a symmetric kernel is used.

beta

Numeric vector of candidate beta values. If NULL, automatically determined via nmfkc.kernel.beta.nearest.med.

plot

Logical. If TRUE (default), plots the objective function curve.

...

Additional arguments. Kernel-specific args (kernel, degree) are passed to nmfkc.kernel; all others (div, seed, shuffle, epsilon, maxit, etc.) are passed to nmfae.cv. For backward compatibility, Q and R are accepted as aliases for rank and rank.encoder.

rank, rank.encoder

Deprecated aliases of rank1 / rank2.

Value

A list with components:

beta

The beta value that minimizes the cross-validation objective.

objfunc

Named numeric vector of objective function values for each candidate beta.

See Also

nmfae.cv, nmfkc.kernel, nmfkc.kernel.beta.cv

Examples

Y <- matrix(cars$dist, nrow = 1)
U <- matrix(cars$speed, nrow = 1)
res <- nmf.rrr.kernel.beta.cv(Y, rank1 = 1, rank2 = 1, U = U,
                             beta = c(0.01, 0.02, 0.05), nfolds = 5)
res$beta


nmfkc documentation built on July 14, 2026, 1:07 a.m.