Class 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 Detail

      • TAGS_SELECTION

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

      • SPegasos

        public SPegasos()
    • Method Detail

      • 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
      • main

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