MLPACK
1.0.11
|
An implementation of Local Coordinate Coding (LCC) that codes data which approximately lives on a manifold using a variation of l1-norm regularized sparse coding; in LCC, the penalty on the absolute value of each point's coefficient for each atom is weighted by the squared distance of that point to that atom. More...
Public Member Functions | |
LocalCoordinateCoding (const arma::mat &data, const size_t atoms, const double lambda) | |
Set the parameters to LocalCoordinateCoding. More... | |
const arma::mat & | Codes () const |
Accessor the codes. More... | |
arma::mat & | Codes () |
Modify the codes. More... | |
const arma::mat & | Data () const |
Access the data. More... | |
const arma::mat & | Dictionary () const |
Accessor for dictionary. More... | |
arma::mat & | Dictionary () |
Mutator for dictionary. More... | |
void | Encode (const size_t maxIterations=0, const double objTolerance=0.01) |
Run local coordinate coding. More... | |
double | Objective (arma::uvec adjacencies) const |
Compute objective function given the list of adjacencies. More... | |
void | OptimizeCode () |
Code each point via distance-weighted LARS. More... | |
void | OptimizeDictionary (arma::uvec adjacencies) |
Learn dictionary by solving linear system. More... | |
std::string | ToString () const |
Private Attributes | |
size_t | atoms |
Number of atoms in dictionary. More... | |
arma::mat | codes |
Codes (columns are points). More... | |
const arma::mat & | data |
Data matrix (columns are points). More... | |
arma::mat | dictionary |
Dictionary (columns are atoms). More... | |
double | lambda |
l1 regularization term. More... | |
An implementation of Local Coordinate Coding (LCC) that codes data which approximately lives on a manifold using a variation of l1-norm regularized sparse coding; in LCC, the penalty on the absolute value of each point's coefficient for each atom is weighted by the squared distance of that point to that atom.
Let d be the number of dimensions in the original space, m the number of training points, and k the number of atoms in the dictionary (the dimension of the learned feature space). The training data X is a d-by-m matrix where each column is a point and each row is a dimension. The dictionary D is a d-by-k matrix, and the sparse codes matrix Z is a k-by-m matrix. This program seeks to minimize the objective: min_{D,Z} ||X - D Z||_{Fro}^2
This problem is solved by an algorithm that alternates between a dictionary learning step and a sparse coding step. The dictionary learning step updates the dictionary D by solving a linear system (note that the objective is a positive definite quadratic program). The sparse coding step involves solving a large number of weighted l1-norm regularized linear regression problems problems; this can be done efficiently using LARS, an algorithm that can solve the LASSO (paper below).
The papers are listed below.
mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::LocalCoordinateCoding | ( | const arma::mat & | data, |
const size_t | atoms, | ||
const double | lambda | ||
) |
Set the parameters to LocalCoordinateCoding.
data | Data matrix. |
atoms | Number of atoms in dictionary. |
lambda | Regularization parameter for weighted l1-norm penalty. |
|
inline |
Accessor the codes.
Definition at line 144 of file lcc.hpp.
References mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::codes.
|
inline |
Modify the codes.
Definition at line 146 of file lcc.hpp.
References mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::codes, and mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::ToString().
|
inline |
Access the data.
Definition at line 136 of file lcc.hpp.
References mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::data.
|
inline |
Accessor for dictionary.
Definition at line 139 of file lcc.hpp.
References mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::dictionary.
|
inline |
Mutator for dictionary.
Definition at line 141 of file lcc.hpp.
References mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::dictionary.
void mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::Encode | ( | const size_t | maxIterations = 0 , |
const double | objTolerance = 0.01 |
||
) |
Run local coordinate coding.
nIterations | Maximum number of iterations to run algorithm. |
objTolerance | Tolerance of objective function. When the objective function changes by a value lower than this tolerance, the optimization terminates. |
double mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::Objective | ( | arma::uvec | adjacencies | ) | const |
Compute objective function given the list of adjacencies.
void mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::OptimizeCode | ( | ) |
Code each point via distance-weighted LARS.
void mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::OptimizeDictionary | ( | arma::uvec | adjacencies | ) |
Learn dictionary by solving linear system.
adjacencies | Indices of entries (unrolled column by column) of the coding matrix Z that are non-zero (the adjacency matrix for the bipartite graph of points and atoms) |
std::string mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::ToString | ( | ) | const |
|
private |
|
private |
Codes (columns are points).
Definition at line 162 of file lcc.hpp.
Referenced by mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::Codes().
|
private |
Data matrix (columns are points).
Definition at line 156 of file lcc.hpp.
Referenced by mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::Data().
|
private |
Dictionary (columns are atoms).
Definition at line 159 of file lcc.hpp.
Referenced by mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::Dictionary().
|
private |