Почему эта Скрытая Марковская Модель делает этот прогноз?

Я пытаюсь понять, как работает 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. Я что-то не так делаю с топологией? Нужно ли определять что-то по-другому?

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


person Midas    schedule 06.06.2018    source источник


Ответы (1)


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

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

много раз и посмотреть, что будет дальше наблюдения probs. на самом деле ...

person Tala Warang    schedule 09.06.2018
comment
Извини за поздний ответ. Вы имеете в виду, что многократный вызов Predict поможет? Я так не думаю. Я попытался накормить модель большим количеством вхождений той же последовательности, но результат тот же. Это не значит, конечно, что я поступаю правильно, а реализация HMM неверна. Я просто не знаю точно, как это должно работать. - person Midas; 12.06.2018
comment
Разница может быть вызвана различиями в методах вычисления p(15 | 114, 15, 0, 1, 0) и p(114 | 114, 15, 0, 1, 0) - person Tala Warang; 13.06.2018
comment
Следующим символом для 114, 15, 0, 1, 0 должно быть 114, но прогноз равен 15. Это просто означает, что p(15 | 114, 15, 0, 1, 0) «каким-то образом» больше/лучше, чем « ваш p ​​(114 | 114, 15, 0, 1, 0) .. но 15 все еще может случиться ... ЕСЛИ у него не нулевая вероятность - person Tala Warang; 13.06.2018
comment
то есть вы имеете в виду, что мой небольшой набор данных создает смещение, основанное на встречаемости 15 во всех последовательностях? - person Midas; 14.06.2018
comment
да, и чтобы преодолеть это, вы должны копнуть глубже в суть алгоритма прогнозирования и принятия решений - person Tala Warang; 15.06.2018