14 #ifndef __MLPACK_METHODS_HMM_HMM_REGRESSION_HPP
15 #define __MLPACK_METHODS_HMM_HMM_REGRESSION_HPP
94 HMM<distribution::RegressionDistribution>(states, emissions,
tolerance)
123 const std::vector<distribution::RegressionDistribution>&
emission,
125 HMM<distribution::RegressionDistribution>(initial, transition, emission,
160 void Train(
const std::vector<arma::mat>& predictors,
161 const std::vector<arma::vec>& responses);
182 void Train(
const std::vector<arma::mat>& predictors,
183 const std::vector<arma::vec>& responses,
184 const std::vector<arma::Row<size_t> >& stateSeq);
205 double Estimate(
const arma::mat& predictors,
206 const arma::vec& responses,
207 arma::mat& stateProb,
208 arma::mat& forwardProb,
209 arma::mat& backwardProb,
210 arma::vec& scales)
const;
224 double Estimate(
const arma::mat& predictors,
225 const arma::vec& responses,
226 arma::mat& stateProb)
const;
239 double Predict(
const arma::mat& predictors,
240 const arma::vec& responses,
241 arma::Row<size_t>& stateSeq)
const;
251 const arma::vec& responses)
const;
266 void Filter(
const arma::mat& predictors,
267 const arma::vec& responses,
268 arma::vec& filterSeq,
269 size_t ahead = 0)
const;
284 void Smooth(
const arma::mat& predictors,
285 const arma::vec& responses,
286 arma::vec& smoothSeq)
const;
292 void StackData(
const std::vector<arma::mat>& predictors,
293 const std::vector<arma::vec>& responses,
294 std::vector<arma::mat>& dataSeq)
const;
296 void StackData(
const arma::mat& predictors,
297 const arma::vec& responses,
298 arma::mat& dataSeq)
const;
311 void Forward(
const arma::mat& predictors,
312 const arma::vec& responses,
314 arma::mat& forwardProb)
const;
328 void Backward(
const arma::mat& predictors,
329 const arma::vec& responses,
330 const arma::vec& scales,
331 arma::mat& backwardProb)
const;
340 #include "hmm_regression_impl.hpp"
double Estimate(const arma::mat &predictors, const arma::vec &responses, 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...
std::vector< distribution::RegressionDistribution > emission
Set of emission probability distributions; one for each state.
HMMRegression(const arma::vec &initial, const arma::mat &transition, const std::vector< distribution::RegressionDistribution > &emission, const double tolerance=1e-5)
Create the Hidden Markov Model Regression with the given initial probability vector, the given transition matrix, and the given regression emission distributions.
Linear algebra utility functions, generally performed on matrices or vectors.
void StackData(const std::vector< arma::mat > &predictors, const std::vector< arma::vec > &responses, std::vector< arma::mat > &dataSeq) const
Utility functions to facilitate the use of the HMM class for HMMR.
A class that represents a Hidden Markov Model Regression (HMMR).
double tolerance
Tolerance of Baum-Welch algorithm.
arma::vec initial
Initial state probability vector.
A class that represents a univariate conditionally Gaussian distribution.
double LogLikelihood(const arma::mat &predictors, const arma::vec &responses) const
Compute the log-likelihood of the given predictors and responses.
Include all of the base components required to write MLPACK methods, and the main MLPACK Doxygen docu...
A class that represents a Hidden Markov Model with an arbitrary type of emission distribution.
void Backward(const arma::mat &predictors, const arma::vec &responses, const arma::vec &scales, arma::mat &backwardProb) const
The Backward algorithm (part of the Forward-Backward algorithm).
void Forward(const arma::mat &predictors, const arma::vec &responses, arma::vec &scales, arma::mat &forwardProb) const
The Forward algorithm (part of the Forward-Backward algorithm).
HMMRegression(const size_t states, const distribution::RegressionDistribution emissions, const double tolerance=1e-5)
Create the Hidden Markov Model Regression with the given number of hidden states and the given defaul...
void Train(const std::vector< arma::mat > &predictors, const std::vector< arma::vec > &responses)
Train the model using the Baum-Welch algorithm, with only the given predictors and responses...
double Predict(const arma::mat &predictors, const arma::vec &responses, arma::Row< size_t > &stateSeq) const
Compute the most probable hidden state sequence for the given predictors and responses, using the Viterbi algorithm, returning the log-likelihood of the most likely state sequence.
void Filter(const arma::mat &predictors, const arma::vec &responses, arma::vec &filterSeq, size_t ahead=0) const
HMMR filtering.
void Smooth(const arma::mat &predictors, const arma::vec &responses, arma::vec &smoothSeq) const
HMM smoothing.
arma::mat transition
Transition probability matrix.