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