Class LWLSynchroSplit

  • All Implemented Interfaces:
    adams.core.Stoppable, adams.core.StoppableWithFeedback, Serializable, Cloneable, weka.classifiers.Classifier, ThreadSafeClassifier, weka.classifiers.UpdateableClassifier, weka.core.BatchPredictor, weka.core.CapabilitiesHandler, weka.core.CapabilitiesIgnorer, weka.core.CommandlineRunnable, weka.core.OptionHandler, weka.core.RevisionHandler, weka.core.TechnicalInformationHandler, weka.core.WeightedInstancesHandler

    public class LWLSynchroSplit
    extends weka.classifiers.lazy.LWL
    implements ThreadSafeClassifier, adams.core.StoppableWithFeedback
    Locally weighted learning. Uses an instance-based algorithm to assign instance weights which are then used by a specified WeightedInstancesHandler.
    Can do classification (e.g. using naive Bayes) or regression (e.g. using linear regression).

    For more info, see

    Eibe Frank, Mark Hall, Bernhard Pfahringer: Locally Weighted Naive Bayes. In: 19th Conference in Uncertainty in Artificial Intelligence, 249-256, 2003.

    C. Atkeson, A. Moore, S. Schaal (1996). Locally weighted learning. AI Review..

    This version of LWL applies two filters to the incoming training data:
    - search filter: generates the data use for the neighborhood search algorithm
    - train filter: generates the data to use for building the base classifierThe dataset indices determined by the search algorithm are used to compile the subset from the train filter dataset which is used for building the base classifier.

    BibTeX:
     @inproceedings{Frank2003,
        author = {Eibe Frank and Mark Hall and Bernhard Pfahringer},
        booktitle = {19th Conference in Uncertainty in Artificial Intelligence},
        pages = {249-256},
        publisher = {Morgan Kaufmann},
        title = {Locally Weighted Naive Bayes},
        year = {2003}
     }
    
     @article{Atkeson1996,
        author = {C. Atkeson and A. Moore and S. Schaal},
        journal = {AI Review},
        title = {Locally weighted learning},
        year = {1996}
     }
     


    Valid options are:

     -filter-search <filter specification>
      The filter to use for generating the data for the search.
      (default: weka.filters.AllFilter)
     -filter-train <filter specification>
      The filter to use for generating the data for training the base classifier.
      (default: weka.filters.AllFilter)
     -no-update
      Suppresses the update of the nearest neighbor search (nns)
      algorithm with the data that is to be classified.
     (default: nns gets updated).
     
     -A
      The nearest neighbour search algorithm to use (default: weka.core.neighboursearch.LinearNNSearch).
     
     -K <number of neighbours>
      Set the number of neighbours used to set the kernel bandwidth.
      (default all)
     -U <number of weighting method>
      Set the weighting kernel shape to use. 0=Linear, 1=Epanechnikov,
      2=Tricube, 3=Inverse, 4=Gaussian.
      (default 0 = Linear)
     -W <classifier name>
      Full name of base classifier.
      (default: weka.classifiers.functions.GPD)
     -output-debug-info
      If set, classifier is run in debug mode and
      may output additional info to the console
     -do-not-check-capabilities
      If set, classifier capabilities are not checked before classifier is built
      (use with caution).
     -num-decimal-places
      The number of decimal places for the output of numbers in the model (default 2).
     -batch-size
      The desired batch size for batch prediction  (default 100).
     Options specific to classifier weka.classifiers.functions.GPD:
     
     -output-debug-info
      If set, classifier is run in debug mode and
      may output additional info to the console
     -do-not-check-capabilities
      If set, classifier capabilities are not checked before classifier is built
      (use with caution).
     -num-decimal-places
      The number of decimal places for the output of numbers in the model (default 2).
     -batch-size
      The desired batch size for batch prediction  (default 100).
     -L <double>
      Level of Gaussian Noise.
      (default: 0.01)
     -G <double>
      Gamma for the RBF kernel.
      (default: 0.01)
     -N
      Whether to 0=normalize/1=standardize/2=neither.
      (default: 0=normalize)
     -output-debug-info
      If set, classifier is run in debug mode and
      may output additional info to the console
     -do-not-check-capabilities
      If set, classifier capabilities are not checked before classifier is built
      (use with caution).
     -num-decimal-places
      The number of decimal places for the output of numbers in the model (default 2).
     -batch-size
      The desired batch size for batch prediction  (default 100).
    Note: the build(Instance) needs manual syncing with the original WEKA classifier (distributionForInstance(Instance) method).
    Author:
    Len Trigg ([email protected]), Eibe Frank ([email protected]), Ashraf M. Kibriya (amk14[at-the-rate]cs[dot]waikato[dot]ac[dot]nz), Dale (dale at waikato dot ac dot nz), FracPete (fracpete at waikato dot ac dot nz)
    See Also:
    LWL.distributionForInstance(Instance), Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected weka.core.Instances m_DataSearch
      the data to use for the search.
      protected weka.core.Instances m_DataTrain
      the data to use for building the base classifier.
      protected weka.filters.Filter m_FilterSearch
      the filter to apply to the search data.
      protected weka.filters.Filter m_FilterTrain
      the filter to apply to the neighborhood data before training the base classifier.
      protected boolean m_NoUpdate
      whether to suppress the update of the nearest-neighbor search algorithm when making predictions.
      protected boolean m_Stopped
      whether the classifier was stopped.
      • Fields inherited from class weka.classifiers.lazy.LWL

        CONSTANT, EPANECHNIKOV, GAUSS, INVERSE, LINEAR, m_kNN, m_NNSearch, m_Train, m_UseAllK, m_WeightKernel, m_ZeroR, TRICUBE
      • Fields inherited from class weka.classifiers.SingleClassifierEnhancer

        m_Classifier
      • Fields inherited from class weka.classifiers.AbstractClassifier

        BATCH_SIZE_DEFAULT, m_BatchSize, m_Debug, m_DoNotCheckCapabilities, m_numDecimalPlaces, NUM_DECIMAL_PLACES_DEFAULT
    • Constructor Summary

      Constructors 
      Constructor Description
      LWLSynchroSplit()
      Initializes the classifier.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void build​(weka.core.Instance instance)
      Builds the classifier.
      void buildClassifier​(weka.core.Instances instances)
      Generates a classifier.
      protected String defaultClassifierString()
      Default classifier classname.
      double[] distributionForInstance​(weka.core.Instance instance)
      Calculates the class membership probabilities for the given test instance.
      String filterSearchTipText()
      Returns the tip text for this property.
      String filterTrainTipText()
      Returns the tip text for this property.
      weka.filters.Filter getFilterSearch()
      Returns the filter to generate the data for the search.
      weka.filters.Filter getFilterTrain()
      Returns the filter to use for to generate the training data for the base classifier.
      boolean getNoUpdate()
      Returns whether to suppress the update of the nearest-neighbor search algorithm when making predictions.
      String[] getOptions()
      Gets the current settings of the classifier.
      String getRevision()
      Returns the revision string.
      String globalInfo()
      Returns a string describing classifier.
      boolean isStopped()
      Whether the execution has been stopped.
      Enumeration listOptions()
      Returns an enumeration describing the available options.
      static void main​(String[] argv)
      Main method for testing this class.
      String noUpdateTipText()
      Returns the tip text for this property.
      void setFilterSearch​(weka.filters.Filter value)
      Sets filter to generate the data for the search.
      void setFilterTrain​(weka.filters.Filter value)
      Sets filter to use for to generate the training data for the base classifier.
      void setNearestNeighbourSearchAlgorithm​(weka.core.neighboursearch.NearestNeighbourSearch nearestNeighbourSearchAlgorithm)
      Sets the nearestNeighbourSearch algorithm to be used for finding nearest neighbour(s).
      void setNoUpdate​(boolean value)
      Sets whether to suppress updating the nearest-neighbor search algorithm when making predictions.
      void setOptions​(String[] options)
      Parses a given list of options.
      void stopExecution()
      Stops the execution.
      String toString()
      Returns a description of this classifier.
      • Methods inherited from class weka.classifiers.lazy.LWL

        enumerateMeasures, getCapabilities, getKNN, getMeasure, getNearestNeighbourSearchAlgorithm, getTechnicalInformation, getWeightingKernel, KNNTipText, nearestNeighbourSearchAlgorithmTipText, setKNN, setWeightingKernel, updateClassifier, weightingKernelTipText
      • Methods inherited from class weka.classifiers.SingleClassifierEnhancer

        classifierTipText, defaultClassifierOptions, getClassifier, getClassifierSpec, postExecution, preExecution, setClassifier
      • Methods inherited from class weka.classifiers.AbstractClassifier

        batchSizeTipText, classifyInstance, debugTipText, distributionsForInstances, doNotCheckCapabilitiesTipText, forName, getBatchSize, getDebug, getDoNotCheckCapabilities, getNumDecimalPlaces, implementsMoreEfficientBatchPrediction, makeCopies, makeCopy, numDecimalPlacesTipText, run, runClassifier, setBatchSize, setDebug, setDoNotCheckCapabilities, setNumDecimalPlaces
      • Methods inherited from interface weka.classifiers.Classifier

        classifyInstance, getCapabilities
    • Field Detail

      • m_NoUpdate

        protected boolean m_NoUpdate
        whether to suppress the update of the nearest-neighbor search algorithm when making predictions.
      • m_Stopped

        protected boolean m_Stopped
        whether the classifier was stopped.
      • m_FilterSearch

        protected weka.filters.Filter m_FilterSearch
        the filter to apply to the search data.
      • m_FilterTrain

        protected weka.filters.Filter m_FilterTrain
        the filter to apply to the neighborhood data before training the base classifier.
      • m_DataSearch

        protected weka.core.Instances m_DataSearch
        the data to use for the search.
      • m_DataTrain

        protected weka.core.Instances m_DataTrain
        the data to use for building the base classifier.
    • Constructor Detail

      • LWLSynchroSplit

        public LWLSynchroSplit()
        Initializes the classifier.
    • Method Detail

      • globalInfo

        public String globalInfo()
        Returns a string describing classifier.
        Overrides:
        globalInfo in class weka.classifiers.lazy.LWL
        Returns:
        a description suitable for displaying in the explorer/experimenter gui
      • defaultClassifierString

        protected String defaultClassifierString()
        Default classifier classname.
        Overrides:
        defaultClassifierString in class weka.classifiers.lazy.LWL
        Returns:
        the classname
      • listOptions

        public Enumeration listOptions()
        Returns an enumeration describing the available options.
        Specified by:
        listOptions in interface weka.core.OptionHandler
        Overrides:
        listOptions in class weka.classifiers.lazy.LWL
        Returns:
        an enumeration of all the available options.
      • setOptions

        public void setOptions​(String[] options)
                        throws Exception
        Parses a given list of options.
        Specified by:
        setOptions in interface weka.core.OptionHandler
        Overrides:
        setOptions in class weka.classifiers.lazy.LWL
        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 weka.core.OptionHandler
        Overrides:
        getOptions in class weka.classifiers.lazy.LWL
        Returns:
        an array of strings suitable for passing to setOptions
      • setNearestNeighbourSearchAlgorithm

        public void setNearestNeighbourSearchAlgorithm​(weka.core.neighboursearch.NearestNeighbourSearch nearestNeighbourSearchAlgorithm)
        Sets the nearestNeighbourSearch algorithm to be used for finding nearest neighbour(s).
        Overrides:
        setNearestNeighbourSearchAlgorithm in class weka.classifiers.lazy.LWL
        Parameters:
        nearestNeighbourSearchAlgorithm - - The NearestNeighbourSearch class.
      • setNoUpdate

        public void setNoUpdate​(boolean value)
        Sets whether to suppress updating the nearest-neighbor search algorithm when making predictions.
        Parameters:
        value - if true then no update happens.
      • getNoUpdate

        public boolean getNoUpdate()
        Returns whether to suppress the update of the nearest-neighbor search algorithm when making predictions.
        Returns:
        true if the update is suppressed
      • noUpdateTipText

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

        public void setFilterSearch​(weka.filters.Filter value)
        Sets filter to generate the data for the search.
        Parameters:
        value - the filter
      • getFilterSearch

        public weka.filters.Filter getFilterSearch()
        Returns the filter to generate the data for the search.
        Returns:
        the filter
      • filterSearchTipText

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

        public void setFilterTrain​(weka.filters.Filter value)
        Sets filter to use for to generate the training data for the base classifier.
        Parameters:
        value - the filter
      • getFilterTrain

        public weka.filters.Filter getFilterTrain()
        Returns the filter to use for to generate the training data for the base classifier.
        Returns:
        the filter
      • filterTrainTipText

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

        public void buildClassifier​(weka.core.Instances instances)
                             throws Exception
        Generates a classifier. Must initialize all fields of the classifier that are not being set via options (ie. multiple calls of buildClassifier must always lead to the same result). Must not change the dataset in any way.
        Specified by:
        buildClassifier in interface weka.classifiers.Classifier
        Overrides:
        buildClassifier in class weka.classifiers.lazy.LWL
        Parameters:
        instances - set of instances serving as training data
        Throws:
        Exception - if the classifier has not been generated successfully
      • build

        protected void build​(weka.core.Instance instance)
                      throws Exception
        Builds the classifier.

        Note: needs manual syncing with the distributionForInstance method of the original WEKA classifier.
        Parameters:
        instance - the instance to make prediction for
        Throws:
        Exception - if build fails
        See Also:
        LWL.distributionForInstance(Instance)
      • distributionForInstance

        public double[] distributionForInstance​(weka.core.Instance instance)
                                         throws Exception
        Calculates the class membership probabilities for the given test instance.
        Specified by:
        distributionForInstance in interface weka.classifiers.Classifier
        Overrides:
        distributionForInstance in class weka.classifiers.lazy.LWL
        Parameters:
        instance - the instance to be classified
        Returns:
        predicted class probability distribution
        Throws:
        Exception - if distribution can't be computed successfully
      • toString

        public String toString()
        Returns a description of this classifier.
        Overrides:
        toString in class weka.classifiers.lazy.LWL
        Returns:
        a description of this classifier as a string.
      • stopExecution

        public void stopExecution()
        Stops the execution.
        Specified by:
        stopExecution in interface adams.core.Stoppable
      • isStopped

        public boolean isStopped()
        Whether the execution has been stopped.
        Specified by:
        isStopped in interface adams.core.StoppableWithFeedback
        Returns:
        true if stopped
      • getRevision

        public String getRevision()
        Returns the revision string.
        Specified by:
        getRevision in interface weka.core.RevisionHandler
        Overrides:
        getRevision in class weka.classifiers.lazy.LWL
        Returns:
        the revision
      • main

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