資料探勘 Apriori演算法

2021-09-19 20:53:36 字數 2693 閱讀 5856

今日資料探勘課學習了apriori演算法,特意總結下,因為自己是大三弱雞,很多地方參考了下面dalao的博文

非常感謝!

apriori演算法是一種挖掘關聯規則的頻繁項集演算法,其核心思想是通過候選集生成和情節的向下封閉檢測兩個階段來挖掘頻繁項集。而且演算法已經被廣泛的應用到商業、網路安全等各個領域。

許多商業企業在日復一日的運營中積聚了大量的交易資料。例如,超市的收銀台每天都收集大量的顧客購物資料。例如,下表給出了乙個這種資料集的例子,我們通常稱其為購物籃交易(market basket transaction)。表中每一行對應乙個交易,包含乙個唯一標識tid和特定顧客購買的商品集合。零售商對分析這些資料很感興趣,以便了解其顧客的購買行為。可以使用這種有價值的資訊來支援各種商業中的實際應用,如市場**,庫存管理和顧客關係管理等等。

令i=是購物籃資料中所有項的集合,而t=是所有交易的集合。包含0個或多個項的集合被稱為項集(itemset)。如果乙個項集包含k個項,則稱它為 k-項集。顯然,每個交易ti包含的項集都是i的子集。

關聯規則是形如x→y的蘊涵式,其中且, x和y分別稱為關聯規則的先導(antecedent或left-hand-side, lhs)和後繼(consequent或right-hand-side, rhs) 。其中x和y是不相交的項集,即 x∩y=∅。關聯規則的強度可以用它的支援度(support)和置信度(confidence)來度量。支援度確定規則可以用於給定資料集的頻繁程度,而置信度確定y在包含x的交易**現的頻繁程度。支援度(s)和置信度(c)這兩種度量的形式定義如下:

例如考慮規則→→,則易得 

強規則:同時滿足最小支援度閾值和最小置信度閾值的規則。

頻繁項集:滿足最小支援度閾值的項集。

所以一般來說,排除空集後,乙個包含k個項的資料集可能產生2^k−1個頻繁項集。在這發現搜尋頻繁項集的規模是指數級別。普通的模式匹配演算法(bf)計算將非常複雜,所以下面將提及一種新的演算法也就apriori演算法

apriori演算法使用頻繁項集的先驗知識,使用一種稱作逐層搜尋的迭代方法,k項集用於探索(k+1)項集。首先,通過掃瞄事務(交易)記錄,找出所有的頻繁1項集,該集合記做l1,然後利用l1找頻繁2項集的集合l2,l2找l3,如此下去,直到不能再找到任何頻繁k項集。最後再在所有的頻繁集中找出強規則,即產生使用者感興趣的關聯規則。

1. 單趟掃瞄資料庫d;計算出各個1項集的支援度,得到頻繁1項集的集合,即l1。

2. 從2項集開始迴圈,由頻繁k-1項集生成頻繁頻繁k項集。

2.1連線

2.2  剪枝

2.3  掃瞄資料庫,計算2.3步中過濾後的k項集的支援度,捨棄掉支援度小於閾值的項集,生成頻繁k項集。

3.  當當前生成的頻繁k項集中只有乙個項集時迴圈結束

在剪枝的步驟中採用apriori中兩個定律進行剪枝

apriori定律1:如果乙個集合是頻繁項集,則它的所有子集都是頻繁項集。

例如:假設乙個集合是頻繁項集,即a、b同時出現在一條記錄的次數大於等於最小支援度min_support,則它的子集,出現次數必定大於等於min_support,即它的子集都是頻繁項集。

apriori定律2:如果乙個集合不是頻繁項集,則它的所有超集都不是頻繁項集。

舉例:假設集合不是頻繁項集,即a出現的次數小於 min_support,則它的任何超集如出現的次數必定小於min_support,因此其超集必定也不是頻繁項集。

最開始資料庫裡有4條交易,,,,,使用min_support=2作為支援度閾值,最後我們篩選出來的頻繁集為

自己分析:

1.首先掃瞄1項集,將低於min_support的刪去得到l1

2.l1的基礎上進行連線操作實質形成2項集,即c2

3.在c2上做第二次掃瞄得到每一項的相應的支援度

4.然後做剪枝操作得到相應的l2,刪除掉了,還是因為它們的支援度小於min_support

5.在l2上做連線操作,其中只能bce,那麼為什麼不能得到abc、ace這兩個呢?其實觀察abc(含有ab)、ace含有(ae),而ab、ae已在c2剪枝中小於min_support捨棄掉了

6.再次掃瞄資料庫得到相應的支援度

最後我們可以根據結果寫出關聯規則,而根據經驗將選取這些關聯規則中支援度較小,可信度較高的

(1)由頻繁k-1項集進行自連線生成的候選頻繁k項集數量巨大。(2)在驗證候選頻繁k項集的時候要對整個資料庫進行掃瞄,非常耗時。

(1)hash(2)fp-tree(3)層次劃分(即將精細的劃分,進行泛化),比如將全脂牛奶等不同很精細的牛奶泛化為牛奶,全麥麵包等精細的種類麵包泛化為麵包,當然這要考慮實際情況。

還有很多方法就不一一提及了,畢竟自己還是個弱雞!

資料探勘演算法 Apriori演算法

apriori演算法 所以做如下補充 關聯規則 形如x y的蘊涵式,其中,x和y分別稱為關聯規則的先導 antecedent或left hand side,lhs 和後繼 consequent或right hand side,rhs 其中,關聯規則xy,存在支援度和信任度。置信度 在所有的購買了左邊...

資料探勘演算法之 apriori

關聯規則之 apriori演算法 實現 2006年5月 include include typedef struct d node 資料庫d typedef struct c node 候選集 typedef struct l node 頻繁集 c node c 100 100 l node l 1...

資料探勘作業 Apriori演算法

設minsupport 0.4,利用apriori演算法求出所有的頻繁項集,指出最大頻繁項集。資料集 實現 設minsupport 40 利用apriori演算法求出所有的頻繁專案集,指出其中的最大頻繁專案集。import pandas as pd def get d d pd.read csv w...