SYNOPSIS

Public Member Functions

LocalCoordinateCoding (const arma::mat &data, const size_t atoms, const double lambda)

Set the parameters to LocalCoordinateCoding. const arma::mat & Codes () const

Accessor the codes. arma::mat & Codes ()

Modify the codes. const arma::mat & Data () const

Access the data. const arma::mat & Dictionary () const

Accessor for dictionary. arma::mat & Dictionary ()

Mutator for dictionary. void Encode (const size_t maxIterations=0, const double objTolerance=0.01)

Run local coordinate coding. double Objective (arma::uvec adjacencies) const

Compute objective function given the list of adjacencies. void OptimizeCode ()

Code each point via distance-weighted LARS. void OptimizeDictionary (arma::uvec adjacencies)

Learn dictionary by solving linear system. std::string ToString () const

Private Attributes

size_t atoms

Number of atoms in dictionary. arma::mat codes

Codes (columns are points). const arma::mat & data

Data matrix (columns are points). arma::mat dictionary

Dictionary (columns are atoms). double lambda

l1 regularization term.

Detailed Description

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer>class mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >

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

  • lambda sum_{i=1}^m sum_{j=1}^k dist(X_i,D_j)^2 Z_i^j where lambda > 0.

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.

@incollection{NIPS2009_0719,
  title = {Nonlinear Learning using Local Coordinate Coding},
  author = {Kai Yu and Tong Zhang and Yihong Gong},
  booktitle = {Advances in Neural Information Processing Systems 22},
  editor = {Y. Bengio and D. Schuurmans and J. Lafferty and C. K. I. Williams
      and A. Culotta},
  pages = {2223--2231},
  year = {2009}
}
@article{efron2004least,
  title={Least angle regression},
  author={Efron, B. and Hastie, T. and Johnstone, I. and Tibshirani, R.},
  journal={The Annals of statistics},
  volume={32},
  number={2},
  pages={407--499},
  year={2004},
  publisher={Institute of Mathematical Statistics}
}

Definition at line 91 of file lcc.hpp.

Constructor & Destructor Documentation

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::\fBLocalCoordinateCoding\fP (const arma::mat &data, const size_tatoms, const doublelambda)

Set the parameters to LocalCoordinateCoding.

Parameters:

data Data matrix.

atoms Number of atoms in dictionary.

lambda Regularization parameter for weighted l1-norm penalty.

Member Function Documentation

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> const arma::mat& \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::Codes () const\fC [inline]\fP

Accessor the codes.

Definition at line 144 of file lcc.hpp.

References mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::codes.

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> arma::mat& \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::Codes ()\fC [inline]\fP

Modify the codes.

Definition at line 146 of file lcc.hpp.

References mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::codes.

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> const arma::mat& \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::Data () const\fC [inline]\fP

Access the data.

Definition at line 136 of file lcc.hpp.

References mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::data.

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> const arma::mat& \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::Dictionary () const\fC [inline]\fP

Accessor for dictionary.

Definition at line 139 of file lcc.hpp.

References mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::dictionary.

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> arma::mat& \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::Dictionary ()\fC [inline]\fP

Mutator for dictionary.

Definition at line 141 of file lcc.hpp.

References mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::dictionary.

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> void \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::Encode (const size_tmaxIterations = \fC0\fP, const doubleobjTolerance = \fC0.01\fP)

Run local coordinate coding.

Parameters:

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.

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> double \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::Objective (arma::uvecadjacencies) const

Compute objective function given the list of adjacencies.

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> void \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::OptimizeCode ()

Code each point via distance-weighted LARS.

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> void \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::OptimizeDictionary (arma::uvecadjacencies)

Learn dictionary by solving linear system.

Parameters:

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)

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> std::string \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::ToString () const

Member Data Documentation

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> size_t \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::atoms\fC [private]\fP

Number of atoms in dictionary.

Definition at line 153 of file lcc.hpp.

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> arma::mat \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::codes\fC [private]\fP

Codes (columns are points).

Definition at line 162 of file lcc.hpp.

Referenced by mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::Codes().

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> const arma::mat& \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::data\fC [private]\fP

Data matrix (columns are points).

Definition at line 156 of file lcc.hpp.

Referenced by mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::Data().

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> arma::mat \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::dictionary\fC [private]\fP

Dictionary (columns are atoms).

Definition at line 159 of file lcc.hpp.

Referenced by mlpack::lcc::LocalCoordinateCoding< DictionaryInitializer >::Dictionary().

template<typename DictionaryInitializer = sparse_coding::DataDependentRandomInitializer> double \fBmlpack::lcc::LocalCoordinateCoding\fP< DictionaryInitializer >::lambda\fC [private]\fP

l1 regularization term.

Definition at line 165 of file lcc.hpp.

Author

Generated automatically by Doxygen for MLPACK from the source code.