|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectde.jstacs.models.AbstractModel
de.jstacs.models.mixture.AbstractMixtureModel
de.jstacs.models.mixture.MixtureModel
public class MixtureModel
Class for a mixture model of any Models.
If you use Gibbs sampling temporary files will be created in the Java temp
folder. These files will be deleted if no reference to the current instance exists and the Garbage collector is
called. Therefore it is recommended to call the Garbage collector explicitly at the end of any application.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class de.jstacs.models.mixture.AbstractMixtureModel |
|---|
AbstractMixtureModel.Algorithm, AbstractMixtureModel.Parameterization |
| Field Summary |
|---|
| Fields inherited from class de.jstacs.models.mixture.AbstractMixtureModel |
|---|
algorithm, algorithmHasBeenRun, alternativeModel, burnInTest, componentHyperParams, compProb, counter, dimension, estimateComponentProbs, file, filereader, filewriter, initialIteration, logWeights, model, optimizeModel, sample, samplingIndex, sostream, starts, stationaryIteration, weights |
| Fields inherited from class de.jstacs.models.AbstractModel |
|---|
alphabets, length |
| Constructor Summary | |
|---|---|
|
MixtureModel(int length,
Model[] models,
double[] weights,
int starts,
double alpha,
double eps,
AbstractMixtureModel.Parameterization parametrization)
Creates an instance using EM and fixed component probabilities. |
|
MixtureModel(int length,
Model[] models,
double[] weights,
int starts,
int initialIteration,
int stationaryIteration,
BurnInTest burnInTest)
Creates an instance using Gibbs Sampling and fixed component probabilities. |
protected |
MixtureModel(int length,
Model[] models,
int starts,
boolean estimateComponentProbs,
double[] componentHyperParams,
double[] weights,
AbstractMixtureModel.Algorithm algorithm,
double alpha,
double eps,
AbstractMixtureModel.Parameterization parametrization,
int initialIteration,
int stationaryIteration,
BurnInTest burnInTest)
Creates a new MixtureModel. |
|
MixtureModel(int length,
Model[] models,
int starts,
double[] componentHyperParams,
double alpha,
double eps,
AbstractMixtureModel.Parameterization parametrization)
Creates an instance using EM and estimating the component probabilities. |
|
MixtureModel(int length,
Model[] models,
int starts,
double[] componentHyperParams,
int initialIteration,
int stationaryIteration,
BurnInTest burnInTest)
Creates an instance using Gibbs Sampling and sampling the component probabilities. |
|
MixtureModel(StringBuffer xml)
The constructor for the interface Storable. |
| Method Summary | |
|---|---|
protected double[][] |
doFirstIteration(double[] dataWeights,
MultivariateRandomGenerator m,
MRGParams[] params)
This method will do the first step in the train algorithm for the current model on the internal sample. |
double[][] |
doFirstIteration(Sample data,
double[] dataWeights,
double[][] partitioning)
This method enables you to train a mixture model with a fixed start partitioning. |
protected Sequence[] |
emitSampleUsingCurrentParameterSet(int n,
int... lengths)
The method returns an array of sequences using the current parameter set. |
protected double |
getLogProbUsingCurrentParameterSetFor(int component,
Sequence s,
int start,
int end)
Returns the log probability for the sequence and the given component using the current parameter set. |
protected double |
getNewWeights(double[] dataWeights,
double[] w,
double[][] seqweights)
Computes sequence weights and returns the score. |
protected void |
setTrainData(Sample data)
This method is invoked by the train method and set for a given sample the sample that should be used for train. |
String |
toString()
Should give a simple representation (text) of the model as String. |
| Methods inherited from class de.jstacs.models.AbstractModel |
|---|
getAlphabetContainer, getLength, getLogProbFor, getLogProbFor, getLogProbFor, getMaximalMarkovOrder, getPriorTerm, getProbFor, getProbFor, setNewAlphabetContainerInstance, train |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
protected MixtureModel(int length,
Model[] models,
int starts,
boolean estimateComponentProbs,
double[] componentHyperParams,
double[] weights,
AbstractMixtureModel.Algorithm algorithm,
double alpha,
double eps,
AbstractMixtureModel.Parameterization parametrization,
int initialIteration,
int stationaryIteration,
BurnInTest burnInTest)
throws IllegalArgumentException,
WrongAlphabetException,
CloneNotSupportedException
length - the length used in this modelmodels - the single models building the MixtureModel, if the model is trained using
AbstractMixtureModel.Algorithm.GIBBS_SAMPLING the models that will be adjusted have to implement
GibbsSamplingComponentstarts - the number of times the algorithm will be started in the train method, at least 1estimateComponentProbs - the switch for estimating the component probabilities in the algorithm or to hold them fixed;
if the component parameters are fixed, the values of weights will be used, otherwise
the componentHyperParams will be incorporated in the adjustmentcomponentHyperParams - the hyperparameters for the component assignment prior,
estimateComponentProbs == true
null or has to have length models.length
null or an array with all values zero (0) than ML
parameterization
weights - null or the weights for the components (than weights.length == models.length)algorithm - either AbstractMixtureModel.Algorithm.EM or AbstractMixtureModel.Algorithm.GIBBS_SAMPLINGalpha - only for AbstractMixtureModel.Algorithm.EMtrain to initialize
the gammas. It is recommended to use alpha = 1 (uniform distribution on a simplex).eps - only for AbstractMixtureModel.Algorithm.EMparametrization - only for AbstractMixtureModel.Algorithm.EMAbstractMixtureModel.Parameterization.THETA or AbstractMixtureModel.Parameterization.LAMBDA
LAMBDA
initialIteration - only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLINGstationaryIteration/starts)stationaryIteration - only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLINGburnInTest - only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLINGIllegalArgumentException - if
length
dimension < 1
weights != null && weights.length != dimension
weights != null and it exists an i where weights[i] < 0
starts < 1
WrongAlphabetException - if not all models work on the same alphabet
CloneNotSupportedException - if the models can not be cloned
public MixtureModel(int length,
Model[] models,
int starts,
double[] componentHyperParams,
double alpha,
double eps,
AbstractMixtureModel.Parameterization parametrization)
throws IllegalArgumentException,
WrongAlphabetException,
CloneNotSupportedException
length - the length used in this modelmodels - the single models building the MixtureModel, if the model is trained using
AbstractMixtureModel.Algorithm.GIBBS_SAMPLING the models that will be adjusted have to implement
GibbsSamplingComponentstarts - the number of times the algorithm will be started in the train method, at least 1componentHyperParams - the hyperparameters for the component assignment prior,
estimateComponentProbs == true
null or has to have length models.length
null or an array with all values zero (0) than ML
parameterization
alpha - only for AbstractMixtureModel.Algorithm.EMtrain to initialize
the gammas. It is recommended to use alpha = 1 (uniform distribution on a simplex).eps - only for AbstractMixtureModel.Algorithm.EMparametrization - only for AbstractMixtureModel.Algorithm.EMAbstractMixtureModel.Parameterization.THETA or AbstractMixtureModel.Parameterization.LAMBDA
LAMBDA
IllegalArgumentException - if
length
dimension < 1
weights != null && weights.length != dimension
weights != null and it exists an i where weights[i] < 0
starts < 1
WrongAlphabetException - if not all models work on the same alphabet
CloneNotSupportedException - if the models can not be clonedMixtureModel(int, de.jstacs.models.Model[], int, boolean, double[], double[], de.jstacs.models.mixture.AbstractMixtureModel.Algorithm, double, double, de.jstacs.models.mixture.AbstractMixtureModel.Parameterization, int, int, de.jstacs.models.mixture.gibbssampling.BurnInTest),
AbstractMixtureModel.Algorithm.EM
public MixtureModel(int length,
Model[] models,
double[] weights,
int starts,
double alpha,
double eps,
AbstractMixtureModel.Parameterization parametrization)
throws IllegalArgumentException,
WrongAlphabetException,
CloneNotSupportedException
length - the length used in this modelmodels - the single models building the MixtureModel, if the model is trained using
AbstractMixtureModel.Algorithm.GIBBS_SAMPLING the models that will be adjusted have to implement
GibbsSamplingComponentstarts - the number of times the algorithm will be started in the train method, at least 1weights - null or the weights for the components (than weights.length == models.length)alpha - only for AbstractMixtureModel.Algorithm.EMtrain to initialize
the gammas. It is recommended to use alpha = 1 (uniform distribution on a simplex).eps - only for AbstractMixtureModel.Algorithm.EMparametrization - only for AbstractMixtureModel.Algorithm.EMAbstractMixtureModel.Parameterization.THETA or AbstractMixtureModel.Parameterization.LAMBDA
LAMBDA
IllegalArgumentException - if
length
dimension < 1
weights != null && weights.length != dimension
weights != null and it exists an i where weights[i] < 0
starts < 1
WrongAlphabetException - if not all models work on the same alphabet
CloneNotSupportedException - if the models can not be clonedMixtureModel(int, de.jstacs.models.Model[], int, boolean, double[], double[], de.jstacs.models.mixture.AbstractMixtureModel.Algorithm, double, double, de.jstacs.models.mixture.AbstractMixtureModel.Parameterization, int, int, de.jstacs.models.mixture.gibbssampling.BurnInTest),
AbstractMixtureModel.Algorithm.EM
public MixtureModel(int length,
Model[] models,
int starts,
double[] componentHyperParams,
int initialIteration,
int stationaryIteration,
BurnInTest burnInTest)
throws IllegalArgumentException,
WrongAlphabetException,
CloneNotSupportedException
length - the length used in this modelmodels - the single models building the MixtureModel, if the model is trained using
AbstractMixtureModel.Algorithm.GIBBS_SAMPLING the models that will be adjusted have to implement
GibbsSamplingComponentstarts - the number of times the algorithm will be started in the train method, at least 1componentHyperParams - the hyperparameters for the component assignment prior,
estimateComponentProbs == true
null or has to have length models.length
null or an array with all values zero (0) than ML
parameterization
initialIteration - only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLINGstationaryIteration/starts)stationaryIteration - only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLINGburnInTest - only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLINGIllegalArgumentException - if
length
dimension < 1
weights != null && weights.length != dimension
weights != null and it exists an i where weights[i] < 0
starts < 1
WrongAlphabetException - if not all models work on the same alphabet
CloneNotSupportedException - if the models can not be clonedMixtureModel(int, de.jstacs.models.Model[], int, boolean, double[], double[], de.jstacs.models.mixture.AbstractMixtureModel.Algorithm, double, double, de.jstacs.models.mixture.AbstractMixtureModel.Parameterization, int, int, de.jstacs.models.mixture.gibbssampling.BurnInTest),
AbstractMixtureModel.Algorithm.GIBBS_SAMPLING
public MixtureModel(int length,
Model[] models,
double[] weights,
int starts,
int initialIteration,
int stationaryIteration,
BurnInTest burnInTest)
throws IllegalArgumentException,
WrongAlphabetException,
CloneNotSupportedException
length - the length used in this modelmodels - the single models building the MixtureModel, if the model is trained using
AbstractMixtureModel.Algorithm.GIBBS_SAMPLING the models that will be adjusted have to implement
GibbsSamplingComponentstarts - the number of times the algorithm will be started in the train method, at least 1weights - null or the weights for the components (than weights.length == models.length)initialIteration - only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLINGstationaryIteration/starts)stationaryIteration - only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLINGburnInTest - only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLINGIllegalArgumentException - if
length
dimension < 1
weights != null && weights.length != dimension
weights != null and it exists an i where weights[i] < 0
starts < 1
WrongAlphabetException - if not all models work on the same alphabet
CloneNotSupportedException - if the models can not be clonedMixtureModel(int, de.jstacs.models.Model[], int, boolean, double[], double[], de.jstacs.models.mixture.AbstractMixtureModel.Algorithm, double, double, de.jstacs.models.mixture.AbstractMixtureModel.Parameterization, int, int, de.jstacs.models.mixture.gibbssampling.BurnInTest),
AbstractMixtureModel.Algorithm.GIBBS_SAMPLING
public MixtureModel(StringBuffer xml)
throws NonParsableException
Storable.
xml - the StringBuffer
NonParsableException - if the StringBuffer is not parsable| Method Detail |
|---|
protected Sequence[] emitSampleUsingCurrentParameterSet(int n,
int... lengths)
throws Exception
AbstractMixtureModel
emitSampleUsingCurrentParameterSet in class AbstractMixtureModeln - the number of sequences to be sampledlengths - the corresponding lengths
Exception - if it was impossible to sampleAbstractModel.emitSample(int, int...)
protected double[][] doFirstIteration(double[] dataWeights,
MultivariateRandomGenerator m,
MRGParams[] params)
throws Exception
AbstractMixtureModel
doFirstIteration in class AbstractMixtureModeldataWeights - null or the weights of each element of the samplem - the multivariate random generatorparams - the parameters for the multivariate random generator
Exception - if something went wrong
public double[][] doFirstIteration(Sample data,
double[] dataWeights,
double[][] partitioning)
throws Exception
data - the sample of sequencesdataWeights - null or the weights of each element of the samplepartitioning - a kind of partitioning
partitioning.length has to be data.getNumberofElements()
partitioning[i].length has to be getNumberOfModels()
\sum_j partitioning[i][j] has to be 1
Exception - if something went wrong or if the number of components is 1
protected double getLogProbUsingCurrentParameterSetFor(int component,
Sequence s,
int start,
int end)
throws Exception
AbstractMixtureModel
getLogProbUsingCurrentParameterSetFor in class AbstractMixtureModelcomponent - the index of the components - the sequencestart - the start position in the sequenceend - the end position in the sequence
log P(s,component) = log P(s|component) + log P(component)
Exception - if not trained yet or something else went wrongAbstractMixtureModel.getNumberOfComponents()public String toString()
Model
toString in interface ModeltoString in class Object
protected double getNewWeights(double[] dataWeights,
double[] w,
double[][] seqweights)
throws Exception
getNewWeights in class AbstractMixtureModeldataWeights - the weights for internal sample (should not be changed)w - the array for the statistic of the component parameters (shall
be filled)seqweights - an array containing for each component the weights for each
sequence (shall be filled)
Exception - if something went wrongprotected void setTrainData(Sample data)
AbstractMixtureModel
setTrainData in class AbstractMixtureModeldata - the given sample
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||