|
||||||||||
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 Model
s.
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
GibbsSamplingComponent
starts
- 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_SAMPLING
alpha
- only for AbstractMixtureModel.Algorithm.EM
train
to initialize
the gammas. It is recommended to use alpha = 1
(uniform distribution on a simplex).eps
- only for AbstractMixtureModel.Algorithm.EM
parametrization
- only for AbstractMixtureModel.Algorithm.EM
AbstractMixtureModel.Parameterization.THETA
or AbstractMixtureModel.Parameterization.LAMBDA
LAMBDA
initialIteration
- only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLING
stationaryIteration/starts
)stationaryIteration
- only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLING
burnInTest
- only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLING
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 clonedpublic 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
GibbsSamplingComponent
starts
- 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.EM
train
to initialize
the gammas. It is recommended to use alpha = 1
(uniform distribution on a simplex).eps
- only for AbstractMixtureModel.Algorithm.EM
parametrization
- only for AbstractMixtureModel.Algorithm.EM
AbstractMixtureModel.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
GibbsSamplingComponent
starts
- 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.EM
train
to initialize
the gammas. It is recommended to use alpha = 1
(uniform distribution on a simplex).eps
- only for AbstractMixtureModel.Algorithm.EM
parametrization
- only for AbstractMixtureModel.Algorithm.EM
AbstractMixtureModel.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
GibbsSamplingComponent
starts
- 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_SAMPLING
stationaryIteration/starts
)stationaryIteration
- only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLING
burnInTest
- only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLING
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.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
GibbsSamplingComponent
starts
- 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_SAMPLING
stationaryIteration/starts
)stationaryIteration
- only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLING
burnInTest
- only for AbstractMixtureModel.Algorithm.GIBBS_SAMPLING
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.GIBBS_SAMPLING
public MixtureModel(StringBuffer xml) throws NonParsableException
Storable
.
xml
- the StringBuffer
NonParsableException
- if the StringBuffer is not parsableMethod Detail |
---|
protected Sequence[] emitSampleUsingCurrentParameterSet(int n, int... lengths) throws Exception
AbstractMixtureModel
emitSampleUsingCurrentParameterSet
in class AbstractMixtureModel
n
- 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 AbstractMixtureModel
dataWeights
- 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 wrongpublic 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 1protected double getLogProbUsingCurrentParameterSetFor(int component, Sequence s, int start, int end) throws Exception
AbstractMixtureModel
getLogProbUsingCurrentParameterSetFor
in class AbstractMixtureModel
component
- 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 Model
toString
in class Object
protected double getNewWeights(double[] dataWeights, double[] w, double[][] seqweights) throws Exception
getNewWeights
in class AbstractMixtureModel
dataWeights
- 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 AbstractMixtureModel
data
- the given sample
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |