mlpack
master
|
An implementation of Neighborhood Components Analysis, both a linear dimensionality reduction technique and a distance learning technique. More...
Public Member Functions | |
NCA (const arma::mat &dataset, const arma::Row< size_t > &labels, MetricType metric=MetricType()) | |
Construct the Neighborhood Components Analysis object. More... | |
const arma::mat & | Dataset () const |
Get the dataset reference. More... | |
const arma::Row< size_t > & | Labels () const |
Get the labels reference. More... | |
void | LearnDistance (arma::mat &outputMatrix) |
Perform Neighborhood Components Analysis. More... | |
const OptimizerType< SoftmaxErrorFunction< MetricType > > & | Optimizer () const |
Get the optimizer. More... | |
OptimizerType< SoftmaxErrorFunction< MetricType > > & | Optimizer () |
Private Attributes | |
const arma::mat & | dataset |
Dataset reference. More... | |
SoftmaxErrorFunction< MetricType > | errorFunction |
The function to optimize. More... | |
const arma::Row< size_t > & | labels |
Labels reference. More... | |
MetricType | metric |
Metric to be used. More... | |
OptimizerType< SoftmaxErrorFunction< MetricType > > | optimizer |
The optimizer to use. More... | |
An implementation of Neighborhood Components Analysis, both a linear dimensionality reduction technique and a distance learning technique.
The method seeks to improve k-nearest-neighbor classification on a dataset by scaling the dimensions. The method is nonparametric, and does not require a value of k. It works by using stochastic ("soft") neighbor assignments and using optimization techniques over the gradient of the accuracy of the neighbor assignments.
For more details, see the following published paper:
mlpack::nca::NCA< MetricType, OptimizerType >::NCA | ( | const arma::mat & | dataset, |
const arma::Row< size_t > & | labels, | ||
MetricType | metric = MetricType() |
||
) |
Construct the Neighborhood Components Analysis object.
This simply stores the reference to the dataset and labels as well as the parameters for optimization before the actual optimization is performed.
dataset | Input dataset. |
labels | Input dataset labels. |
stepSize | Step size for stochastic gradient descent. |
maxIterations | Maximum iterations for stochastic gradient descent. |
tolerance | Tolerance for termination of stochastic gradient descent. |
shuffle | Whether or not to shuffle the dataset during SGD. |
metric | Instantiated metric to use. |
|
inline |
Get the dataset reference.
Definition at line 81 of file nca.hpp.
References mlpack::nca::NCA< MetricType, OptimizerType >::dataset.
|
inline |
Get the labels reference.
Definition at line 83 of file nca.hpp.
References mlpack::nca::NCA< MetricType, OptimizerType >::labels.
void mlpack::nca::NCA< MetricType, OptimizerType >::LearnDistance | ( | arma::mat & | outputMatrix | ) |
Perform Neighborhood Components Analysis.
The output distance learning matrix is written into the passed reference. If LearnDistance() is called with an outputMatrix which has the correct size (dataset.n_rows x dataset.n_rows), that matrix will be used as the starting point for optimization.
output_matrix | Covariance matrix of Mahalanobis distance. |
|
inline |
Get the optimizer.
Definition at line 86 of file nca.hpp.
References mlpack::nca::NCA< MetricType, OptimizerType >::optimizer.
|
inline |
Definition at line 88 of file nca.hpp.
References mlpack::nca::NCA< MetricType, OptimizerType >::optimizer.
|
private |
Dataset reference.
Definition at line 93 of file nca.hpp.
Referenced by mlpack::nca::NCA< MetricType, OptimizerType >::Dataset().
|
private |
|
private |
Labels reference.
Definition at line 95 of file nca.hpp.
Referenced by mlpack::nca::NCA< MetricType, OptimizerType >::Labels().
|
private |
|
private |
The optimizer to use.
Definition at line 104 of file nca.hpp.
Referenced by mlpack::nca::NCA< MetricType, OptimizerType >::Optimizer().