exponenta event banner

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) задает значения излучения псевдокоунта для обучающего алгоритма Витерби. Используйте этот аргумент, чтобы избежать нулевых вероятностных оценок для выбросов с очень низкой вероятностью, которые могут не быть представлены в последовательности выборки. PSEUDOE должен быть матрицей размера m-by-n, где m - число состояний в скрытой марковской модели, а n - число возможных выбросов. Если i→k выброс не происходит в seq, можно установить PSEUDOE(i,k) положительное число, представляющее оценку ожидаемого количества таких выбросов в последовательности seq.

hmmtrain(...,'Pseudotransitions',PSEUDOTR) задает значения перехода псевдокоунта для обучающего алгоритма Витерби. Используйте этот аргумент, чтобы избежать нулевых оценок вероятности для переходов с очень низкой вероятностью, которые могут не быть представлены в последовательности выборки. 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