我需要在事件序列的数据库中找到常见的模式。所以,我考虑过the longest common substring problem和the python implementation寻找解决方案。
请注意,我不是仅搜索最长的公共子字符串:我接受数据库中经常出现的较短公共子字符串。
您能否就此问题提出一些算法,实施技巧或一般建议?
答案 0 :(得分:1)
之前的回答建议Apriori。但是Apriori如果你想找到频繁的序列是不合适的,因为Apriori不考虑时间(同样,Apriori是一种效率低下的算法)。
如果要查找多个序列共有的子序列,使用序列模式挖掘算法(如PrefixSpan和SPAM)会更合适。
如果你想做一些预测,另一种选择也就是使用顺序规则挖掘算法。
我有顺序模式挖掘和顺序规则挖掘算法的开源Java实现,您可以从我的网站下载:http://www.philippe-fournier-viger.com/spmf/
我认为您不能使用这些算法一次性处理8 GB的数据。但这可能是一个起点。实际上,通过实施基于磁盘的策略,其中一些算法可以适用于非常大的数据库。
答案 1 :(得分:0)
您是否考虑过频繁项目集挖掘方法,例如Apriori?