Skip to contents

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

nmfae.kernel.beta.cv(
  Y1,
  rank = 2,
  rank.encoder = rank,
  U,
  V = NULL,
  beta = NULL,
  plot = TRUE,
  ...
)

Arguments

Y1

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

rank

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

rank.encoder

Integer. Rank of the encoder basis. Default is rank.

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.

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.

Examples

Y <- matrix(cars$dist, nrow = 1)
U <- matrix(cars$speed, nrow = 1)
res <- nmfae.kernel.beta.cv(Y, rank = 1, rank.encoder = 1, U = U,
                             beta = c(0.01, 0.02, 0.05), nfolds = 5)
#> beta=0.01...
#> 0.1sec
#> beta=0.02...
#> 0.1sec
#> beta=0.05...
#> 0.1sec

res$beta
#> [1] 0.05