mlpack
|
The multiplicative distance update rules for matrices W and H. More...
#include <nmf_mult_dist.hpp>
Public Member Functions | |
template<typename MatType > | |
void | Initialize (const MatType &, const size_t) |
Initialize the factorization. More... | |
template<typename Archive > | |
void | serialize (Archive &, const uint32_t) |
Serialize the object (in this case, there is nothing to serialize). | |
Static Public Member Functions | |
template<typename MatType > | |
static void | WUpdate (const MatType &V, arma::mat &W, const arma::mat &H) |
The update rule for the basis matrix W. More... | |
template<typename MatType > | |
static void | HUpdate (const MatType &V, const arma::mat &W, arma::mat &H) |
The update rule for the encoding matrix H. More... | |
The multiplicative distance update rules for matrices W and H.
This follows a method described in the following paper:
This is a multiplicative rule that ensures that the Frobenius norm \( \sqrt{\sum_i \sum_j(V-WH)^2} \) is non-increasing between subsequent iterations. Both of the update rules for W and H are defined in this file.
|
inlinestatic |
The update rule for the encoding matrix H.
The formula used is
\[ H_{a\mu} \leftarrow H_{a\mu} \frac{(W^T V)_{a\mu}}{(W^T WH)_{a\mu}} \]
The function takes in all the matrices and only changes the value of the H matrix.
V | Input matrix to be factorized. |
W | Basis matrix. |
H | Encoding matrix to be updated. |
|
inline |
Initialize the factorization.
These update rules hold no information, so the input parameters are ignored.
|
inlinestatic |
The update rule for the basis matrix W.
The formula used isa
\[ W_{ia} \leftarrow W_{ia} \frac{(VH^T)_{ia}}{(WHH^T)_{ia}} \]
The function takes in all the matrices and only changes the value of the W matrix.
V | Input matrix to be factorized. |
W | Basis matrix to be updated. |
H | Encoding matrix. |