頻繁項集的產生及經典演算法

2021-10-11 16:36:34 字數 3884 閱讀 2448

前言:

關聯規則是資料探勘中最活躍的研究方法之一, 是指搜尋業務系統中的所有細節或事務,找出所有能把一 組事件或資料項與另一組事件或資料項聯絡起來的規則,以獲 得存在於資料庫中的不為人知的或不能確定的資訊,它側重於確 定資料中不同領域之間的聯絡,也是在無指導學習系統中挖掘本地模式的最普通形式。

一般來說,關聯規則挖掘是指從乙個大型的資料集(dataset)發現有趣的關 聯(association)或相關關係(correlation),即從資料集中識別出頻繁 出現的屬性值集(sets of attribute values),也稱為頻繁項集 (frequent itemsets,頻繁集),然後利用這些頻繁項集建立描述關聯關係的規則的過程。

關聯規則挖掘問題:

發現頻繁項集:現所有的頻繁項集是形成關聯規則的基礎。通過使用者給定的最 小支援度,尋找所有支援度大於或等於minsupport的頻繁項集。

生成關聯規則:通過使用者給定的最小可信度,在每個最大頻繁項集中,尋找可信度不小於minconfidence的關聯規則.

如何迅速高效地發現所有頻繁項集,是關聯規則挖掘的核心問題,也是衡量關聯規則挖掘演算法效率的重要標準。

經典的挖掘完全頻繁項集方法是查詢頻繁項集集合的全集。其中包括基於廣度優先演算法搜尋的 關聯規則演算法--apriori演算法(通過多次迭代找出所有的頻繁項集)及dhp(direct hashing pruning) 演算法等改進演算法;基於深度優先搜尋策略的fp-growth演算法,eclat演算法,cofi演算法等, 我將介紹兩種經典演算法--apriori演算法和fp-growth演算法。

1.apriori演算法

apriori演算法由以下步驟組成,其中的核心步驟是連線步和剪枝步:

apriori演算法由以下步驟組成,其中的核心步驟是連線步和剪枝步

(1)生成頻繁1項集l1。

(2)連線步:為了尋找頻繁k項集 ,首先生成乙個潛在頻繁k項集構成的候選項集 , 中的每乙個項集是由兩個只有一項不同的屬於 的頻繁項集做k-2連線運算得到的。連線方法為:設l1和l2是 中的項集,即 ,如果l1和l2中的前k-2個元素相同,則稱l1和l2是可連線的,用 表示。假定事務資料庫中的項均按照字典順序排列,li[j]表示li中的第j項,則連線l1和l2的結果項集是 。

(3)剪枝步:連線步生成的ck是lk的超集,包含所有的頻繁項集lk,同時也可能包含一些非頻繁項集。可以利用前述先驗知識(定理3.2),進行剪枝以壓縮資料規模。比如,如果候選k項集ck的k-1項子集不在lk-1中,那麼該子集不可能是頻繁項集,可以直接刪除。

(4)生成頻繁k項集lk:掃瞄事務資料庫d,計算ck中每個項集的支援度,去除不滿足最小支援度的項集,得到頻繁k項集lk。

(5)重複步驟(2)~(4),直到不能產生新的頻繁項集的集合為止,演算法中止。

apriori演算法是一種基於水平資料分布的、寬度優先的演算法,由於 使用了層次搜尋策略和剪枝技術,使得apriori演算法在挖掘頻繁模式時具 有較高的效率。但是,apriori演算法也有兩個致命的效能瓶頸:

(1)apriori演算法是乙個多趟搜尋演算法,每次搜尋都要掃瞄事務資料庫,i/o開銷巨大。對於候選k項集ck來說,必須掃瞄其中的每個元素以確認是否加入頻繁k項集lk,若候選k項集ck中包含n項,則至少需要掃瞄事務資料庫n次。

(2)可能產生龐大的候選項集。由於針對頻繁項集lk-1的k-2連線運算,由lk-1 產生的候選k項集ck是呈指數增長的,如此海量的候選集對於計算機的運算時間和 儲存空間都是巨大的挑戰。

