加快识别子序列

时间:2015-02-27 17:25:36

标签: r traminer

我使用的数据集在每个序列中都有数百个事件。我正在尝试使用TraMineR识别子序列和顺序关联规则。例如,这是我要编写的代码:

# Frequent subsequences:
fsubseq <- seqefsub(weaver, minSupport = 0.05, maxK = 4)
fsubseq <- seqentrans(fsubseq)
fsb <- fsubseq[fsubseq$data$nevent > 1]
plot(fsb[1:20], col = "cyan")

# Sequential association rules:
rules <- TraMineR:::seqerules(fsubseq)
rules[order(rules$Lift, decreasing = TRUE)[1:25], 1:4]

这通常是可行的,只要我将maxK设置为1-3,但是当我移动该值时,计算需要数小时(如果不是几天)。我可以调整哪些特定参数来加速这些计算吗?

1 个答案:

答案 0 :(得分:3)

计算时间与以下内容密切相关:

  • 每个序列的事件数。该算法被设计用于每个序列(通常为<6)和许多序列的少量事件。您可以尝试删除一些不是您主要关注的事件或分析事件组。我想事件数和计算时间之间的关系至少是指数级的。每个序列超过10个事件,它可能非常慢。
  • 最低支持率。在最小支持度较低的情况下,可能的子序列数量变得非常大。尝试将其设置为更高的值。

希望这有帮助。