15 #ifndef __MLPACK_METHODS_HMM_HMM_HPP
16 #define __MLPACK_METHODS_HMM_HMM_HPP
84 template<
typename Distribution = distribution::DiscreteDistribution>
105 HMM(
const size_t states,
106 const Distribution emissions,
138 const std::vector<Distribution>&
emission,
169 void Train(
const std::vector<arma::mat>& dataSeq);
192 void Train(
const std::vector<arma::mat>& dataSeq,
193 const std::vector<arma::Col<size_t> >& stateSeq);
213 double Estimate(
const arma::mat& dataSeq,
214 arma::mat& stateProb,
215 arma::mat& forwardProb,
216 arma::mat& backwardProb,
217 arma::vec& scales)
const;
230 double Estimate(
const arma::mat& dataSeq,
231 arma::mat& stateProb)
const;
245 arma::mat& dataSequence,
246 arma::Col<size_t>& stateSequence,
247 const size_t startState = 0)
const;
259 double Predict(
const arma::mat& dataSeq,
260 arma::Col<size_t>& stateSeq)
const;
313 void Forward(
const arma::mat& dataSeq,
315 arma::mat& forwardProb)
const;
328 void Backward(
const arma::mat& dataSeq,
329 const arma::vec& scales,
330 arma::mat& backwardProb)
const;
352 #include "hmm_impl.hpp"
arma::vec & Initial()
Modify the vector of initial state probabilities.
size_t Dimensionality() const
Get the dimensionality of observations.
std::vector< Distribution > emission
Set of emission probability distributions; one for each state.
Linear algebra utility functions, generally performed on matrices or vectors.
const arma::vec & Initial() const
Return the vector of initial state probabilities.
size_t & Dimensionality()
Set the dimensionality of observations.
const arma::mat & Transition() const
Return the transition matrix.
std::vector< Distribution > & Emission()
Return a modifiable emission probability matrix reference.
void Forward(const arma::mat &dataSeq, arma::vec &scales, arma::mat &forwardProb) const
The Forward algorithm (part of the Forward-Backward algorithm).
double tolerance
Tolerance of Baum-Welch algorithm.
arma::vec initial
Initial state probability vector.
double & Tolerance()
Modify the tolerance of the Baum-Welch algorithm.
double LogLikelihood(const arma::mat &dataSeq) const
Compute the log-likelihood of the given data sequence.
double Tolerance() const
Get the tolerance of the Baum-Welch algorithm.
void Generate(const size_t length, arma::mat &dataSequence, arma::Col< size_t > &stateSequence, const size_t startState=0) const
Generate a random data sequence of the given length.
A class that represents a Hidden Markov Model with an arbitrary type of emission distribution.
std::string ToString() const
Returns a string representation of this object.
const std::vector< Distribution > & Emission() const
Return the emission distributions.
double Estimate(const arma::mat &dataSeq, arma::mat &stateProb, arma::mat &forwardProb, arma::mat &backwardProb, arma::vec &scales) const
Estimate the probabilities of each hidden state at each time step for each given data observation...
void Backward(const arma::mat &dataSeq, const arma::vec &scales, arma::mat &backwardProb) const
The Backward algorithm (part of the Forward-Backward algorithm).
void Train(const std::vector< arma::mat > &dataSeq)
Train the model using the Baum-Welch algorithm, with only the given unlabeled observations.
size_t dimensionality
Dimensionality of observations.
arma::mat & Transition()
Return a modifiable transition matrix reference.
double Predict(const arma::mat &dataSeq, arma::Col< size_t > &stateSeq) const
Compute the most probable hidden state sequence for the given data sequence, using the Viterbi algori...
HMM(const size_t states, const Distribution emissions, const double tolerance=1e-5)
Create the Hidden Markov Model with the given number of hidden states and the given default distribut...
arma::mat transition
Transition probability matrix.