加快子序列的识别

Speeding up identification of subsequences

我使用的数据集在每个序列中都有数百个事件。我正在尝试使用 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,这通常是可行的,但是当我移过该值时,计算需要数小时甚至数天。我可以调整任何特定参数来加快这些计算吗?

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

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

希望对您有所帮助。