hmmtrain

Скрытые оценки параметров марковской модели от выбросов

Синтаксис

[ESTTR,ESTEMIT] = hmmtrain(seq,TRGUESS,EMITGUESS)
hmmtrain(...,'Algorithm',algorithm)
hmmtrain(...,'Symbols',SYMBOLS)
hmmtrain(...,'Tolerance',tol)
hmmtrain(...,'Maxiterations',maxiter)
hmmtrain(...,'Verbose',true)
hmmtrain(...,'Pseudoemissions',PSEUDOE)
hmmtrain(...,'Pseudotransitions',PSEUDOTR)

Описание

[ESTTR,ESTEMIT] = hmmtrain(seq,TRGUESS,EMITGUESS) оценивает вероятности перехода и излучения для скрытой модели Маркова с помощью алгоритма Баума-Уэлча. seq может быть вектором-строкой, содержащей одну последовательность, матрицу с одной строкой на последовательность или массив ячеек с каждой камеры, содержащей последовательность. TRGUESS и EMITGUESS являются начальными оценками матриц вероятностей перехода и выбросов. TRGUESS(i,j) - предполагаемая вероятность перехода от состояния i в состояние j. EMITGUESS(i,k) - предполагаемая вероятность того, что символ k излучается из состояния i.

hmmtrain(...,'Algorithm',algorithm) задает алгоритм настройки. algorithm может быть либо 'BaumWelch' или 'Viterbi'. Алгоритм по умолчанию является 'BaumWelch'.

hmmtrain(...,'Symbols',SYMBOLS) задает символы, которые испускаются. SYMBOLS может быть числовым массивом, строковыми массивами или массивом ячеек с именами символов. Символы по умолчанию являются целыми числами 1 через N, где N количество возможных выбросов.

hmmtrain(...,'Tolerance',tol) задает допуск, используемый для проверки сходимости итеративного процесса оценки. Допуск по умолчанию 1e-4.

hmmtrain(...,'Maxiterations',maxiter) задает максимальное количество итераций для процесса оценки. Максимум по умолчанию является 100.

hmmtrain(...,'Verbose',true) возвращает состояние алгоритма при каждой итерации.

hmmtrain(...,'Pseudoemissions',PSEUDOE) задает значения выбросов псевдоконта для алгоритма настройки Viterbi. Используйте этот аргумент, чтобы избежать нулевых оценок вероятности для выбросов с очень низкой вероятностью, которые могут не быть представлены в выборочной последовательности. PSEUDOE должна быть матрицей размера m -by - n, где m - количество состояний в скрытой модели Маркова и n - количество возможных выбросов. Если i → k выброс не происходит в seq, можно задать PSEUDOE(i,k) быть положительным числом, представляющим оценку ожидаемого числа таких выбросов в последовательности seq.

hmmtrain(...,'Pseudotransitions',PSEUDOTR) задает значения перехода pseudocount для алгоритма настройки Viterbi. Используйте этот аргумент, чтобы избежать нулевых оценок вероятности для переходов с очень низкой вероятностью, которые могут не быть представлены в выборочной последовательности. PSEUDOTR должна быть матрицей размера m -by - m, где m - количество состояний в скрытой модели Маркова. Если i → j переход не происходит в states, можно задать PSEUDOTR(i,j) быть положительным числом, представляющим оценку ожидаемого числа таких переходов в последовательности states.

Если вы знаете состояния, соответствующие последовательностям, используйте hmmestimate для оценки параметров модели.

Допуск

Входной параметр 'tolerance' управляет количеством шагов в hmmtrain алгоритм выполняется перед тем, как функция возвращает ответ. Алгоритм заканчивается, когда все следующие три величины меньше значения, которое вы задаете для tolerance:

  • Журнал вероятности того, что входная последовательность seq генерируется текущими оцененными значениями матриц переходов и выбросов

  • Изменение нормы матрицы переходов, нормированное размером матрицы

  • Изменение нормы матрицы выбросов, нормированное размером матрицы

Значение по умолчанию 'tolerance' является 1e-6. Увеличение допуска уменьшает количество шагов в hmmtrain алгоритм выполняется до его завершения.

maxiterations

Максимальное количество итераций, 'maxiterations', управляет максимальным количеством шагов, которые алгоритм выполняет перед завершением. Если алгоритм выполняется maxiter итерации перед достижением заданного допуска, алгоритм завершает работу, и функция возвращает предупреждение. Если это происходит, можно увеличить значение 'maxiterations' чтобы алгоритм достиг желаемого допуска перед завершением.

Примеры

trans = [0.95,0.05;
      0.10,0.90];
emis = [1/6, 1/6, 1/6, 1/6, 1/6, 1/6;
   1/10, 1/10, 1/10, 1/10, 1/10, 1/2];

seq1 = hmmgenerate(100,trans,emis);
seq2 = hmmgenerate(200,trans,emis);
seqs = {seq1,seq2};
[estTR,estE] = hmmtrain(seqs,trans,emis);

Ссылки

[1] Дурбин, Р., С. Эдди, А. Крог и Г. Митчисон. Анализ биологической последовательности. Кембридж, Великобритания: Cambridge University Press, 1998.

Представлено до R2006a