weka.classifiers.bayes.net.search.local

## Class TabuSearch

- java.lang.Object
- - weka.classifiers.bayes.net.search.SearchAlgorithm
  - - weka.classifiers.bayes.net.search.local.LocalScoreSearchAlgorithm
    - - weka.classifiers.bayes.net.search.local.HillClimber
      - - weka.classifiers.bayes.net.search.local.TabuSearch

- All Implemented Interfaces:
    java.io.Serializable, OptionHandler, RevisionHandler, TechnicalInformationHandler

      public class TabuSearch
      extends HillClimber
      implements TechnicalInformationHandler

  This Bayes Network learning algorithm uses tabu search for finding a well scoring Bayes network structure. Tabu search is hill climbing till an optimum is reached. The following step is the least worst possible step. The last X steps are kept in a list and none of the steps in this so called tabu list is considered in taking the next step. The best network found in this traversal is returned.
  For more information see:
  R.R. Bouckaert (1995). Bayesian Belief Networks: from Construction to Inference. Utrecht, Netherlands.

  BibTeX:

       @phdthesis{Bouckaert1995,
          address = {Utrecht, Netherlands},
          author = {R.R. Bouckaert},
          institution = {University of Utrecht},
          title = {Bayesian Belief Networks: from Construction to Inference},
          year = {1995}
       }

  Valid options are:

       -L <integer>
        Tabu list length

       -U <integer>
        Number of runs

       -P <nr of parents>
        Maximum number of parents

       -R
        Use arc reversal operation.
        (default false)

       -P <nr of parents>
        Maximum number of parents

       -R
        Use arc reversal operation.
        (default false)

       -N
        Initial structure is empty (instead of Naive Bayes)

       -mbc
        Applies a Markov Blanket correction to the network structure,
        after a network structure is learned. This ensures that all
        nodes in the network are part of the Markov blanket of the
        classifier node.

       -S [BAYES|MDL|ENTROPY|AIC|CROSS_CLASSIC|CROSS_BAYES]
        Score type (BAYES, BDeu, MDL, ENTROPY and AIC)

  Version:
    $Revision: 10154 $
  Author:
    Remco Bouckaert (rrb@xm.co.nz)
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class weka.classifiers.bayes.net.search.local.LocalScoreSearchAlgorithm

      `TAGS_SCORE_TYPE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TabuSearch()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.String[]` | `getOptions()` Gets the current settings of the search algorithm.
    `java.lang.String` | `getRevision()` Returns the revision string.
    `int` | `getRuns()`
    `int` | `getTabuList()`
    `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.
    `java.lang.String` | `globalInfo()` This will return a string describing the classifier.
    `java.util.Enumeration<Option>` | `listOptions()` Returns an enumeration describing the available options.
    `java.lang.String` | `runsTipText()`
    `void` | `setOptions(java.lang.String[] options)` Parses a given list of options.
    `void` | `setRuns(int nRuns)` Sets the number of runs
    `void` | `setTabuList(int nTabuList)` Sets the Tabu List length.
    `java.lang.String` | `tabuListTipText()`

    - ### Methods inherited from class weka.classifiers.bayes.net.search.local.HillClimber

      `getInitAsNaiveBayes, getMaxNrOfParents, getUseArcReversal, setInitAsNaiveBayes, setMaxNrOfParents, setUseArcReversal, useArcReversalTipText`

    - ### Methods inherited from class weka.classifiers.bayes.net.search.local.LocalScoreSearchAlgorithm

      `buildStructure, calcNodeScore, calcScoreWithExtraParent, calcScoreWithMissingParent, getMarkovBlanketClassifier, getScoreType, logScore, markovBlanketClassifierTipText, scoreTypeTipText, setMarkovBlanketClassifier, setScoreType`

    - ### Methods inherited from class weka.classifiers.bayes.net.search.SearchAlgorithm

      `initAsNaiveBayesTipText, maxNrOfParentsTipText, toString`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### TabuSearch

          public TabuSearch()

  - ### Method Detail

    - #### 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

    - #### getRuns

          public int getRuns()

      Returns:
        number of runs

    - #### setRuns

          public void setRuns(int nRuns)

      Sets the number of runs
      Parameters:
        `nRuns` - The number of runs to set

    - #### getTabuList

          public int getTabuList()

      Returns:
        the Tabu List length

    - #### setTabuList

          public void setTabuList(int nTabuList)

      Sets the Tabu List length.
      Parameters:
        `nTabuList` - The nTabuList to set

    - #### listOptions

          public java.util.Enumeration<Option> listOptions()

      Returns an enumeration describing the available options.
      Specified by:
        `listOptions` in interface `OptionHandler`
      Overrides:
        `listOptions` in class `HillClimber`
      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 <integer>
            Tabu list length

           -U <integer>
            Number of runs

           -P <nr of parents>
            Maximum number of parents

           -R
            Use arc reversal operation.
            (default false)

           -P <nr of parents>
            Maximum number of parents

           -R
            Use arc reversal operation.
            (default false)

           -N
            Initial structure is empty (instead of Naive Bayes)

           -mbc
            Applies a Markov Blanket correction to the network structure,
            after a network structure is learned. This ensures that all
            nodes in the network are part of the Markov blanket of the
            classifier node.

           -S [BAYES|MDL|ENTROPY|AIC|CROSS_CLASSIC|CROSS_BAYES]
            Score type (BAYES, BDeu, MDL, ENTROPY and AIC)

      Specified by:
        `setOptions` in interface `OptionHandler`
      Overrides:
        `setOptions` in class `HillClimber`
      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 search algorithm.
      Specified by:
        `getOptions` in interface `OptionHandler`
      Overrides:
        `getOptions` in class `HillClimber`
      Returns:
        an array of strings suitable for passing to setOptions

    - #### globalInfo

          public java.lang.String globalInfo()

      This will return a string describing the classifier.
      Overrides:
        `globalInfo` in class `HillClimber`
      Returns:
        The string.

    - #### runsTipText

          public java.lang.String runsTipText()

      Returns:
        a string to describe the Runs option.

    - #### tabuListTipText

          public java.lang.String tabuListTipText()

      Returns:
        a string to describe the TabuList option.

    - #### getRevision

          public java.lang.String getRevision()

      Returns the revision string.
      Specified by:
        `getRevision` in interface `RevisionHandler`
      Overrides:
        `getRevision` in class `HillClimber`
      Returns:
        the revision