Title: | Non-Negative Matrix Factorization for Binary Data |
Version: | 0.2.1 |
Description: | Factorize binary matrices into rank-k components using the logistic function in the updating process. See e.g. Tomé et al (2015) <doi:10.1007/s11045-013-0240-9> . |
License: | MIT + file LICENSE |
Encoding: | UTF-8 |
Language: | en-GB |
RoxygenNote: | 7.2.3 |
URL: | https://michalovadek.github.io/nmfbin/ |
Suggests: | knitr, rmarkdown, testthat (≥ 3.0.0) |
VignetteBuilder: | knitr |
Config/testthat/edition: | 3 |
NeedsCompilation: | no |
Packaged: | 2023-09-20 19:16:47 UTC; uctqova |
Author: | Michal Ovadek |
Maintainer: | Michal Ovadek <michal.ovadek@gmail.com> |
Repository: | CRAN |
Date/Publication: | 2023-09-21 13:40:02 UTC |
Logistic Non-negative Matrix Factorization
Description
This function performs Logistic Non-negative Matrix Factorization (NMF) on a binary matrix.
Usage
nmfbin(
X,
k,
optimizer = "mur",
init = "nndsvd",
max_iter = 1000,
tol = 1e-06,
learning_rate = 0.001,
verbose = FALSE,
loss_fun = "logloss",
loss_normalize = TRUE,
epsilon = 1e-10
)
Arguments
X |
A binary matrix (m x n) to be factorized. |
k |
The number of factors (components, topics). |
optimizer |
Type of updating algorithm. |
init |
Method for initializing the factorization. By default Nonnegative Double Singular Value Decomposition with average densification. |
max_iter |
Maximum number of iterations for optimization. |
tol |
Convergence tolerance. The optimization stops when the change in loss is less than this value. |
learning_rate |
Learning rate (step size) for the gradient descent optimization. |
verbose |
Print convergence if |
loss_fun |
Choice of loss function: |
loss_normalize |
Normalize loss by matrix dimensions if |
epsilon |
Constant to avoid log(0). |
Value
A list containing:
-
W
: The basis matrix (m x k). The document-topic matrix in topic modelling. -
H
: The coefficient matrix (k x n). Contribution of features to factors (topics). -
c
: The global threshold. A constant. -
convergence
: Divergence (loss) fromX
at everyiter
untiltol
ormax_iter
is reached.
Examples
# Generate a binary matrix
m <- 100
n <- 50
X <- matrix(sample(c(0, 1), m * n, replace = TRUE), m, n)
# Set the number of factors
k <- 4
# Factorize the matrix with default settings
result <- nmfbin(X, k)