Class DTNB

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, AdditionalMeasureProducer, CapabilitiesHandler, OptionHandler, RevisionHandler, TechnicalInformationHandler, WeightedInstancesHandler

    public class DTNB
    extends DecisionTable
    Class for building and using a decision table/naive bayes hybrid classifier. At each point in the search, the algorithm evaluates the merit of dividing the attributes into two disjoint subsets: one for the decision table, the other for naive Bayes. A forward selection search is used, where at each step, selected attributes are modeled by naive Bayes and the remainder by the decision table, and all attributes are modelled by the decision table initially. At each step, the algorithm also considers dropping an attribute entirely from the model.

    For more information, see:

    Mark Hall, Eibe Frank: Combining Naive Bayes and Decision Tables. In: Proceedings of the 21st Florida Artificial Intelligence Society Conference (FLAIRS), ???-???, 2008.

    BibTeX:

     @inproceedings{Hall2008,
        author = {Mark Hall and Eibe Frank},
        booktitle = {Proceedings of the 21st Florida Artificial Intelligence Society Conference (FLAIRS)},
        pages = {318-319},
        publisher = {AAAI press},
        title = {Combining Naive Bayes and Decision Tables},
        year = {2008}
     }
     

    Valid options are:

     -X <number of folds>
      Use cross validation to evaluate features.
      Use number of folds = 1 for leave one out CV.
      (Default = leave one out CV)
     -E <acc | rmse | mae | auc>
      Performance evaluation measure to use for selecting attributes.
      (Default = accuracy for discrete class and rmse for numeric class)
     -I
      Use nearest neighbour instead of global table majority.
     -R
      Display decision table rules.
     
    Version:
    $Revision: 6269 $
    Author:
    Mark Hall (mhall{[at]}pentaho{[dot]}org), Eibe Frank (eibe{[at]}cs{[dot]}waikato{[dot]}ac{[dot]}nz)
    See Also:
    Serialized Form
    • Constructor Detail

      • DTNB

        public DTNB()
    • Method Detail

      • globalInfo

        public java.lang.String globalInfo()
        Returns a string describing classifier
        Overrides:
        globalInfo in class DecisionTable
        Returns:
        a description suitable for displaying in the explorer/experimenter gui
      • buildClassifier

        public void buildClassifier​(Instances data)
                             throws java.lang.Exception
        Generates the classifier.
        Overrides:
        buildClassifier in class DecisionTable
        Parameters:
        data - set of instances serving as training data
        Throws:
        java.lang.Exception - if the classifier has not been generated successfully
      • distributionForInstance

        public double[] distributionForInstance​(Instance instance)
                                         throws java.lang.Exception
        Calculates the class membership probabilities for the given test instance.
        Overrides:
        distributionForInstance in class DecisionTable
        Parameters:
        instance - the instance to be classified
        Returns:
        predicted class probability distribution
        Throws:
        java.lang.Exception - if distribution can't be computed
      • toString

        public java.lang.String toString()
        Description copied from class: DecisionTable
        Returns a description of the classifier.
        Overrides:
        toString in class DecisionTable
        Returns:
        a description of the classifier as a string.
      • measurePercentAttsUsedByDT

        public double measurePercentAttsUsedByDT()
        Returns the number of rules
        Returns:
        the number of rules
      • getMeasure

        public double getMeasure​(java.lang.String additionalMeasureName)
        Returns the value of the named measure
        Specified by:
        getMeasure in interface AdditionalMeasureProducer
        Overrides:
        getMeasure in class DecisionTable
        Parameters:
        additionalMeasureName - the name of the measure to query for its value
        Returns:
        the value of the named measure
        Throws:
        java.lang.IllegalArgumentException - if the named measure is not supported
      • setSearch

        public void setSearch​(ASSearch search)
        Sets the search method to use
        Overrides:
        setSearch in class DecisionTable
        Parameters:
        search -
      • getSearch

        public ASSearch getSearch()
        Gets the current search method
        Overrides:
        getSearch in class DecisionTable
        Returns:
        the search method used
      • listOptions

        public java.util.Enumeration listOptions()
        Returns an enumeration describing the available options.
        Specified by:
        listOptions in interface OptionHandler
        Overrides:
        listOptions in class DecisionTable
        Returns:
        an enumeration of all the available options.
      • setOptions

        public void setOptions​(java.lang.String[] options)
                        throws java.lang.Exception
        Parses the options for this object.

        Valid options are:

         -X <number of folds>
          Use cross validation to evaluate features.
          Use number of folds = 1 for leave one out CV.
          (Default = leave one out CV)
         -E <acc | rmse | mae | auc>
          Performance evaluation measure to use for selecting attributes.
          (Default = accuracy for discrete class and rmse for numeric class)
         -I
          Use nearest neighbour instead of global table majority.
         -R
          Display decision table rules.
         
        Specified by:
        setOptions in interface OptionHandler
        Overrides:
        setOptions in class DecisionTable
        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 DecisionTable
        Returns:
        an array of strings suitable for passing to setOptions
      • main

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