weka.classifiers.bayes.net.search.local
Class K2

java.lang.Object
  extended by weka.classifiers.bayes.net.search.SearchAlgorithm
      extended by weka.classifiers.bayes.net.search.local.LocalScoreSearchAlgorithm
          extended by weka.classifiers.bayes.net.search.local.K2
All Implemented Interfaces:
java.io.Serializable, OptionHandler, RevisionHandler, TechnicalInformationHandler

public class K2
extends LocalScoreSearchAlgorithm
implements TechnicalInformationHandler

This Bayes Network learning algorithm uses a hill climbing algorithm restricted by an order on the variables.

For more information see:

G.F. Cooper, E. Herskovits (1990). A Bayesian method for constructing Bayesian belief networks from databases.

G. Cooper, E. Herskovits (1992). A Bayesian method for the induction of probabilistic networks from data. Machine Learning. 9(4):309-347.

Works with nominal variables and no missing values only.

BibTeX:

 @proceedings{Cooper1990,
    author = {G.F. Cooper and E. Herskovits},
    booktitle = {Proceedings of the Conference on Uncertainty in AI},
    pages = {86-94},
    title = {A Bayesian method for constructing Bayesian belief networks from databases},
    year = {1990}
 }
 
 @article{Cooper1992,
    author = {G. Cooper and E. Herskovits},
    journal = {Machine Learning},
    number = {4},
    pages = {309-347},
    title = {A Bayesian method for the induction of probabilistic networks from data},
    volume = {9},
    year = {1992}
 }
 

Valid options are:

 -N
  Initial structure is empty (instead of Naive Bayes)
 -P <nr of parents>
  Maximum number of parents
 -R
  Random order.
  (default false)
 -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: 1.8 $
Author:
Remco Bouckaert ([email protected])
See Also:
Serialized Form

Field Summary
 
Fields inherited from class weka.classifiers.bayes.net.search.local.LocalScoreSearchAlgorithm
TAGS_SCORE_TYPE
 
Constructor Summary
K2()
           
 
Method Summary
 boolean getInitAsNaiveBayes()
          Gets whether to init as naive bayes
 int getMaxNrOfParents()
          Gets the max number of parents.
 java.lang.String[] getOptions()
          Gets the current settings of the search algorithm.
 boolean getRandomOrder()
          Get random order flag
 java.lang.String getRevision()
          Returns the revision string.
 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 search algorithm.
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options.
 java.lang.String randomOrderTipText()
           
 void search(BayesNet bayesNet, Instances instances)
          search determines the network structure/graph of the network with the K2 algorithm, restricted by its initial structure (which can be an empty graph, or a Naive Bayes graph.
 void setInitAsNaiveBayes(boolean bInitAsNaiveBayes)
          Sets whether to init as naive bayes
 void setMaxNrOfParents(int nMaxNrOfParents)
          Sets the max number of parents
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 void setRandomOrder(boolean bRandomOrder)
          Set random order flag
 
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

K2

public K2()
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

search

public void search(BayesNet bayesNet,
                   Instances instances)
            throws java.lang.Exception
search determines the network structure/graph of the network with the K2 algorithm, restricted by its initial structure (which can be an empty graph, or a Naive Bayes graph.

Parameters:
bayesNet - the network
instances - the data to work with
Throws:
java.lang.Exception - if something goes wrong

setMaxNrOfParents

public void setMaxNrOfParents(int nMaxNrOfParents)
Sets the max number of parents

Parameters:
nMaxNrOfParents - the max number of parents

getMaxNrOfParents

public int getMaxNrOfParents()
Gets the max number of parents.

Returns:
the max number of parents

setInitAsNaiveBayes

public void setInitAsNaiveBayes(boolean bInitAsNaiveBayes)
Sets whether to init as naive bayes

Parameters:
bInitAsNaiveBayes - whether to init as naive bayes

getInitAsNaiveBayes

public boolean getInitAsNaiveBayes()
Gets whether to init as naive bayes

Returns:
whether to init as naive bayes

setRandomOrder

public void setRandomOrder(boolean bRandomOrder)
Set random order flag

Parameters:
bRandomOrder - the random order flag

getRandomOrder

public boolean getRandomOrder()
Get random order flag

Returns:
the random order flag

listOptions

public java.util.Enumeration listOptions()
Returns an enumeration describing the available options.

Specified by:
listOptions in interface OptionHandler
Overrides:
listOptions in class LocalScoreSearchAlgorithm
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:

 -N
  Initial structure is empty (instead of Naive Bayes)
 -P <nr of parents>
  Maximum number of parents
 -R
  Random order.
  (default false)
 -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 LocalScoreSearchAlgorithm
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 LocalScoreSearchAlgorithm
Returns:
an array of strings suitable for passing to setOptions

globalInfo

public java.lang.String globalInfo()
This will return a string describing the search algorithm.

Overrides:
globalInfo in class LocalScoreSearchAlgorithm
Returns:
The string.

randomOrderTipText

public java.lang.String randomOrderTipText()
Returns:
a string to describe the RandomOrder option.

getRevision

public java.lang.String getRevision()
Returns the revision string.

Specified by:
getRevision in interface RevisionHandler
Overrides:
getRevision in class LocalScoreSearchAlgorithm
Returns:
the revision