de.jstacs.models.discrete.inhomogeneous
Class FSDAGModel

java.lang.Object
  extended by de.jstacs.models.AbstractModel
      extended by de.jstacs.models.discrete.DiscreteGraphicalModel
          extended by de.jstacs.models.discrete.inhomogeneous.InhomogeneousDGM
              extended by de.jstacs.models.discrete.inhomogeneous.DAGModel
                  extended by de.jstacs.models.discrete.inhomogeneous.FSDAGModel
All Implemented Interfaces:
InstantiableFromParameterSet, Model, Storable, Cloneable
Direct Known Subclasses:
FSDAGModelForGibbsSampling

public class FSDAGModel
extends DAGModel

This class can be used for any discrete fixed structure directed acyclic graphical model ( FSDAGModel).

Author:
Jens Keilwagen

Field Summary
 
Fields inherited from class de.jstacs.models.discrete.inhomogeneous.DAGModel
constraints
 
Fields inherited from class de.jstacs.models.discrete.inhomogeneous.InhomogeneousDGM
DEFAULT_STREAM, sostream
 
Fields inherited from class de.jstacs.models.discrete.DiscreteGraphicalModel
params, trained
 
Fields inherited from class de.jstacs.models.AbstractModel
alphabets, length
 
Constructor Summary
FSDAGModel(FSDAGMParameterSet params)
          This is the main constructor.
FSDAGModel(StringBuffer xml)
          The standard constructor for the interface Storable.
 
Method Summary
 void drawParameters(Sample data, double[] weights, int[][] graph)
          This method draws the parameters of the model from the a posteriori density.
 String getInstanceName()
          Should return a short instance name such as iMM(0), BN(2), ...
 byte getMaximalMarkovOrder()
          This method returns the maximal used Markov order, if possible.
 String getStructure()
          Returns a String representation of the underlying graph.
protected  String getXMLTag()
          Returns the XML tag that is used for this model in DiscreteGraphicalModel.fromXML(StringBuffer) and DiscreteGraphicalModel.toXML().
protected  void set(DGMParameterSet params, boolean trained)
          Sets the parameters as internal parameters and does some essential computations.
static void train(Model[] models, int[][] graph, double[][] weights, Sample... data)
          Computes the models with structure graph.
 void train(Sample data, double[] weights)
          Trains the Model object given the data as Sample using the specified weights.
 void train(Sample data, double[] weights, int[][] graph)
          Computes the model with structure graph.
 
Methods inherited from class de.jstacs.models.discrete.inhomogeneous.DAGModel
checkAcyclic, clone, createConstraints, drawParameters, emitSample, estimateParameters, getFurtherModelInfos, getLogPriorTerm, getLogProbFor, getNumericalCharacteristics, getProbFor, setFurtherModelInfos, toString
 
Methods inherited from class de.jstacs.models.discrete.inhomogeneous.InhomogeneousDGM
check, setOutputStream
 
Methods inherited from class de.jstacs.models.discrete.DiscreteGraphicalModel
fromXML, getCurrentParameterSet, getDescription, getESS, isTrained, toXML
 
Methods inherited from class de.jstacs.models.AbstractModel
getAlphabetContainer, getCharacteristics, getLength, getLogProbFor, getLogProbFor, getLogProbFor, getLogProbFor, getPriorTerm, getProbFor, getProbFor, set, setNewAlphabetContainerInstance, train
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FSDAGModel

public FSDAGModel(FSDAGMParameterSet params)
           throws CloneNotSupportedException,
                  IllegalArgumentException,
                  NonParsableException
This is the main constructor. It creates a new FSDAGModel from the given FSDAGMParameterSet.

Parameters:
params - the given parameter set
Throws:
CloneNotSupportedException - if the parameter set could not be cloned
IllegalArgumentException - if the parameter set is not instantiated
NonParsableException - if the parameter set is not parsable
See Also:
DAGModel.DAGModel(de.jstacs.models.discrete.inhomogeneous.parameters.IDGMParameterSet)

FSDAGModel

public FSDAGModel(StringBuffer xml)
           throws NonParsableException
