Class MultiClassClassifier

All Implemented Interfaces:
Serializable, Cloneable, Classifier, BatchPredictor, CapabilitiesHandler, CapabilitiesIgnorer, CommandlineRunnable, OptionHandler, Randomizable, RevisionHandler, WeightedInstancesHandler
Direct Known Subclasses:
MultiClassClassifierUpdateable

public class MultiClassClassifier extends RandomizableSingleClassifierEnhancer implements OptionHandler, WeightedInstancesHandler
A metaclassifier for handling multi-class datasets with 2-class classifiers. This classifier is also capable of applying error correcting output codes for increased accuracy. If the base classifier cannot handle instance weights, and the instance weights are not uniform, the data will be resampled with replacement based on the weights before being passed to the base classifier.

Valid options are:

 -M <num>
  Sets the method to use. Valid values are 0 (1-against-all),
  1 (random codes), 2 (exhaustive code), and 3 (1-against-1). (default 0)
 
 -R <num>
  Sets the multiplier when using random codes. (default 2.0)
 -P
  Use pairwise coupling (only has an effect for 1-against1)
 -L
  Use log loss decoding for random and exhaustive codes.
 -S <num>
  Random number seed.
  (default 1)
 -D
  If set, classifier is run in debug mode and
  may output additional info to the console
 -W
  Full name of base classifier.
  (default: weka.classifiers.functions.Logistic)
 
 Options specific to classifier weka.classifiers.functions.Logistic:
 
 -D
  Turn on debugging output.
 -R <ridge>
  Set the ridge in the log-likelihood.
 -M <number>
  Set the maximum number of iterations (default -1, until convergence).
