Apriori演算法解析

2021-08-19 21:53:24 字數 2612 閱讀 9561

摘要: 本演算法主要應用於關聯分析問題(啤酒與尿布)。它使用基於支援度的剪枝技術,系統的控制候選集指數增長。

關聯規則是形如x->y的蘊涵表示式,其中x和y是不相交的項集,即x∩y=∅。

支援度(s):s(x->y)=count(x∪y)/n                置信度(c): c(x->y)=count(x∪y)/count(x)

count(.)表示支援度計數。

apriori演算法的頻繁項集產生

通過例子來了解頻繁項集是如何產生的,如下圖:

下面給出偽**,並進行分析:

1:  k=1

2: fk=)≥n*minsup}

3: repeat

4: k=k+1

5: ck=apriori-gen(fk-1)

6: for 每個事務 t∈t do

7: ct=subset(ck,t)

8: for 每個候選項集c∈ct do

9: σ(c)= σ(c)+1

10: end for

11: end for

12: fk=

13:until fk=∅

14:result=∪fk

該偽**中,ck為候選k-項集的集合,而fk為頻繁k-項集的集合:

步驟5的函式主要有如下兩個操作:

候選項集的產生

採用fk-1*fk-1方法:如果要合併一對頻繁(k-1)-項集,僅當它們的前k-2個項都相等。如下圖:

支援度計數:確定候選項剪枝步驟保留下來的每個候選項集出現的頻繁程度。(由演算法的6~11步實現)

其中一種方法是列舉每個事務所包含的項集,並利用它們更新對應的候選項集的支援度。

下圖顯示了列舉事務t中所有3-項集的系統的方法:

上圖演示了通過從最左項到最右項依次指定項集的項,然而還必須確定每乙個列舉的3-項集是否對應於乙個候選項集,如果它與乙個候選匹配,則相應候選項集的支援度計數增值。

使用hash樹進行支援度計數

主要思想:將候選集劃分為不同的桶,並存放在hash樹中。在支援度計數期間,包含在事務中的項集也雜湊到相應的桶中,並將它與同乙個桶中的候選項集進行匹配。

對於一棵hash樹,樹中的每個內部結點都使用hash函式h(p)=p mod 3來確定應沿著當前結點的哪個分支向下。例如,項1,4和7將雜湊到相同的分支(最左)。下圖展示了如何在hash樹的根節點雜湊乙個事務:

詳細的hash樹方法介紹請見

apriori演算法中規則的產生(基於高置信度)

該演算法使用的是一種逐層方法來產生關聯規則,其中每層對應於規則後件中的項數。初始時,提取規則後件只含乙個項的所有搞置信度規則,然後,使用這些規則來產生新的候選規則。如,如果-和->是兩個高置信度規則,則可以通過合併這兩個規則的後件產生候選規則->。下圖是由頻繁項集產生關聯規則的格結構。如果格中的任意節點具有低置信度,則可以立即剪掉該節點生成的整個子圖(因為我們選取的規則一定具有高置信度)。

下面給出apriori演算法中的規則產生的偽**:

1: for 每乙個頻繁k-項集fk,k>=2 do

2: h1=

3: call ap-genrules(fk, h1)

4: end for

過程ap-genrules(fk,hm)

1: k=|fk|   

2:m=|hm|

3:if k>m + 1 then

4: hm+1=apriori-gen(hm)

5: for 每個 hm+1∈hm+1 do

6: conf = σ(fk)/ σ(fk-hm+1)

7: if conf >= minconf then

8: output:規則(fk-hm+1)->hm+1

9: else

10: 從hm+1刪除hm+1

11: end if

12: end for

13: call ap-genrules(fk, hm+1)

14: end if

3. 頻繁項集的緊湊表示

Apriori演算法小結

1 apriori演算法是一種挖掘關聯規則的頻繁項集演算法,其核心思想是通過候選集生成挖掘頻繁項集。2 步驟 3 概念 對於a b 支援度 support p a b 既有a又有b 的概率 置信度 p b a p ab p a 在a 發生的事件中同時發生 b的概率 例如購物籃分析 牛奶 麵包例子 支...

Apriori演算法整理

首先兩個基本概念 支援度 a事件和b事件同時發生的概率 置信度 在a發生的事件中同時發生b的概率,p b a p ab p a 例子 支援度 3 置信度 40 支援度3 意味著 3 顧客同時購買牛奶和麵包 置信度40 意味著購買牛奶的顧客 40 也購買麵包 智慧型商場模型 目標是找到經常一起購買的物...

Apriori演算法例項

r.agrawal 和 r.srikant於1994年在文獻中提出了apriori演算法,該演算法的描述如下 下面是乙個具體的例子,最開始資料庫裡有4條交易,使用min support 2作為支援度閾值,最後我們篩選出來的頻繁集為。上述例子中,最值得我們從l2 到c3的這一步。這其實就是在執行偽 中...