The standard constructor for the interface Storable. Creates a new FSDAGModel out of its XML representation.

Parameters:
xml - the XML representation as StringBuffer
Throws:
NonParsableException - if the FSDAGModel could not be reconstructed out of the XML representation (the StringBuffer could not be parsed)
See Also:
Storable, DAGModel.DAGModel(StringBuffer)
Method Detail

getInstanceName

public String getInstanceName()
Description copied from interface: Model
Should return a short instance name such as iMM(0), BN(2), ...

Returns:
a short instance name

getMaximalMarkovOrder

public byte getMaximalMarkovOrder()
Description copied from interface: Model
This method returns the maximal used Markov order, if possible.

Specified by:
getMaximalMarkovOrder in interface Model
Overrides:
getMaximalMarkovOrder in class AbstractModel
Returns:
maximal used Markov order

getXMLTag

protected String getXMLTag()
Description copied from class: DiscreteGraphicalModel
Returns the XML tag that is used for this model in DiscreteGraphicalModel.fromXML(StringBuffer) and DiscreteGraphicalModel.toXML().

Specified by:
getXMLTag in class DiscreteGraphicalModel
Returns:
the XML tag that is used in DiscreteGraphicalModel.fromXML(StringBuffer) and DiscreteGraphicalModel.toXML()
See Also:
DiscreteGraphicalModel.fromXML(StringBuffer), DiscreteGraphicalModel.toXML()

train

public void train(Sample data,
                  double[] weights)
           throws Exception
Description copied from interface: Model
Trains the Model object given the data as Sample using the specified weights. The weight at position i belongs to the element at position i. So the array weight should have the number of sequences in the sample as dimension. (Optionally it is possible to use weight == null if all weights have the value one.)
This method should work non-incrementally. That means the result of the following series: train(data1); train(data2) should be a fully trained model over data2 and not over data1+data2. All parameters of the model were given by the call of the constructor.

Parameters:
data - the given sequences as Sample
weights - the weights of the elements, each weight should be non-negative
Throws:
Exception - if the training did not succeed (e.g. the dimension of weights and the number of sequences in the sample do not match)
See Also:
Sample.getElementAt(int), Sample.ElementEnumerator

train

public void train(Sample data,
                  double[] weights,
                  int[][] graph)
           throws Exception
Computes the model with structure graph.

Parameters:
data - the Sample
weights - the weights for the sequences in the Sample
graph - the graph
Throws:
Exception - if something went wrong

drawParameters

public void drawParameters(Sample data,
                           double[] weights,
                           int[][] graph)
                    throws Exception
This method draws the parameters of the model from the a posteriori density. For drawing from the prior you have to set the data and their weights to null. Furthermore this method enables you to specify a new graph structure.

Parameters:
data - a Sample or null
weights - the (positive) weights for each sequence of the Sample or null
graph - the graph or null for the current graph
Throws:
Exception - if something went wrong
See Also:
DAGModel.drawParameters(Sample, double[]), DAGModel.checkAcyclic(int, int[][])

train

public static void train(Model[] models,
                         int[][] graph,
                         double[][] weights,
                         Sample... data)
                  throws Exception
Computes the models with structure graph.

Parameters:
models - an array of AbstractModels containing only instances of FSDAGModel
data - the Sample
weights - the weights for the sequences in the Sample
graph - the graph
Throws:
Exception - if something went wrong

set

protected void set(DGMParameterSet params,
                   boolean trained)
            throws CloneNotSupportedException,
                   NonParsableException
Description copied from class: DiscreteGraphicalModel
Sets the parameters as internal parameters and does some essential computations. Used in fromParameterSet-methods.

Overrides:
set in class InhomogeneousDGM
Parameters:
params - the new ParameterSet
trained - indicates if the model is trained or not
Throws:
CloneNotSupportedException - if the parameter set could not be cloned
NonParsableException - if the parameters of the model could not be parsed

getStructure

public String getStructure()
Description copied from class: InhomogeneousDGM
Returns a String representation of the underlying graph.

Overrides:
getStructure in class DAGModel
Returns:
a String representation of the underlying graph