Accord.Statistics.Models.Markov.ForwardBackwardAlgorithm.Backward C# (CSharp) 메소드

Backward() 공개 정적인 메소드

Computes Backward probabilities for a given hidden Markov model and a set of observations.
public static Backward ( ContinuousHiddenMarkovModel model, double observations, double scaling ) : ].double[
model ContinuousHiddenMarkovModel
observations double
scaling double
리턴 ].double[
        public static double[,] Backward(ContinuousHiddenMarkovModel model, double[][] observations, double[] scaling)
        {
            int states = model.States;
            double[,] A = model.Transitions;
            IDistribution[] B = model.Emissions;
            double[] pi = model.Probabilities;

            int T = observations.Length;
            var bwd = new double[T,states];

            // For backward variables, we use the same scale factors
            //   for each time t as were used for forward variables.

            // 1. Initialization
            for (int i = 0; i < states; i++)
                bwd[T - 1, i] = 1.0/scaling[T - 1];

            // 2. Induction
            for (int t = T - 2; t >= 0; t--)
            {
                for (int i = 0; i < states; i++)
                {
                    double sum = 0;
                    for (int j = 0; j < states; j++)
                        sum += A[i, j]*B[j].ProbabilityFunction(observations[t + 1])*bwd[t + 1, j];
                    bwd[t, i] += sum/scaling[t];
                }
            }

            return bwd;
        }
    }

Same methods

ForwardBackwardAlgorithm::Backward ( HiddenMarkovModel model, int observations, double scaling ) : ].double[
ForwardBackwardAlgorithm