Class HSMMGaussianEstimator
- java.lang.Object
-
- ptolemy.kernel.util.NamedObj
-
- ptolemy.kernel.InstantiableNamedObj
-
- ptolemy.kernel.Entity<T>
-
- ptolemy.kernel.ComponentEntity<T>
-
- ptolemy.actor.AtomicActor<TypedIOPort>
-
- ptolemy.actor.TypedAtomicActor
-
- org.ptolemy.machineLearning.hmm.ParameterEstimator
-
- org.ptolemy.machineLearning.hsmm.HSMMParameterEstimator
-
- org.ptolemy.machineLearning.hsmm.HSMMGaussianEstimator
-
- All Implemented Interfaces:
java.lang.Cloneable
,Actor
,Executable
,FiringsRecordable
,Initializable
,TypedActor
,Changeable
,Debuggable
,DebugListener
,Derivable
,Instantiable
,ModelErrorHandler
,MoMLExportable
,Moveable
,Nameable
public class HSMMGaussianEstimator extends HSMMParameterEstimator
This actor implements a parameter estimator for a Hidden Semi-Markov Model with Gaussian Emissions. The base class ParameterEstimator performs the parameter estimation and the HMMGaussianEstimator class contains density-specific methods for Gaussian emission calculations and produces the relevant estimates at its output ports.
The output ports for a Gaussian HMM model are the mean and the standardDeviation vectors of the possible hidden states in addition to the HMM parameters independent from the emission density: transitionMatrix . The mean is a double array output containing the mean estimates and sigma is a double array output containing standard deviation estimates of each mixture component. If the modelType is HMM, then an additional output, transitionMatrix is provided, which is an estimate of the transition matrix governing the Markovian process representing the hidden state evolution. If the modelType is MM, this port outputs a double array with the prior probability estimates of the mixture components.
The user-defined parameters are initial guesses for the model parameters, given by m0, the mean vector guess, s0, the standard deviation vector guess, prior, the prior state distribution guess, A0, the transition matrix guess ( only for HMM). iterations is the number of EM iterations allowed until convergence. If, during iteration, the conditional log-likelihood of the observed sequence given the parameter estimates converges to a value within likelihoodThreshold, the parameter estimation stops iterating and delivers the parameter estimates.
- Since:
- Ptolemy II 10.0
- Version:
- $Id$
- Author:
- Ilge Akkaya
- Pt.AcceptedRating:
- Red (cxh)
- Pt.ProposedRating:
- Red (ilgea)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description TypedIOPort
covariance
Standard deviation estimate array.TypedIOPort
mean
Mean estimate array.Parameter
meanVectorGuess
Mean vector guess.Parameter
standardDeviationGuess
Standard deviation guess.-
Fields inherited from class org.ptolemy.machineLearning.hsmm.HSMMParameterEstimator
_D, _D0, _dPriors0, _durationPriors, _etaDimension, _likelihoodHistory, _maxDuration, clusterAssignments, D_new, durationEstimates, durationPriorEstimates, durationProbabilities, maxStateDuration, priorDurationDistribution
-
Fields inherited from class org.ptolemy.machineLearning.hmm.ParameterEstimator
_A0, _likelihood, _likelihoodThreshold, _nIterations, _nStates, _obsDimension, _observations, _priorIn, _priors, _randomize, _transitionMatrix, A0, input, likelihood, likelihoodOut, likelihoodThreshold, maxIterations, newEstimates, nStates, priorDistribution, priorEstimates, randomizeGuessVectors, transitionMatrix
-
Fields inherited from class ptolemy.actor.TypedAtomicActor
_typesValid
-
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
-
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
-
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
-
-
Constructor Summary
Constructors Constructor Description HSMMGaussianEstimator(CompositeEntity container, java.lang.String name)
Construct an actor with the given container and name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
_checkForConvergence(int iterations)
Check whether the gradient-descent algorithm has converged.protected void
_initializeEMParameters()
Initialize parameters used in ExpectationMaximization here.protected void
_iterateEM()
One step EM iteration.protected void
_updateEstimates()
Update parameter estimates.void
attributeChanged(Attribute attribute)
React to a change in an attribute.java.lang.Object
clone(Workspace workspace)
Clone the actor into the specified workspace.protected double
durationProbability(int y, int hiddenState)
Return the duration probability of duration y at hidden state.protected double
emissionProbability(double[] y, int hiddenState)
Computes the emission probability.void
fire()
Do nothing.-
Methods inherited from class org.ptolemy.machineLearning.hsmm.HSMMParameterEstimator
_EMParameterEstimation, _initializeArrays, HSMMAlphaBetaRecursion, preinitialize
-
Methods inherited from class org.ptolemy.machineLearning.hmm.ParameterEstimator
HMMAlphaBetaRecursion
-
Methods inherited from class ptolemy.actor.TypedAtomicActor
_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
-
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, _declareDelayDependency, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup
-
Methods inherited from class ptolemy.kernel.ComponentEntity
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
-
Methods inherited from class ptolemy.kernel.Entity
_addPort, _description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
-
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
-
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, addHierarchyListener, attributeDeleted, attributeList, attributeList, decorators, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, notifyOfNameChange, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
-
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
-
Methods inherited from interface ptolemy.actor.Executable
isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
-
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, removeInitializable, wrapup
-
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
-
-
-
-
Field Detail
-
mean
public TypedIOPort mean
Mean estimate array.
-
covariance
public TypedIOPort covariance
Standard deviation estimate array.
-
meanVectorGuess
public Parameter meanVectorGuess
Mean vector guess.
-
standardDeviationGuess
public Parameter standardDeviationGuess
Standard deviation guess.
-
-
Constructor Detail
-
HSMMGaussianEstimator
public HSMMGaussianEstimator(CompositeEntity container, java.lang.String name) throws NameDuplicationException, IllegalActionException
Construct an actor with the given container and name.- Parameters:
container
- The container.name
- The name of this actor- Throws:
IllegalActionException
- If the actor cannot be contained by the proposed container.NameDuplicationException
- If the container already has an actor with this name.
-
-
Method Detail
-
attributeChanged
public void attributeChanged(Attribute attribute) throws IllegalActionException
Description copied from class:NamedObj
React to a change in an attribute. This method is called by a contained attribute when its value changes. In this base class, the method does nothing. In derived classes, this method may throw an exception, indicating that the new attribute value is invalid. It is up to the caller to restore the attribute to a valid value if an exception is thrown.- Overrides:
attributeChanged
in classHSMMParameterEstimator
- Parameters:
attribute
- The attribute that changed.- Throws:
IllegalActionException
- If the change is not acceptable to this container (not thrown in this base class).
-
clone
public java.lang.Object clone(Workspace workspace) throws java.lang.CloneNotSupportedException
Description copied from class:TypedAtomicActor
Clone the actor into the specified workspace.- Overrides:
clone
in classHSMMParameterEstimator
- Parameters:
workspace
- The workspace for the new object.- Returns:
- A new actor.
- Throws:
java.lang.CloneNotSupportedException
- If a derived class contains an attribute that cannot be cloned.- See Also:
NamedObj.exportMoML(Writer, int, String)
,NamedObj.setDeferringChangeRequests(boolean)
-
fire
public void fire() throws IllegalActionException
Description copied from class:AtomicActor
Do nothing. Derived classes override this method to define their primary run-time action.- Specified by:
fire
in interfaceExecutable
- Overrides:
fire
in classHSMMParameterEstimator
- Throws:
IllegalActionException
- Not thrown in this base class.
-
emissionProbability
protected double emissionProbability(double[] y, int hiddenState)
Description copied from class:ParameterEstimator
Computes the emission probability. Implemented by the child class.- Specified by:
emissionProbability
in classHSMMParameterEstimator
- Parameters:
y
- input observationhiddenState
- index of hidden state- Returns:
- P(Y=y | X=hiddenState)
-
_checkForConvergence
protected boolean _checkForConvergence(int iterations)
Description copied from class:ParameterEstimator
Check whether the gradient-descent algorithm has converged.- Specified by:
_checkForConvergence
in classHSMMParameterEstimator
- Parameters:
iterations
- Current iteration index- Returns:
- boolean indicating whether algorithm has converged
-
_initializeEMParameters
protected void _initializeEMParameters()
Description copied from class:ParameterEstimator
Initialize parameters used in ExpectationMaximization here.- Specified by:
_initializeEMParameters
in classHSMMParameterEstimator
-
_iterateEM
protected void _iterateEM()
Description copied from class:ParameterEstimator
One step EM iteration.- Specified by:
_iterateEM
in classHSMMParameterEstimator
-
_updateEstimates
protected void _updateEstimates()
Description copied from class:ParameterEstimator
Update parameter estimates.- Specified by:
_updateEstimates
in classHSMMParameterEstimator
-
durationProbability
protected double durationProbability(int y, int hiddenState)
Description copied from class:HSMMParameterEstimator
Return the duration probability of duration y at hidden state.- Specified by:
durationProbability
in classHSMMParameterEstimator
- Parameters:
y
- The duration indexhiddenState
- The hidden state index- Returns:
- p(y|hiddenState)
-
-