下面的代码用于使用cspade算法提取序列。
library("arulesSequences")
df <- data.frame(personID = c(1, 1, 2, 2, 2),
eventID = c(100, 101, 102, 103, 104),
site = c("google", "facebook", "facebook", "askjeeves", "stackoverflow"),
sequence = c(1, 2, 1, 2, 3))
df.trans <- as(df[,"site", drop = FALSE], "transactions")
transactionInfo(df.trans)$sequenceID <- df$sequence
transactionInfo(df.trans)$eventID <- df$eventID
df.trans <- df.trans[order(transactionInfo(df.trans)$sequenceID),]
seq <- cspade(df.trans, parameter = list(support = 0.2),
control = list(verbose = TRUE))
问题是我的实际数据是〜200万行,每个人的序列增加到~20。使用上面的代码,cspade会快速消耗所有RAM和R崩溃。任何人都有关于如何在我的大型数据集上执行序列挖掘的提示?谢谢!
你在df$sequence
有多少个唯一身份证?在样本数据集的最后一列中看起来有3个序列选项。你认为最多20个序列是必要的吗?您可以做的一件事是将maxlen
函数调用中的cspade
参数设置为4或5,并评估您的预测准确性,假设您正在追求的是什么。
所以你会有类似seq <- cspade(df.trans, parameter = list(support = 0.2, maxlen = 4),control = list(verbose = TRUE))
的东西。
希望有所帮助