c# - 将隐马尔可夫模型应用于多个同时位序列

标签 c# machine-learning hidden markov-models

excellent article在 C# 中实现隐马尔可夫模型在基于训练数据对单个位序列进行分类方面做得很好。

如何修改算法或构建它(多个 HMM?)以支持对多个同时发生的位序列进行分类?

例子

而不是只对一个流进行分类:

double t1 = hmm.Evaluate(new int[] { 0,1 });      // 0.49999423004045024  
double t2 = hmm.Evaluate(new int[] { 0,1,1,1 });  // 0.11458685045803882

而是对双比特流进行分类:

double t1 = hmm.Evaluate(new int[] { [0, 0], [0, 1] });
double t2 = hmm.Evaluate(new int[] { [0, 0], [1, 1], [0, 1], [1, 1] });

或者更好的是,三个流:

double t1 = hmm.Evaluate(new int[] { [0, 0, 1], [0, 0, 1] });
double t2 = hmm.Evaluate(new int[] { [0, 0, 1], [1, 1, 0], [0, 1, 1], [1, 1, 1] });

显然训练数据也会扩展。

最佳答案

诀窍是将观察集建模为每个序列所有可能值的 n 元笛卡尔积,在您的情况下,HMM 将具有 2^n 输出符号,其中 n是比特序列的个数。

示例:对于三位序列,8 个符号是:000 001 010 011 100 101 110 111,就好像我们创建了一个巨型变量,其值是所有可能的各个观察序列的值元组(每个位序列的0/1)

关于c# - 将隐马尔可夫模型应用于多个同时位序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3854404/

相关文章:

c# - 使用 Linq Any 查询或表达式构建查询以提高性能

python - SkLearn 多项式 NB : Most Informative Features

html - Jmeter 2.13中隐藏的View Results Tree的HTML渲染器在哪里

从数据库输入到联系表的php mysql数据

php - 隐藏 ID 列和其他显示数据的列

c# - 从蛋糕脚本中将警告消息记录在文本文件中

c# - HttpWebRequest 自动发送需要的HttpRequests

c# - 为什么在 VIsual Studio 2017 中使用 ServiceStack 时出现错误 "The type ' Return< >' is defined in an assembly that is not referenced"

python - 为什么 XGBoost 拟合速度很慢,即使数据集非常小?

r - 如何解释该分类 TreeMap 中的预测?