weka.classifiers.functions
Class SPegasos

java.lang.Object
  extended by weka.classifiers.Classifier
      extended by weka.classifiers.functions.SPegasos
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, UpdateableClassifier, CapabilitiesHandler, OptionHandler, RevisionHandler, TechnicalInformationHandler

public class SPegasos
extends Classifier
implements TechnicalInformationHandler, UpdateableClassifier, OptionHandler

Implements the stochastic variant of the Pegasos (Primal Estimated sub-GrAdient SOlver for SVM) method of Shalev-Shwartz et al. (2007). This implementation globally replaces all missing values and transforms nominal attributes into binary ones. It also normalizes all attributes, so the coefficients in the output are based on the normalized data. For more information, see

S. Shalev-Shwartz, Y. Singer, N. Srebro: Pegasos: Primal Estimated sub-GrAdient SOlver for SVM. In: 24th International Conference on MachineLearning, 807-814, 2007.

BibTeX:

 @inproceedings{Shalev-Shwartz2007,
    author = {S. Shalev-Shwartz and Y. Singer and N. Srebro},
    booktitle = {24th International Conference on MachineLearning},
    pages = {807-814},
    title = {Pegasos: Primal Estimated sub-GrAdient SOlver for SVM},
    year = {2007}
 }
 

Valid options are:

 -L <double>
  The lambda regularization constant (default = 0.0001)
 -E <integer>
  The number of epochs to perform (batch learning only, default = 500)
 -N
  Don't normalize the data
 -M
  Don't replace missing values

Version:
$Revision: 6580 $
Author:
Mark Hall (mhall{[at]}pentaho{[dot]}com)
See Also:
Serialized Form

Field Summary
static Tag[] TAGS_SELECTION
          Loss functions to choose from
 
Constructor Summary
SPegasos()
           
 
Method Summary
 void buildClassifier(Instances data)
          Method for building the classifier.
 double[] distributionForInstance(Instance inst)
          Computes the distribution for a given instance
 java.lang.String dontNormalizeTipText()
          Returns the tip text for this property
 java.lang.String dontReplaceMissingTipText()
          Returns the tip text for this property
 java.lang.String epochsTipText()
          Returns the tip text for this property
 Capabilities getCapabilities()
          Returns default capabilities of the classifier.
 boolean getDontNormalize()
          Get whether normalization has been turned off.
 boolean getDontReplaceMissing()
          Get whether global replacement of missing values has been disabled.
 int getEpochs()
          Get current number of epochs
 double getLambda()
          Get the current value of lambda
 SelectedTag getLossFunction()
          Get the current loss function.
 java.lang.String[] getOptions()
          Gets the current settings of the classifier.
 java.lang.String getRevision()
          Returns the revision string.
 TechnicalInformation getTechnicalInformation()
          Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.
 java.lang.String globalInfo()
          Returns a string describing classifier
 java.lang.String lambdaTipText()
          Returns the tip text for this property
 java.util.Enumeration<Option> listOptions()
          Returns an enumeration describing the available options.
 java.lang.String lossFunctionTipText()
          Returns the tip text for this property
static void main(java.lang.String[] args)
          Main method for testing this class.
 void reset()
          Reset the classifier.
 void setDontNormalize(boolean m)
          Turn normalization off/on.
 void setDontReplaceMissing(boolean m)
          Turn global replacement of missing values off/on.
 void setEpochs(int e)
          Set the number of epochs to use
 void setLambda(double lambda)
          Set the value of lambda to use
 void setLossFunction(SelectedTag function)
          Set the loss function to use.
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 java.lang.String toString()
          Prints out the classifier.
 void updateClassifier(Instance instance)
          Updates the classifier with the given instance.
 
Methods inherited from class weka.classifiers.Classifier
classifyInstance, debugTipText, forName, getDebug, makeCopies, makeCopy, setDebug
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

TAGS_SELECTION

public static final Tag[] TAGS_SELECTION
Loss functions to choose from

Constructor Detail

SPegasos

public SPegasos()
Method Detail

getCapabilities

public Capabilities getCapabilities()
Returns default capabilities of the classifier.

Specified by:
getCapabilities in interface CapabilitiesHandler
Overrides:
getCapabilities in class Classifier
Returns:
the capabilities of this classifier
See Also:
Capabilities

lambdaTipText

