我需要在事件序列的數據庫中查找常見模式。所以,我考慮了the longest common substring problem和the python implementation尋找解決方案。數據庫中的常見模式
請注意,我並不是只搜索最長的公共子字符串:我接受數據庫中經常出現的較短的常見子字符串。
你能提出一些有關這個問題的算法,實現技巧或一般建議嗎?
我需要在事件序列的數據庫中查找常見模式。所以,我考慮了the longest common substring problem和the python implementation尋找解決方案。數據庫中的常見模式
請注意,我並不是只搜索最長的公共子字符串:我接受數據庫中經常出現的較短的常見子字符串。
你能提出一些有關這個問題的算法,實現技巧或一般建議嗎?
以前的答案建議Apriori。但是Apriori是不適合的,如果你想找到頻繁的序列,因爲Apriori不考慮時間(另外,Apriori是一個低效的算法)。
如果您想查找幾個序列共有的子序列,使用序列模式挖掘算法(如PrefixSpan和SPAM)會更合適。
如果你想做一些預測,另一個選擇也是使用順序規則挖掘算法。
我有序列模式挖掘和連續規則挖掘算法的開源Java實現,你可以從我的網站下載:http://www.philippe-fournier-viger.com/spmf/
我不認爲你可以處理8 GB的數據在一個投籃這些算法。但這可能是一個起點。實際上,通過實施基於磁盤的策略,其中一些算法可適用於超大型數據庫的情況。
您是否考慮過頻繁項目集挖掘方法,如Apriori?
與我一起工作的機械工程師正在尋找20多年來建造的數據庫(大約8 GB和5毫米的記錄)。最終目標是建立維護任務的顧問(類似於「在該卡車的當前狀態下,您需要完成這些任務」)。所以,是的,我已經考慮了Apriori算法,並發現了事件之間的一些有趣的關聯。我們目前的問題是找到一個不同的模型,只是爲了比較。我使用像LCS這樣的方法的意義在於,我只需要處理兩個故事來查找模式。 – 2012-04-02 13:35:09