交易商品**

t100

l1,l2,l3

t200

l2,l3

t300

l2,l3

t400

l1,l2,l4

t500

l1,l3

t600

l2,l3

t700

l1,l3

t800

l1,l2,l3,l5

t900

l1,l2,l3

當k=1,min_sup=1時

計算c1和l1

c1項集

支援度計數67

622

l1:由c1剪枝得到l1

項集支援度計數67

622

計算c2和l2

c2項集

支援度計數44

1242

2010

l2:由c2剪枝得到l2

項集支援度計數44

2422

計算c3和l3

c3:由l2計算三項集++

++++

+超過三項

+超過三項

+超過三項

+超過三項++

++

l3:由c3剪枝得到l3

項集支援度計數32

計算c4和l4

c4:由l4計算四項集+

因為它的子集不是頻繁項集,此項集刪除,c4=0;

apriori演算法優缺點:

優點:思路簡單;遞迴計算;實現方便

缺點:頻繁遍歷資料庫;生成候選集-----連線較多;占用空間大;運算量大。

2.fp-growth演算法

頻繁模式樹增長演算法(frequent pattern tree growth)採用分而治之的 基本思想,將資料庫中的頻繁項集壓縮到一棵頻繁模式樹中,同時保持項集 之間的關聯關係。然後將這棵壓縮後的頻繁模式樹分成一些條件子樹,每個 條件子樹對應乙個頻繁項,從而獲得頻繁項集,最後進行關聯規則挖掘。

fp-growth演算法演示-------構造fp樹

事務資料庫的建立

tiditems

1l1,l2,l5

2l2,l4

3l2,l3

4l1,l2,l4

5l1,l3

6l2,l3

7l1,l3

8l1,l2,l3,l5

9l1,l2,l3

掃瞄事務資料庫得到頻繁專案集f

從1到各點

各點路徑重複次數

1-16

1-27

1-36

1-42

1-52

定義minsup=20%,即最小支援度為2,重新排列f

從1到各點

各點路徑重複次數

1-27

1-16

1-36

1-42

1-52

重新調整事務資料庫

在fp樹中可以看到,從根節點到i5:1的路徑有兩條:

i2:7-->i1:4-->i5:1

i2:7-->i14-->i3:2-->i5:1

i2:7-->i1:4和i2:7-->i14-->i3:2因為最終到達的節點肯定是i5,所以將i5省略就是i5的條件模式基,記為

條件模式基:

因為i3:1x小於最小支援度2,所以講i3:1省略不計,i5的條件fp樹記為

根據條件fp樹,我們可以進行全排列組合,得到挖掘出來的頻繁模式(這裡要將商品本 身,如i5也算進去,每個商品挖掘出來的頻繁模式必然包括這商品本身)

項條件模式基

條件fp樹

產生頻繁模式

i5,}

,,i4

,}i3

,,},,i1}

頻繁項集產生強關聯規則的過程

頻繁項集 產生強關聯規則的過程 1.由apriori演算法 當然別的也可以 產生頻繁項集 2.根據選定的頻繁項集,找到它所有的非空子集 3.強關聯規則需要滿足最小支援度和最小置性度 假設關聯規則是 a b support a b confidence a b p b a 這裡求概率都可以替換為求支援...

頻繁模式(項集)挖掘新演算法

我們小組提出了基於模式樹節點集的新穎資料結構,並把這類結構應用到資料探勘核心任務 頻繁模式挖掘中,形成了一系列的演算法,其中包括2010年發表在 international journal of computational intelligence systems 的ppv演算法和2012年發表 s...

R語言包arules進行頻繁項集挖掘的最簡單例子

arules是進行頻繁項集挖掘 frequent itemset mining 的有效工具,不過我在使用的時候發現網上很多例子都比較繁瑣,這裡總結一下其中apriori方法的最簡單使用方法,這裡首先給出 files change read.transactions input file,format...