Version:
$Revision: 15519 $
Author:
Eibe Frank (eibe@cs.waikato.ac.nz), Len Trigg (len@reeltwo.com), Richard Kirkby (rkirkby@cs.waikato.ac.nz)
See Also:
  • Field Details

    • METHOD_1_AGAINST_ALL

      public static final int METHOD_1_AGAINST_ALL
      1-against-all
      See Also:
    • METHOD_ERROR_RANDOM

      public static final int METHOD_ERROR_RANDOM
      random correction code
      See Also:
    • METHOD_ERROR_EXHAUSTIVE

      public static final int METHOD_ERROR_EXHAUSTIVE
      exhaustive correction code
      See Also:
    • METHOD_1_AGAINST_1

      public static final int METHOD_1_AGAINST_1
      1-against-1
      See Also:
    • TAGS_METHOD

      public static final Tag[] TAGS_METHOD
      The error correction modes
  • Constructor Details

    • MultiClassClassifier

      public MultiClassClassifier()
      Constructor.
  • Method Details

    • getCapabilities

      public Capabilities getCapabilities()
      Returns default capabilities of the classifier.
      Specified by:
      getCapabilities in interface CapabilitiesHandler
      Specified by:
      getCapabilities in interface Classifier
      Overrides:
      getCapabilities in class SingleClassifierEnhancer
      Returns:
      the capabilities of this classifier
      See Also:
    • buildClassifier

      public void buildClassifier(Instances insts) throws Exception
      Builds the classifiers.
      Specified by:
      buildClassifier in interface Classifier
      Parameters:
      insts - the training data.
      Throws:
      Exception - if a classifier can't be built
    • individualPredictions

      public double[] individualPredictions(Instance inst) throws Exception
      Returns the individual predictions of the base classifiers for an instance. Used by StackedMultiClassClassifier. Returns the probability for the second "class" predicted by each base classifier.
      Parameters:
      inst - the instance to get the prediction for
      Returns:
      the individual predictions
      Throws:
      Exception - if the predictions can't be computed successfully
    • distributionForInstance

      public double[] distributionForInstance(Instance inst) throws Exception
      Returns the distribution for an instance.
      Specified by:
      distributionForInstance in interface Classifier
      Overrides:
      distributionForInstance in class AbstractClassifier
      Parameters:
      inst - the instance to get the distribution for
      Returns:
      the distribution
      Throws:
      Exception - if the distribution can't be computed successfully
    • toString

      public String toString()
      Prints the classifiers.
      Overrides:
      toString in class Object
      Returns:
      a string representation of the classifier
    • listOptions

      public Enumeration<Option> listOptions()
      Returns an enumeration describing the available options
      Specified by:
      listOptions in interface OptionHandler
      Overrides:
      listOptions in class RandomizableSingleClassifierEnhancer
      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:

       -M <num>
        Sets the method to use. Valid values are 0 (1-against-all),
        1 (random codes), 2 (exhaustive code), and 3 (1-against-1). (default 0)
       
       -R <num>
        Sets the multiplier when using random codes. (default 2.0)
       -P
        Use pairwise coupling (only has an effect for 1-against1)
       -L
        Use log loss decoding for random and exhaustive codes.
       -S <num>
        Random number seed.
        (default 1)
       -D
        If set, classifier is run in debug mode and
        may output additional info to the console
       -W
        Full name of base classifier.
        (default: weka.classifiers.functions.Logistic)
       
       Options specific to classifier weka.classifiers.functions.Logistic:
       
       -D
        Turn on debugging output.
       -R <ridge>
        Set the ridge in the log-likelihood.
       -M <number>
        Set the maximum number of iterations (default -1, until convergence).
      Specified by:
      setOptions in interface OptionHandler
      Overrides:
      setOptions in class RandomizableSingleClassifierEnhancer
      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 RandomizableSingleClassifierEnhancer
      Returns:
      an array of strings suitable for passing to setOptions
    • globalInfo

      public String globalInfo()
      Returns:
      a description of the classifier suitable for displaying in the explorer/experimenter gui
    • logLossDecodingTipText

      public String logLossDecodingTipText()
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • getLogLossDecoding

      public boolean getLogLossDecoding()
      Whether log loss decoding is used for random or exhaustive codes.
      Returns:
      true if log loss is used
    • setLogLossDecoding

      public void setLogLossDecoding(boolean newlogLossDecoding)
      Sets whether log loss decoding is used for random or exhaustive codes.
      Parameters:
      newlogLossDecoding - true if log loss is to be used
    • randomWidthFactorTipText

      public String randomWidthFactorTipText()
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • getRandomWidthFactor

      public double getRandomWidthFactor()
      Gets the multiplier when generating random codes. Will generate numClasses * m_RandomWidthFactor codes.
      Returns:
      the width multiplier
    • setRandomWidthFactor

      public void setRandomWidthFactor(double newRandomWidthFactor)
      Sets the multiplier when generating random codes. Will generate numClasses * m_RandomWidthFactor codes.
      Parameters:
      newRandomWidthFactor - the new width multiplier
    • methodTipText

      public String methodTipText()
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • getMethod

      public SelectedTag getMethod()
      Gets the method used. Will be one of METHOD_1_AGAINST_ALL, METHOD_ERROR_RANDOM, METHOD_ERROR_EXHAUSTIVE, or METHOD_1_AGAINST_1.
      Returns:
      the current method.
    • setMethod

      public void setMethod(SelectedTag newMethod)
      Sets the method used. Will be one of METHOD_1_AGAINST_ALL, METHOD_ERROR_RANDOM, METHOD_ERROR_EXHAUSTIVE, or METHOD_1_AGAINST_1.
      Parameters:
      newMethod - the new method.
    • setUsePairwiseCoupling

      public void setUsePairwiseCoupling(boolean p)
      Set whether to use pairwise coupling with 1-vs-1 classification to improve probability estimates.
      Parameters:
      p - true if pairwise coupling is to be used
    • getUsePairwiseCoupling

      public boolean getUsePairwiseCoupling()
      Gets whether to use pairwise coupling with 1-vs-1 classification to improve probability estimates.
      Returns:
      true if pairwise coupling is to be used
    • usePairwiseCouplingTipText

      public String usePairwiseCouplingTipText()
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • pairwiseCoupling

      public static double[] pairwiseCoupling(double[][] n, double[][] r)
      Implements pairwise coupling.
      Parameters:
      n - the sum of weights used to train each model
      r - the probability estimate from each model
      Returns:
      the coupled estimates
    • getRevision

      public String getRevision()
      Returns the revision string.
      Specified by:
      getRevision in interface RevisionHandler
      Overrides:
      getRevision in class AbstractClassifier
      Returns:
      the revision
    • main

      public static void main(String[] argv)
      Main method for testing this class.
      Parameters:
      argv - the options