1. 程式人生 > >4種序列模式挖掘演算法的比較分析

4種序列模式挖掘演算法的比較分析

http://fpcheng.blog.51cto.com/2549627/829527    

演算法簡介

AprioriAll演算法屬於Apriori類演算法,其基本思想為首先遍歷序列資料庫生成候選序列並利用Apriori性質進行剪枝得到頻繁序列。每次遍歷都是通過連線上次得到的頻繁序列生成新的長度加1的候選序列,然後掃描每個候選序列驗證其是否為頻繁序列。

GSP(generalized sequential pattern)演算法是AprioriAll演算法的擴充套件演算法,其演算法的執行過程和AprioriAll類似,最大的不同在於GSP引入了時間約束、滑動時間窗和分類層次技術,增加了掃描的約束條件,有效地減少了需要掃描的候選序列的數量。此外GSP利用雜湊樹來儲存候選序列,減少了需要掃描的序列數量。

FreeSpan演算法是基於模式投影的序列挖掘演算法,其基本思想:利用當前挖掘的頻繁序列集將序列資料庫遞迴地投影到一組更小的投影資料庫上,分別在每個投影資料庫上增長子序列。這一過程對資料和待檢驗的頻繁模式集都進行了分割,並且每一次檢驗限制在與其相符合的更小投影資料庫中。

PrefixSpan是FreeSpan的改進演算法,即通過字首投影挖掘序列模式。其基本思想:投影時不考慮所有可能出現的頻繁子序列,只檢查字首序列,然後把相應的字尾投影成投影資料庫。每個投影資料庫中,只檢查區域性頻繁模式,在整個過程中不需要生成候選序列。

2.     演算法的定性比較

表1.演算法的分類比較

屬性

Apriori類演算法

模式增長演算法

AprioriAll

GSP

FreeSpan

PrefixSpan

候選序列

產生

產生

不產生

不產生

資料結構

Hash樹

Hash樹

Hash樹

WAP樹

資料庫分割

資料庫的掃描次數

反覆多次

反覆多次

3次

2次

演算法執行

迴圈

迴圈

遞迴

遞迴

3.     演算法的時空執行效率比較

Apriori

All演算法

這兩種演算法都屬於Apriori類演算法,都要產生大量的候選序列,需要有足夠的存貯空間。同時還需要反覆掃描資料庫,需要佔用很多執行時間。該類演算法的執行效率比較低,特別是在支援度比較低的情況下,其執行效率將會大大下降。和AprioriAll相比,GSP的執行效率比較高,總體來說要比AprioriAll高2~20倍。

GSP演算法

FreeSpan演算法

這兩種演算法都屬於模式增長演算法,它們的查詢更加集中和有效。由於該類演算法不生成大量的候選序列以及不需要反覆掃描原資料庫,和Apriori類演算法相比該類演算法要快且更有效,特別是在支援度比較低的情況下更明顯。此外,在時空的執行效率上,PrefixSpan比FreeSpan更優。

PrefixSpan演算法

4.     演算法的適用範圍分析

通常資料集可分為稠密資料集和稀疏資料集。稠密資料集有大量的長尺度和高支援度的頻繁模式,在這樣的資料集中,許多事件是相似的,例如DNA分析或者股票序列分析。稀疏資料集主要由短模式組成,長模式也存在,但相應的支援度很小,例如超級市場的交易資料集,使用者在網站中的瀏覽頁面序列等。

Apriori類演算法在稀疏資料集的應用中比較合適,不適合稠密資料集的應用。對於有約束條件(例如相鄰事務的時間間隔約束)序列模式挖掘,GSP更適用。

FreeSpan和PrefixSpan在兩種資料集中都適用,而且在稠密資料集中它們的優勢更加明顯。兩者相比,PrefixSpan的效能更好一些。

在實際應用中,在挖掘過程的不同階段,資料集的特點,資料規模等因素可能不同,如果根據各階段的特點,選擇與之相應的演算法,則序列模式挖掘能達到更好的效果。

