mlpack
master
|
Softmax Regression is a classifier which can be used for classification when the data available can take two or more class values. More...
Public Member Functions | |
SoftmaxRegression (const size_t inputSize=0, const size_t numClasses=0, const bool fitIntercept=false) | |
Initialize the SoftmaxRegression without performing training. More... | |
SoftmaxRegression (const arma::mat &data, const arma::Row< size_t > &labels, const size_t numClasses, const double lambda=0.0001, const bool fitIntercept=false) | |
Construct the SoftmaxRegression class with the provided data and labels. More... | |
SoftmaxRegression (OptimizerType< SoftmaxRegressionFunction > &optimizer) | |
Construct the softmax regression model with the given training data. More... | |
double | ComputeAccuracy (const arma::mat &testData, const arma::Row< size_t > &labels) const |
Computes accuracy of the learned model given the feature data and the labels associated with each data point. More... | |
size_t | FeatureSize () const |
Gets the features size of the training data. More... | |
bool | FitIntercept () const |
Gets the intercept term flag. We can't change this after training. More... | |
double & | Lambda () |
Sets the regularization parameter. More... | |
double | Lambda () const |
Gets the regularization parameter. More... | |
size_t & | NumClasses () |
Sets the number of classes. More... | |
size_t | NumClasses () const |
Gets the number of classes. More... | |
arma::mat & | Parameters () |
Get the model parameters. More... | |
const arma::mat & | Parameters () const |
Get the model parameters. More... | |
void | Predict (const arma::mat &testData, arma::Row< size_t > &predictions) const |
Predict the class labels for the provided feature points. More... | |
template<typename Archive > | |
void | Serialize (Archive &ar, const unsigned int) |
Serialize the SoftmaxRegression model. More... | |
double | Train (OptimizerType< SoftmaxRegressionFunction > &optimizer) |
Train the softmax regression model with the given optimizer. More... | |
double | Train (const arma::mat &data, const arma::Row< size_t > &labels, const size_t numClasses) |
Train the softmax regression with the given training data. More... | |
Private Attributes | |
bool | fitIntercept |
Intercept term flag. More... | |
double | lambda |
L2-regularization constant. More... | |
size_t | numClasses |
Number of classes. More... | |
arma::mat | parameters |
Parameters after optimization. More... | |
Softmax Regression is a classifier which can be used for classification when the data available can take two or more class values.
It is a generalization of Logistic Regression (which is used only for binary classification). The model has a different set of parameters for each class, but can be easily converted into a vectorized implementation as has been done in this module. The model can be used for direct classification of feature data or in conjunction with unsupervised learning methods. More technical details about the model can be found on the following webpage:
http://ufldl.stanford.edu/wiki/index.php/Softmax_Regression
An example on how to use the interface is shown below:
Definition at line 65 of file softmax_regression.hpp.
mlpack::regression::SoftmaxRegression< OptimizerType >::SoftmaxRegression | ( | const size_t | inputSize = 0 , |
const size_t | numClasses = 0 , |
||
const bool | fitIntercept = false |
||
) |
Initialize the SoftmaxRegression without performing training.
Default value of lambda is 0.0001. Be sure to use Train() before calling Predict() or ComputeAccuracy(), otherwise the results may be meaningless.
inputSize | Size of the input feature vector. |
numClasses | Number of classes for classification. |
fitIntercept | add intercept term or not. |
mlpack::regression::SoftmaxRegression< OptimizerType >::SoftmaxRegression | ( | const arma::mat & | data, |
const arma::Row< size_t > & | labels, | ||
const size_t | numClasses, | ||
const double | lambda = 0.0001 , |
||
const bool | fitIntercept = false |
||
) |
Construct the SoftmaxRegression class with the provided data and labels.
This will train the model. Optionally, the parameter 'lambda' can be passed, which controls the amount of L2-regularization in the objective function. By default, the model takes a small value.
data | Input training features. Each column associate with one sample |
labels | Labels associated with the feature data. |
inputSize | Size of the input feature vector. |
numClasses | Number of classes for classification. |
lambda | L2-regularization constant. |
fitIntercept | add intercept term or not. |
mlpack::regression::SoftmaxRegression< OptimizerType >::SoftmaxRegression | ( | OptimizerType< SoftmaxRegressionFunction > & | optimizer | ) |
Construct the softmax regression model with the given training data.
This will train the model. This overload takes an already instantiated optimizer and uses it to train the model. The optimizer should hold an instantiated SoftmaxRegressionFunction object for the function to operate upon. This option should be preferred when the optimizer options are to be changed.
optimizer | Instantiated optimizer with instantiated error function. |
double mlpack::regression::SoftmaxRegression< OptimizerType >::ComputeAccuracy | ( | const arma::mat & | testData, |
const arma::Row< size_t > & | labels | ||
) | const |
Computes accuracy of the learned model given the feature data and the labels associated with each data point.
Predictions are made using the provided data and are compared with the actual labels.
testData | Matrix of data points using which predictions are made. |
labels | Vector of labels associated with the data. |
|
inline |
Gets the features size of the training data.
Definition at line 171 of file softmax_regression.hpp.
References mlpack::regression::SoftmaxRegression< OptimizerType >::fitIntercept, and mlpack::regression::SoftmaxRegression< OptimizerType >::parameters.
|
inline |
Gets the intercept term flag. We can't change this after training.
Definition at line 163 of file softmax_regression.hpp.
References mlpack::regression::SoftmaxRegression< OptimizerType >::fitIntercept.
|
inline |
Sets the regularization parameter.
Definition at line 158 of file softmax_regression.hpp.
References mlpack::regression::SoftmaxRegression< OptimizerType >::lambda.
|
inline |
Gets the regularization parameter.
Definition at line 160 of file softmax_regression.hpp.
References mlpack::regression::SoftmaxRegression< OptimizerType >::lambda.
|
inline |
Sets the number of classes.
Definition at line 153 of file softmax_regression.hpp.
References mlpack::regression::SoftmaxRegression< OptimizerType >::numClasses.
|
inline |
Gets the number of classes.
Definition at line 155 of file softmax_regression.hpp.
References mlpack::regression::SoftmaxRegression< OptimizerType >::numClasses.
|
inline |
Get the model parameters.
Definition at line 166 of file softmax_regression.hpp.
References mlpack::regression::SoftmaxRegression< OptimizerType >::parameters.
|
inline |
Get the model parameters.
Definition at line 168 of file softmax_regression.hpp.
References mlpack::regression::SoftmaxRegression< OptimizerType >::parameters.
void mlpack::regression::SoftmaxRegression< OptimizerType >::Predict | ( | const arma::mat & | testData, |
arma::Row< size_t > & | predictions | ||
) | const |
Predict the class labels for the provided feature points.
The function calculates the probabilities for every class, given a data point. It then chooses the class which has the highest probability among all.
testData | Matrix of data points for which predictions are to be made. |
predictions | Vector to store the predictions in. |
|
inline |
Serialize the SoftmaxRegression model.
Definition at line 179 of file softmax_regression.hpp.
References mlpack::data::CreateNVP(), mlpack::regression::SoftmaxRegression< OptimizerType >::fitIntercept, mlpack::regression::SoftmaxRegression< OptimizerType >::lambda, and mlpack::regression::SoftmaxRegression< OptimizerType >::parameters.
double mlpack::regression::SoftmaxRegression< OptimizerType >::Train | ( | OptimizerType< SoftmaxRegressionFunction > & | optimizer | ) |
Train the softmax regression model with the given optimizer.
The optimizer should hold an instantiated SoftmaxRegressionFunction object for the function to operate upon. This option should be preferred when the optimizer options are to be changed.
optimizer | Instantiated optimizer with instantiated error function. |
double mlpack::regression::SoftmaxRegression< OptimizerType >::Train | ( | const arma::mat & | data, |
const arma::Row< size_t > & | labels, | ||
const size_t | numClasses | ||
) |
Train the softmax regression with the given training data.
data | Input data with each column as one example. |
labels | Labels associated with the feature data. |
numClasses | Number of classes for classification. |
|
private |
Intercept term flag.
Definition at line 197 of file softmax_regression.hpp.
Referenced by mlpack::regression::SoftmaxRegression< OptimizerType >::FeatureSize(), mlpack::regression::SoftmaxRegression< OptimizerType >::FitIntercept(), and mlpack::regression::SoftmaxRegression< OptimizerType >::Serialize().
|
private |
L2-regularization constant.
Definition at line 195 of file softmax_regression.hpp.
Referenced by mlpack::regression::SoftmaxRegression< OptimizerType >::Lambda(), and mlpack::regression::SoftmaxRegression< OptimizerType >::Serialize().
|
private |
Number of classes.
Definition at line 193 of file softmax_regression.hpp.
Referenced by mlpack::regression::SoftmaxRegression< OptimizerType >::NumClasses().
|
private |
Parameters after optimization.
Definition at line 191 of file softmax_regression.hpp.
Referenced by mlpack::regression::SoftmaxRegression< OptimizerType >::FeatureSize(), mlpack::regression::SoftmaxRegression< OptimizerType >::Parameters(), and mlpack::regression::SoftmaxRegression< OptimizerType >::Serialize().