Package weka.classifiers.functions

# Class SPegasos

java.lang.Object
weka.classifiers.Classifier
weka.classifiers.functions.SPegasos

All Implemented Interfaces:
  `Serializable`, `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

Fields
Modifier and Type
Field
Description
`static final Tag[]`
`TAGS_SELECTION`
Loss functions to choose from

## Constructor Summary

Constructors
Constructor
Description
`SPegasos()`

## Method Summary

Modifier and Type
Method
Description
`void`
`buildClassifier(Instances data)`
Method for building the classifier.
`double[]`
`distributionForInstance(Instance inst)`
Computes the distribution for a given instance
`String`
`dontNormalizeTipText()`
Returns the tip text for this property
`String`
`dontReplaceMissingTipText()`
Returns the tip text for this property
`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.
`String[]`
`getOptions()`
Gets the current settings of the classifier.
`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.
`String`
`globalInfo()`
Returns a string describing classifier
`String`
`lambdaTipText()`
Returns the tip text for this property
`Enumeration<Option>`
`listOptions()`
Returns an enumeration describing the available options.
`String`
`lossFunctionTipText()`
Returns the tip text for this property
`static void`
`main(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(String[] options)`
Parses a given list of options.
`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 Details

### TAGS_SELECTION

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

## Constructor Details

### SPegasos

public SPegasos()

## Method Details

### 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 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 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 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 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 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 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(String[] options) throws 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:
  `Exception` - if an option is not supported

### getOptions

public 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 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 Exception
Method for building the classifier.

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

### updateClassifier

public void updateClassifier(Instance instance) throws 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:
  `Exception` - if the instance could not be incorporated in the model.

### distributionForInstance

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

Overrides:
  `distributionForInstance` in class `Classifier`
Parameters:
  `inst` - the instance to be classified
  `instance` - the instance for which distribution is computed
Returns:
  the distribution
Throws:
  `Exception` - if the distribution can't be computed successfully

### toString

public String toString()
Prints out the classifier.

Overrides:
  `toString` in class `Object`
Returns:
  a description of the classifier as a string

### getRevision

public 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(String[] args)
Main method for testing this class.