mlpack  master
Public Member Functions | Static Public Member Functions | List of all members
mlpack::amf::NMFALSUpdate Class Reference

This class implements a method titled 'Alternating Least Squares' described in the following paper: More...

Public Member Functions

 NMFALSUpdate ()
 Empty constructor required for the UpdateRule template. More...
 
template<typename MatType >
void Initialize (const MatType &, const size_t)
 Set initial values for the factorization. More...
 
template<typename Archive >
void Serialize (Archive &, const unsigned int)
 Serialize the object (in this case, there is nothing to serialize). More...
 

Static Public Member Functions

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...
 
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...
 

Detailed Description

This class implements a method titled 'Alternating Least Squares' described in the following paper:

@article{paatero1994positive,
title={Positive matrix factorization: A non-negative factor model with
optimal utilization of error estimates of data values},
author={Paatero, P. and Tapper, U.},
journal={Environmetrics},
volume={5},
number={2},
pages={111--126},
year={1994}
}

It uses the least squares projection formula to reduce the error value of $ \sqrt{\sum_i \sum_j(V-WH)^2} $ by alternately calculating W and H respectively while holding the other matrix constant.

Definition at line 41 of file nmf_als.hpp.

Constructor & Destructor Documentation

mlpack::amf::NMFALSUpdate::NMFALSUpdate ( )
inline

Empty constructor required for the UpdateRule template.

Definition at line 45 of file nmf_als.hpp.

Member Function Documentation

template<typename MatType >
static void mlpack::amf::NMFALSUpdate::HUpdate ( const MatType &  V,
const arma::mat &  W,
arma::mat &  H 
)
inlinestatic

The update rule for the encoding matrix H.

The formula used is

\[ H = \frac{W^T V}{W^T W} \]

The function takes in all the matrices and only changes the value of the H matrix.

Parameters
VInput matrix to be factorized.
WBasis matrix.
HEncoding matrix to be updated.

Definition at line 105 of file nmf_als.hpp.

template<typename MatType >
void mlpack::amf::NMFALSUpdate::Initialize ( const MatType &  ,
const size_t   
)
inline

Set initial values for the factorization.

In this case, we don't need to set anything.

Definition at line 52 of file nmf_als.hpp.

template<typename Archive >
void mlpack::amf::NMFALSUpdate::Serialize ( Archive &  ,
const unsigned  int 
)
inline

Serialize the object (in this case, there is nothing to serialize).

Definition at line 123 of file nmf_als.hpp.

template<typename MatType >
static void mlpack::amf::NMFALSUpdate::WUpdate ( const MatType &  V,
arma::mat &  W,
const arma::mat &  H 
)
inlinestatic

The update rule for the basis matrix W.

The formula used isa

\[ W^T = \frac{H V^T}{H H^T} \]

The function takes in all the matrices and only changes the value of the W matrix.

Parameters
VInput matrix to be factorized.
WBasis matrix to be updated.
HEncoding matrix.

Definition at line 72 of file nmf_als.hpp.


The documentation for this class was generated from the following file: