前言:
關聯規則是資料探勘中最活躍的研究方法之一, 是指搜尋業務系統中的所有細節或事務,找出所有能把一 組事件或資料項與另一組事件或資料項聯絡起來的規則,以獲 得存在於資料庫中的不為人知的或不能確定的資訊,它側重於確 定資料中不同領域之間的聯絡,也是在無指導學習系統中挖掘本地模式的最普通形式。
一般來說,關聯規則挖掘是指從乙個大型的資料集(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...