Bio.HMM.Trainer 模块
提供基于训练序列估计参数的训练器。
这些应该用于在实际使用马尔可夫模型解码状态路径之前“训练”它。当提供训练序列和模型时,这些类将估计模型的参数。
这旨在估计两个参数
a_{kl} – 训练数据中从 k 到 l 的转移次数。
e_{k}(b) – 训练数据中从字母 k 发射字母 b 的次数。
- class Bio.HMM.Trainer.TrainingSequence(emissions, state_path)
基类:
object
保存一个带有发射和可选状态路径的训练序列。
- __init__(emissions, state_path)
初始化训练序列。
- 参数
emissions - 包含训练序列中发射序列的可迭代对象(例如,元组、列表或 Seq 对象)。
state_path - 包含状态序列的可迭代对象(例如,元组或列表)。如果未知状态路径,则状态序列应为空可迭代对象。
- class Bio.HMM.Trainer.AbstractTrainer(markov_model)
基类:
object
提供所有训练器中所需的通用功能。
- __init__(markov_model)
初始化类。
- log_likelihood(probabilities)
计算训练序列的对数似然。
- 参数
probabilities – 在当前参数下每个训练序列的概率列表,使用前向算法计算。
- estimate_params(transition_counts, emission_counts)
获取转移和发射的最大似然估计。
- 参数
transition_counts – 包含两个状态之间转移的总计数值的字典。
emissions_counts – 包含状态字母发出特定发射字母的总计数值的字典。
然后返回转移和发射的最大似然估计器,根据 Durbin 等人的公式 3.18 估计。
a_{kl} = A_{kl} / sum(A_{kl'}) e_{k}(b) = E_{k}(b) / sum(E_{k}(b'))
返回值: 包含最大似然估计器的转移和发射字典。
- ml_estimator(counts)
计算最大似然估计器。
这可以计算转移和发射的最大似然。
- 参数
counts – 每个项目的计数值字典。
有关所用计算公式的描述,请参阅 estimate_params。
- class Bio.HMM.Trainer.BaumWelchTrainer(markov_model)
基类:
AbstractTrainer
使用 Baum-Welch 算法估计参数的训练器。
当 HMM 的训练序列具有未知的实际状态路径时,应该使用这些方法,你需要从观察到的发射中估计模型参数。
这使用 Baum-Welch 算法,该算法首先在 Baum, L.E. 1972. Inequalities. 3:1-8 中描述。这基于 Durbin 等人在“生物序列分析”中第 3.3 节的描述。
该算法保证收敛到局部最大值,但不一定是全局最大值,因此使用时要谨慎!
- __init__(markov_model)
初始化训练器。
- 参数
markov_model - 我们要估计参数的模型。这应该具有带有初始估计的参数,我们可以从中构建。
- train(training_seqs, stopping_criteria, dp_method=ScaledDPAlgorithms)
使用训练序列估计参数。
该算法来自 Durbin 等人的第 64 页,因此是了解正在发生的事情的良好参考。
- 参数
training_seqs – 用于估计参数的 TrainingSequence 对象列表。
stopping_criteria – 当传递对数似然的更改和阈值时,将指示是否应该停止估计迭代的函数。
dp_method – 指定应使用哪个动态规划实现来计算前向和后向变量的类实例。默认情况下,我们使用缩放方法。
- update_transitions(transition_counts, training_seq, forward_vars, backward_vars, training_seq_prob)
将新训练序列的贡献添加到转移中。
- 参数
transition_counts – 转移的当前计数字典。
training_seq – 我们正在处理的训练序列。
forward_vars – 使用前向算法计算的概率。
backward_vars – 使用后向算法计算的概率。
training_seq_prob - 当前序列的概率。
这使用 Durbin 等人的公式 3.20 计算 A_{kl}(从状态 k 到状态 l 的估计转移计数)。
- update_emissions(emission_counts, training_seq, forward_vars, backward_vars, training_seq_prob)
将新训练序列的贡献添加到发射中。
- 参数
emission_counts – 发射的当前计数字典。
training_seq – 我们正在处理的训练序列。
forward_vars – 使用前向算法计算的概率。
backward_vars – 使用后向算法计算的概率。
training_seq_prob - 当前序列的概率。
这使用 Durbin 等人的公式 3.21 计算 E_{k}(b)(从状态 k 发射字母 b 的估计发射概率)。
- class Bio.HMM.Trainer.KnownStateTrainer(markov_model)
基类:
AbstractTrainer
使用已知状态序列估计概率。
当训练示例的状态路径和发射序列都已知时,应该使用此方法直接估计发射和转移概率。
- __init__(markov_model)
初始化类。
- train(training_seqs)
使用已知状态路径估计马尔可夫模型参数。
此训练器要求 TrainingSequence 对象列表中的所有训练序列的状态和发射都已知。然后,该训练将计算所有转移和发射,并使用这些来估计模型的参数。