Почему эта Скрытая Марковская Модель делает такой прогноз? - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь понять, как работает HMM, но мне кажется, что мне не хватает важной части информации, которую я не могу идентифицировать.Я хочу, чтобы он предсказал следующий «признак» / «символ» на основе заданной последовательности.

        int[][] sequences =
        {
            new[] { 10001, 15, 1, 0, 0, 10002 },
            new[] { 10002, 0, 1, 0, 15, 10001 },
            new[] { 101, 15, 0, 0, 0, 101},
            new[] { 101, 0, 0, 0, 15, 101 },
            new[] { 114, 15, 0, 1, 0, 114 },
            new[] { 114, 0, 0, 1, 15, 114 },
            new[] { 10001, 15, 1, 0, 0, 10002 },
            new[] { 10002, 0, 1, 0, 15, 10001 },
        };

        var teacher = new BaumWelchLearning()
        {
            Topology = new Forward(6),
            Tolerance = 0.0001,
        };

        HiddenMarkovModel hmm = teacher.Learn(sequences);

        // Gives 15 instead of 114
        int[] prediction = hmm.Predict(observations: new[] { 114, 15, 0, 1, 0 }, next: 1); 

Следующим символом для «114, 15, 0, 1, 0» должно быть 114, нопрогноз - 15. Я делаю что-то не так с топологией?Нужно ли определять что-то по-другому?

Заранее спасибо!

1 Ответ

0 голосов
/ 09 июня 2018

Вы не можете использовать статистику / вероятности, чтобы предсказать одну единственную реализацию.Теория имеет смысл, когда вы используете ее во многих случаях.В вашем случае позвоните:

int[] prediction = hmm.Predict(observations: new[] { 114, 15, 0, 1, 0 },   next: 1);

много раз и посмотрите, какие последующие наблюдения просят.на самом деле это ...

...