此外由於Apriori類演算法使用較簡單,FreeSpan和PrefixSpan雖然效率高,但實現起來難度大。所以,現在大多數應用都是採用Apriori類演算法的改進演算法,以克服Apriori類演算法執行效率不高的缺點。

相關推薦

4序列模式挖掘演算法比較分析

http://fpcheng.blog.51cto.com/2549627/829527     演算法簡介 AprioriAll演算法屬於Apriori類演算法,其基本思想為首先遍歷序列資料庫生成候選序列並利用Apriori性質進行剪枝得到頻繁序列。每次遍歷都是通過連線上

序列模式挖掘(AprioriAll和AprioriSome演算法

序列模式(sequential pattern)挖掘最早由Agrawal等人提出,針對帶有交易時間屬性的交易資料庫,獲取頻繁專案序列以發現某段時間內客戶的購買活動規律。每一次交易包含customer-id,transaction-time和items(購置的商品內容)。 定義1一個序列(sequence)

序列挖掘演算法比較

AprioriAll + GSP + FreeSpan + PrefixSpan 1.基本概念 AprioriAll演算法屬於Apriori類演算法,其基本思想為首先遍歷序列資料庫生成候選序列並利用Apriori性質進行剪枝得到頻繁序列。 GSP(generaliz

關聯規則之序列模式挖掘--GSP算法

數據庫 seq ima 時間跨度 height 其中 prior 挖掘 葉子節點 關聯規則--Apriori算法部分討論的關聯模式概念都強調同時出現關系,而忽略數據中的序列信息(時間/空間): 時間序列:顧客購買產品X,很可能在一段時間內購買產品Y; 空間序列:在某個點發

8常見機器學習演算法比較

簡介 機器學習演算法太多了,分類、迴歸、聚類、推薦、影象識別領域等等,要想找到一個合適演算法真的不容易,所以在實際應用中,我們一般都是採用啟發式學習方式來實驗。通常最開始我們都會選擇大家普遍認同的演算法,諸如SVM,GBDT,Adaboost,現在深度學習很火熱,神經網路也是一個不錯的選擇。假如

4實時作業系統實時性的分析對比

【實時效能主要實現技術】 實時作業系統的實時性是第一要求,需要排程一切可利用的資源完成實時任務。根據響應時間在微秒、毫秒和秒級的不同,可分為強實時、準實時和弱實時三種。強實時系統必須是對即時的事件作出反應,絕對不能錯過事件處理時限。例如測控領域就是要求強或接近

OAuth2.0 4授權模式

學習了楊波老師的《微服務安全架構和實踐》關於Oauth2.0的知識,做了下簡單的總結,具體內容在https://github.com/geektime-geekbang/oauth2lab 最安全的授權方式,適用於開放平臺,客戶端為不受信的第三方應用,最終客戶

【機器學習】8常見機器學習演算法比較

8種常見機器學習演算法比較 簡介 機器學習演算法太多了,分類、迴歸、聚類、推薦、影象識別領域等等,要想找到一個合適演算法真的不容易,所以在實際應用中,我們一般都是採用啟發式學習方式來實驗。通常最開始我們都會選擇大家普遍認同的演算法,諸如SVM,GBDT,Adaboost,現在深度學習很火熱,

評價頻繁模式挖掘和關聯分析的指標(模型興趣度度量方法)

強規則不一定是有趣的 關聯分析和頻繁模式挖掘的兩大經典演算法包括:Apriori演算法和FP-growth。 其在學習過程中的評價指標主要包括支援度(包括支援度計數)和置信度(也叫可信度)。但其實這兩個指標有一定的侷限性。 示例問題如下: 假設一共有10000個事務,其中包括A事件的

TCP擁塞控制演算法分析

幾種TCP擁塞控制演算法的分析擁塞控制演算法是實現TCP的重要元件,目前已有非常多的TCP Congestion Control Algorithm. 不同的演算法有自己的優化特性和工作區域。首先,本文簡單介紹一下TCP擁塞避免演算法的工作原理;其次,介紹Reno, Vega

《連載 | 物聯網框架ServerSuperIO教程》1.4通訊模式機制。附小文:招.NET開發,結果他轉JAVA了,一切都是為了生活

參考文章: 一、感慨       上大學的時候,沒有學過C#,花了5塊錢在地壇書市買了一本教程,也就算是正式入行了。後來深造,學過JAVA,後來迫於生計,打算轉JAVA了。後來考慮考慮,自己寫的框架還是有很大發展餘地,後來還是在C#的陣地上堅持了下來。從一開始的雛形,到SuperIO的

PHP的4執行模式

SAPI(Server Application Programming Interface)伺服器應用程式程式設計介面,即PHP與其他應用互動的介面,PHP指令碼要執行有很多方式,通過Web伺服器,或者直接在命令列下,也可以嵌入在其他程式中。 SAPI提供了一個和外部通訊的介面,常見的S

SoapUI、Jmeter、Postman三介面測試工具的比較分析

前段時間忙於介面測試,也看了幾款介面測試工具,簡單從幾個角度做了個比較,拿出來與諸位分享一下吧。各位如果要轉載,請一定註明來源,最好在評論中告知博主一聲,感謝。本報告從多個方面對介面測試的三款常用工具進行比較分析,以便於在特定的情況下選擇最合適的工具,或者使用自己編寫的工具。

對等網路中主流分散式雜湊演算法比較分析(轉載)

本文首先從P2P的定義出發,介紹了結構化P2P與非結構化P2P的區別以及結構化P2P的核心技術DHT。而後,本文深入介紹了幾種主流的DHT演算法與協議並對每種協議進行了討論。文章的最後展望了DHT在未來的發展趨勢。 對 等網路(Peer-to-Peer,簡稱P2P)是目前非

常見模式識別演算法整理和總結

這學期選了門模式識別的課。發現最常見的一種情況就是,書上寫的老師ppt上寫的都看不懂,然後繞了一大圈去自己查資料理解,回頭看看發現,Ah-ha,原來本質的原理那麼簡單,自己一開始只不過被那些看似formidable的細節嚇到了。所以在這裡把自己所學的一些點記錄下來,供備忘

SoapUI、Jmeter、Postman三介面測試工具的比較分析——灰藍

前段時間忙於介面測試,也看了幾款介面測試工具,簡單從幾個角度做了個比較,拿出來與諸位分享一下吧。各位如果要轉載,請一定註明來源,最好在評論中告知博主一聲,感謝。本報告從多個方面對介面測試的三款常用工具進行比較分析,以便於在特定的情況下選擇最合適的工具,或者使用自己編寫的工

安卓開發之Activity的4啟動模式

一、四種啟動模式 Activity的啟動模式有4種,分別為standard、singleTop、singleTask、singleIntance。4種啟動模式的區別主要與Activity的任務棧管理有關,棧是一種後進先出的集合。 二、Activity啟動

工廠模式的優劣比較

    在工廠方法模式中,一個具體的工廠類負責建立一個單獨的產品,如果有新的產品加進來,只需要增加一個具體的建立產品工廠類和具體的產品類就可以了,不會影響到已有的其他程式碼,程式碼量也不會變大,後期維護更加容易,增加了系統的可擴充套件性。但是工廠方法模式無法體現產品之間的關係,如果有兩個不同的產品需要建立,就

(第一行程式碼筆記)活動的4啟動模式詳解

singleInstance模式應該算是四種啟動模式中最特殊也最複雜的一個了,你也需要多花點功夫來理解這個模式。不同於以上三種啟動模式,指定為singleInstance模式的活動會啟用一個新的返回棧來管理這個活動(其實如果singleTask模式指定了不同的taskAffinity,也會啟動一個新的返回棧

Android中兩序列化方式的比較Serializable和Parcelable

Serializable和Parcelable介面可以完成物件的序列化過程, 序列化 (Serialization)將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程。在序列化期間,物件將其當前狀態寫入到臨時或永續性儲存區。以後,可以通過從儲存區中讀取或反序列化物件的狀態