r - R depmixs4 中的 HMM 文本识别

标签 r machine-learning speech-recognition hidden-markov-models

我想知道如何利用 R 的 depmixs4 包在数据集上运行 HMM。我将使用哪些函数来获得测试数据集的分类? 我有一个训练数据文件、一个标签数据文件和一个测试数据文件。 训练数据由 4620 行组成。每行有 1079 个值。这些值是 83 个窗口,每个窗口有 13 个值,因此换句话说,1079 是由 83 个状态组成的数据,每个类别有 13 个观测值。这些包含 1079 个值的行中的每一行都是一个口语单词,因此它有 4620 个话语。但数据总共只有 7 个不同的单词。每个不同的单词都有 660 种不同的表达,因此有 4620 行单词。 所以我们有单词 (0-6) 标签文件是一个列表,其中每一行都标记为 0-6,对应于它们是什么单词。例如,第 300 行标记为 2,第 450 行标记为 6,第 520 行标记为 0。
测试文件包含大约 5000 行,其结构与训练数据完全相同,只是没有与之关联的标签。 我想使用 HMM 来使用训练数据对测试数据进行分类。 如何使用 depmixs4 输出测试数据的分类? 我正在看:

  depmix(response, data=NULL, nstates, transition=~1, family=gaussian(), 
        prior=~1, initdata=NULL, respstart=NULL, trstart=NULL, instart=NULL,
        ntimes=NULL,...)

但我不知道响应指的是什么或任何其他参数。

最佳答案

这里有一个快速但不完整的测试来帮助您入门,只是为了让您熟悉基本大纲。请注意,这是一个玩具示例,它仅涉及 HMM 设计/分析的表面。例如,depmixs4 包的小插图提供了大量上下文和示例。同时,这里有一个简短的介绍。

假设您想要调查工业生产是否提供有关经济衰退的线索。首先,我们加载相关包,然后从圣路易斯联储下载数据:

library(quantmod)
library(depmixS4)
library(TTR)

fred.tickers <-c("INDPRO")
getSymbols(fred.tickers,src="FRED")

接下来,将数据转换为滚动 1 年百分比变化,以最大限度地减少数据中的噪声,并将数据转换为 data.frame 格式,以便在 depmixs4 中进行分析:

indpro.1yr <-na.omit(ROC(INDPRO,12))
indpro.1yr.df <-data.frame(indpro.1yr)

现在,让我们运行一个简单的 HMM 模型并仅选择 2 个状态——增长和收缩。请注意,我们仅使用工业生产来搜索信号:

model <- depmix(response=INDPRO ~ 1, 
                family = gaussian(), 
                nstates = 2, 
                data = indpro.1yr.df ,
                transition=~1)

现在让我们拟合结果模型,生成后验状态 进行分析并估计衰退的可能性。此外,我们会将数据与 xts 格式的日期绑定(bind)在一起,以便于查看/分析。 (请注意 set.seed(1) 的使用,它用于创建可复制的起始值来启动建模。)

set.seed(1)
model.fit <- fit(model, verbose = FALSE)
model.prob <- posterior(model.fit)
prob.rec <-model.prob[,2]
prob.rec.dates <-xts(prob.rec,as.Date(index(indpro.1yr)),
    order.by=as.Date(index(indpro.1yr)))

最后,让我们回顾一下并理想地绘制数据:

head(prob.rec.dates)
                [,1]
1920-01-01 1.0000000
1920-02-01 1.0000000
1920-03-01 1.0000000
1920-04-01 0.9991880
1920-05-01 0.9999549
1920-06-01 0.9739622

高值(>0.80 ??)表明/暗示经济处于衰退/收缩中。

再次,这是一个非常非常基本的介绍,也许太基本了。希望对您有所帮助。

关于r - R depmixs4 中的 HMM 文本识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30146288/

相关文章:

python - 如何使用不同的数据集进行 GridSearchCV 训练和测试?

cocoa - 使用 NSSpeechRecognizer 或带有音频文件的替代方案而不是麦克风输入?

python - 提高 Google Cloud Speech-to-Text 的准确性

ios - Chrome iOS webkit 语音识别

r - selectInput 中的选项显示在传单 map 上

r - R中的队列分析

r - 使用 .SDcols 在 data.table 中的列子集应用函数

r - 如何在每一层应用光栅堆栈对象?

machine-learning - 首次访问与每次访问 Monte Carlo

machine-learning - 如何将边界框 (x1, y1, x2, y2) 转换为 YOLO 样式 (X, Y, W, H)