public java.lang.String lambdaTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setLambda

public void setLambda(double lambda)
Set the value of lambda to use

Parameters:
lambda - the value of lambda to use

getLambda

public double getLambda()
Get the current value of lambda

Returns:
the current value of lambda

epochsTipText

public java.lang.String epochsTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setEpochs

public void setEpochs(int e)
Set the number of epochs to use

Parameters:
e - the number of epochs to use

getEpochs

public int getEpochs()
Get current number of epochs

Returns:
the current number of epochs

setDontNormalize

public void setDontNormalize(boolean m)
Turn normalization off/on.

Parameters:
m - true if normalization is to be disabled.

getDontNormalize

public boolean getDontNormalize()
Get whether normalization has been turned off.

Returns:
true if normalization has been disabled.

dontNormalizeTipText

public java.lang.String dontNormalizeTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setDontReplaceMissing

public void setDontReplaceMissing(boolean m)
Turn global replacement of missing values off/on. If turned off, then missing values are effectively ignored.

Parameters:
m - true if global replacement of missing values is to be turned off.

getDontReplaceMissing

public boolean getDontReplaceMissing()
Get whether global replacement of missing values has been disabled.

Returns:
true if global replacement of missing values has been turned off

dontReplaceMissingTipText

public java.lang.String dontReplaceMissingTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setLossFunction

public void setLossFunction(SelectedTag function)
Set the loss function to use.

Parameters:
function - the loss function to use.

getLossFunction

public SelectedTag getLossFunction()
Get the current loss function.

Returns:
the current loss function.

lossFunctionTipText

public java.lang.String lossFunctionTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

listOptions

public java.util.Enumeration<Option> listOptions()
Returns an enumeration describing the available options.

Specified by:
listOptions in interface OptionHandler
Overrides:
listOptions in class Classifier
Returns:
an enumeration of all the available options.

setOptions

public void setOptions(java.lang.String[] options)
                throws java.lang.Exception
Parses a given list of options.

Valid options are:

 -L <double>
  The lambda regularization constant (default = 0.0001)
 -E <integer>
  The number of epochs to perform (batch learning only, default = 500)
 -N
  Don't normalize the data
 -M
  Don't replace missing values

Specified by:
setOptions in interface OptionHandler
Overrides:
setOptions in class Classifier
Parameters:
options - the list of options as an array of strings
Throws:
java.lang.Exception - if an option is not supported

getOptions

public java.lang.String[] getOptions()
Gets the current settings of the classifier.

Specified by:
getOptions in interface OptionHandler
Overrides:
getOptions in class Classifier
Returns:
an array of strings suitable for passing to setOptions

globalInfo

public java.lang.String globalInfo()
Returns a string describing classifier

Returns:
a description suitable for displaying in the explorer/experimenter gui

getTechnicalInformation

public TechnicalInformation getTechnicalInformation()
Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.

Specified by:
getTechnicalInformation in interface TechnicalInformationHandler
Returns:
the technical information about this class

reset

public void reset()
Reset the classifier.


buildClassifier

public void buildClassifier(Instances data)
                     throws java.lang.Exception
Method for building the classifier.

Specified by:
buildClassifier in class Classifier
Parameters:
data - the set of training instances.
Throws:
java.lang.Exception - if the classifier can't be built successfully.

updateClassifier

public void updateClassifier(Instance instance)
                      throws java.lang.Exception
Updates the classifier with the given instance.

Specified by:
updateClassifier in interface UpdateableClassifier
Parameters:
instance - the new training instance to include in the model
Throws:
java.lang.Exception - if the instance could not be incorporated in the model.

distributionForInstance

public double[] distributionForInstance(Instance inst)
                                 throws java.lang.Exception
Computes the distribution for a given instance

Overrides:
distributionForInstance in class Classifier
Parameters:
instance - the instance for which distribution is computed
Returns:
the distribution
Throws:
java.lang.Exception - if the distribution can't be computed successfully

toString

public java.lang.String toString()
Prints out the classifier.

Overrides:
toString in class java.lang.Object
Returns:
a description of the classifier as a string

getRevision

public java.lang.String getRevision()
Returns the revision string.

Specified by:
getRevision in interface RevisionHandler
Overrides:
getRevision in class Classifier
Returns:
the revision

main

public static void main(java.lang.String[] args)
Main method for testing this class.