14 #ifndef MLPACK_METHODS_HMM_HMM_REGRESSION_IMPL_HPP 15 #define MLPACK_METHODS_HMM_HMM_REGRESSION_IMPL_HPP 24 const std::vector<arma::vec>& responses)
26 std::vector<arma::mat> dataSeq;
27 StackData(predictors, responses, dataSeq);
32 const std::vector<arma::vec>& responses,
33 const std::vector<arma::Row<size_t> >& stateSeq)
35 std::vector<arma::mat> dataSeq;
36 StackData(predictors, responses, dataSeq);
45 const arma::vec& responses,
47 arma::mat& forwardProb,
48 arma::mat& backwardProb,
49 arma::vec& scales)
const 52 StackData(predictors, responses, dataSeq);
54 backwardProb, scales);
62 const arma::vec& responses,
63 arma::mat& stateProb)
const 66 StackData(predictors, responses, dataSeq);
76 const arma::vec& responses,
77 arma::Row<size_t>& stateSeq)
const 80 StackData(predictors, responses, dataSeq);
88 const arma::vec& responses)
const 91 StackData(predictors, responses, dataSeq);
99 const arma::vec& responses,
100 arma::vec& filterSeq,
104 arma::mat forwardProb;
106 Forward(predictors, responses, scales, forwardProb);
111 forwardProb = pow(transition, ahead)*forwardProb;
112 forwardProb = forwardProb.cols(0, forwardProb.n_cols-ahead-1);
116 filterSeq.resize(responses.n_elem - ahead);
119 for (
size_t i = 0; i <
emission.size(); ++i)
121 emission[i].Predict(predictors.cols(ahead, predictors.n_cols-1), nextSeq);
122 filterSeq = filterSeq + nextSeq%(forwardProb.row(i).t());
130 const arma::vec& responses,
131 arma::vec& smoothSeq)
const 135 Estimate(predictors, responses, stateProb);
138 smoothSeq.resize(responses.n_elem);
141 for (
size_t i = 0; i <
emission.size(); ++i)
143 emission[i].Predict(predictors, nextSeq);
144 smoothSeq = smoothSeq + nextSeq%(stateProb.row(i).t());
151 void HMMRegression::Forward(
const arma::mat& predictors,
152 const arma::vec& responses,
154 arma::mat& forwardProb)
const 157 StackData(predictors, responses, dataSeq);
162 void HMMRegression::Backward(
const arma::mat& predictors,
163 const arma::vec& responses,
164 const arma::vec& scales,
165 arma::mat& backwardProb)
const 168 StackData(predictors, responses, dataSeq);
172 void HMMRegression::StackData(
const std::vector<arma::mat>& predictors,
173 const std::vector<arma::vec>& responses,
174 std::vector<arma::mat>& dataSeq)
const 177 for (
size_t i = 0; i < predictors.size(); ++i)
179 nextSeq = predictors[i];
180 nextSeq.insert_rows(0, responses[i].t());
181 dataSeq.push_back(nextSeq);
185 void HMMRegression::StackData(
const arma::mat& predictors,
186 const arma::vec& responses,
187 arma::mat& dataSeq)
const 189 dataSeq = predictors;
190 dataSeq.insert_rows(0, responses.t());
double Train(const std::vector< arma::mat > &dataSeq)
Train the model using the Baum-Welch algorithm, with only the given unlabeled observations.
Definition: hmm_impl.hpp:95
std::vector< distribution::RegressionDistribution > emission
Set of emission probability distributions; one for each state.
Definition: hmm.hpp:497
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...
Definition: hmm_impl.hpp:385
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
double Predict(const arma::mat &dataSeq, arma::Row< size_t > &stateSeq) const
Compute the most probable hidden state sequence for the given data sequence, using the Viterbi algori...
Definition: hmm_impl.hpp:486
double LogLikelihood(const arma::mat &dataSeq) const
Compute the log-likelihood of the given data sequence.
Definition: hmm_impl.hpp:554
double LogLikelihood(const arma::mat &predictors, const arma::vec &responses) const
Compute the log-likelihood of the given predictors and responses.
Definition: hmm_regression_impl.hpp:87
void Smooth(const arma::mat &predictors, const arma::vec &responses, arma::vec &smoothSeq) const
HMM smoothing.
Definition: hmm_regression_impl.hpp:129
void Filter(const arma::mat &predictors, const arma::vec &responses, arma::vec &filterSeq, size_t ahead=0) const
HMMR filtering.
Definition: hmm_regression_impl.hpp:98
void Forward(const arma::mat &dataSeq, arma::vec &logScales, arma::mat &forwardLogProb, arma::mat &logProbs) const
The Forward algorithm (part of the Forward-Backward algorithm).
Definition: hmm_impl.hpp:770
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...
Definition: hmm_regression_impl.hpp:44
void Backward(const arma::mat &dataSeq, const arma::vec &logScales, arma::mat &backwardLogProb, arma::mat &logProbs) const
The Backward algorithm (part of the Forward-Backward algorithm).
Definition: hmm_impl.hpp:799
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...
Definition: hmm_regression_impl.hpp:23
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.
Definition: hmm_regression_impl.hpp:75