Скрытые оценки параметров марковской модели от выбросов
[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.