• 沒有找到結果。

第二章 文獻回顧

2.4 資料探勘之關聯性法則

2.4.1 關聯性法則資料探勘技術

關聯法則探勘的模型是由Agrawal[8]等學者在1993年所提出。它用來呈現資料中特定 項目同時發生的關聯性,也就是說在發生項目A的情況下,同時也會發生項目B的可能性。

根據產生關聯法則的步驟中依照工作程序特性,大致上可以分成兩個階段,第一個階段是 從大量的資料中尋找符合支持度的高頻項目集合(Frequent Patterns);第二的階段就是將第 一個階段產生的高頻項目集合,進行信賴度驗證的工作。由於第一個階段必須利用繁複的 工作去掃瞄資料,並且透過不斷組合、刪減、驗證來產生高頻項目集。因此第一階段成為 探勘關聯法則最費時的地方,而第二個階段是利用第一階段的結果,推演出關聯法則。

關聯性法則的形式為 X → Y,其中 X、Y ⊂ I,且 X ∩ Y = Φ。支持度(Support)為支援 關聯規則交易(發生狀態)次數百分比。信賴度(Confidence)為發生左邊交易(狀態)中,同時 又 發 生 右 邊 交 易( 狀態) 的概率,也可說是每一條規則(Rule)之強度的度量單 位 。 而 Confidence(X → Y) = Support(X ∪ Y , D) / Support (X , D)。依照條件機率,若某關聯性法則 的信賴度超過一定限度時,其意義為若此交易(狀態)包含 X,有很高的機率會包含 Y。因 此,挖掘關聯性法則也就是要找出所有X → Y 形式的關聯性法則,並且滿足下列條件:

Support(X ∪ , D)≥Min_Support 且 Confidence(Y XY)≥ Min_Confidence。

2.4.1.1 關聯性法則 Apriori 演算法

1994 年 Agrawal[8]等學者提出 Apriori 演算法。其演算法流程如圖 2.9 所示。

圖2.9 Apriori 演算法流程圖[8]

上述說明關聯性法則 Apriori 進行資料採擷之演算法,然而對其演算法流程之解析,很 難了解其所表達的意涵。故在此以另一種方式解說其演算步驟,其主要歸類分五大步驟,

其演算步驟說明如表2.11 所示。

表2.12 Apriori 演算步驟說明表

步驟 執行演算方式

1 先定義最小支持度和最小信賴度

2 Apriori 演算法使用之候選項目集合(Candidate Itemset)的觀念,若候選項目集合的支 持度 > 最小支持度(Minimun Support = 1),則該候選項目集合為高頻項目集合。

3 首先由資料庫讀取所有的記錄,求出候選C1 的支持度,再找出高頻項目集合 L1,

並利用這些高頻項目集合的結合,產生候選C2。

4 然後再SCAN 資料倉儲資料,得出 C2 的支持度後,找出高頻 L2,並利用這些 L2 的結合,產生候選C3。

5 重覆SCAN 資料倉儲資料,與最小支持度比較,產生高頻項目集合,再結合產生下 一級候選項目集合,直到不能結合出產生新的候選項目集合為止。

由圖2.10得知,Ci = Li-1 * Li-1,會將Li-1中具有相同i-2個項目的(i-1)-高頻項目集予以組 合,以產生一個新的i-項目集。且"Ci 中的每一項目集之任一子集合須在 Li-1 中出現,否 則此Ci 項目集須加以刪除"。如此scan資料至無法組合出更高頻項目集時,停止搜尋。

根據表 2.12 演算法的步驟,進行相關例子推導,利用高頻項目集產生候選項目集的情 形。假定資料庫中存在相關資料,其中包含 Event_1(Item(1)、Item(2))、Event_2(Item(3)、

Item(4)、Item(5))五個項目(事件(Event)為項目之集合,如圖 2.10 左上方所示),透過掃瞄資 料庫可以得到項目在資料庫中的次數。設定支持度為2,當項目發生次數大於或等於 2 時,

方能成為高頻項目。詳細候選項目與高頻項目產生流程如圖2.10 所示。演算到最後,可以 產生四個一階高頻項目:Item(1)、Item(2)、Item(3)、Item(5);四個二階高頻項目:Item(13)、

Item(23)、Item(25)、Item(35);一個三階高頻項目:Item(235)。如果要產生關聯法則,就 將這些高頻項目集進行信賴度的判斷,如果符合信賴度的條件,就能夠成為關聯法則。

圖2.10 Apriori 演算執行過程[21]

Database L1 C2 = L1*L1

L2

C3 = L2*L2 L3

Min_Support = 2 小於2 者刪除

1 2

3 4 5 Event_1

Event_2

2.4.1.2 關聯性法則 DLG 演算法

Yen, S. J.等學者[26]提出DLG演算法[1],主要在改進尋找高頻項目集的步驟,其概念 是在產生高頻序列步驟中,只掃描資料庫一次並利用Bit Vector進行集合運算建立有向圖 (Directed Graph)。利用有向圖指出項目間的關聯,並且追蹤有向圖產生largeitemsets及 sequential patterns。DLG演算法可分為三個步驟,如表2.13所示。由表2.13得知步驟有三,

但是步驟中又有小步驟,因此以圖2.11例子來說明此步驟。

表2.13 DLG 演算步驟說明表

步驟 執行演算方式

1

產生 large 1-itemsets 並記錄相關資訊。

此步驟有下列的工作:

(a) 在演算法實施之前對每一個 item 編一個整數。

(b) 掃瞄資料庫計算每一個 item 的 support值(出現次數)。

(c) 對每一個 large item 建立一個 bit vector。若此 item 出現在第 i 筆交易,

則此 bit 設定為 1,否則為 0。 Bit vector的長度為交易的數目。

2 建構一個關聯圖,指出 large items 之間的關聯。產生 large 2-itemset。

3 利用關聯圖產生 k-itemsets (k > 2)。

圖2.11 DLG 演算執行過程

假定Min_Support值等於2。Itemset {i1,i2, …,ik}的Support值為BV1∩BV2∩BV3∩… BVk 所形成位元向量中"1"的個數,其中"∩"表示布林函數中AND集合運算。然後求出圖左下方 的位元向量表格,如果想要得到itemset{1,2}的支持度值,其結果為BV1 ∩ BV2,即(1010) ∩ (0111)結果為(0010),則支持度值為1。經過第一階段步驟之後就不再掃瞄資料庫,利用位 元向量表來算產生圖之右下角有向圖(資料結構採linked list)。若BVi∩BVj之支持度值大於 Min_Support則i至j的有向邊被建立,同時{i,j}是一個large 2-itemset。最後large 2-itemsets為 {1,3}、{2,3}、{2,5}、{3,5}。

Min_Support = 2 小於2 者刪除

DLG演算法主要的優點是產生candidate itemsets容易,且僅需掃瞄資料庫一次。但如果 項目過多會形成一個複雜的有向圖形,如此以linked list實施在空間及時間上會比array方式 更加的負擔。

2.4.1.3 關聯性法則 RARM 演算法

Amitabha Das等人[9]提出了RARM演算法,是將原始的資料庫經由前置處理,存成一 個Trie的資料結構,如圖2.12所示。這個資料結構依Support Count由大到小儲存所有的1-項 目 組(1-itemsets) 及 2- 項 目 (2-itemsets) ; 之 後 就 在 這 個 Trie 上 面 進 行 尋 找 高 頻 -1項 目 組 (Frequent-1-itemsets)與高頻-2項目(Frequent-2-itemsets)的操作,尋找其它長度的高頻項目 組,仍然需要掃瞄交易資料庫。經由上述解說之後,在此用一個例子來說明會更清楚,如 圖2.13 RARM演算執行過程。

圖2.12 Tire 資料結構

圖2.13 RARM 演算執行過程

由資料庫進行前置處理得到圖下方Tire資料結構,之後再從Tire資料結構尋找高頻項目 集。由Tire資料結構圖可以清楚得知,高頻-1項目組為B與C並無高頻-2項目組。RARM演 算 法 提 出 一 個 前 置 處理 的 機 制 , 但 是 若 遇 到 使 用 者 想 要 尋 找 高 頻3-項目組(Frequent 3-itemsets)或更長的高頻項目組時,還是必須去重新掃描資料庫。且為結構中只儲存1-項目 組與2-項目組,無法將完整的交易資料載入。

0 1

2

Min_Support=2 小於2 者刪除

2.4.1.4 關聯性法則 DHP 演算法

Park, J. S.[24]於1995年提出DHP(Direct Hashing and Pruning)演算法,在候選-2項目集 合事先使用雜湊函數(Hash function)過濾部分不可能成為高頻項目集合的候選項目集合,以 減少比對的次數。其步驟有四,如表2.14所示。

表2.14 DHP 演算步驟說明表

步驟 執行演算方式

1 將每個交易下的項目使用與Apriori高頻項目集合產生候選項目集合相同的方式 建立Hash table。

2 針對資料庫下的所有項目建立對映編號,如1、2、3

3 使用雜湊函數計算Hash table下所有的集合,將所得出來的直放入相對映的 Bucket。 p.s. 雜湊函數為h{x,y} = ((order of x)*10 + (order of y)) mod7。

4 使用Apriori方法找出第2層的候選項目集合。

圖2.14 DHP 演算執行過程

如圖2.14的資料庫含有4筆紀錄,有A、B、C、D、E等5個不同的項目,最小支持度設 定為50%。也就是說候選項目集合的次數要超過2(含)次以上才能成為高頻項目集合,採用 的雜湊函數為h{x,y} = ((order of x)*10 + (order of y)) mod7。

步驟一首先將每個交易下的項目使用與Apriori高頻項目集合產生候選項目集合相同的 方式建立Hash table。因此Tid = 100下的項目有A、C、D結合之後就會產生{AC}、{AD}、

Bucket

{CD}等3個集合,Tid = 200下的項目有B、C、E 結合之後就會產生{BC}、{BE}、{CE}等 3個集合,Tid = 300下的項目有A、B、C、E結合之後就會產生{AB}、{AC}、{AE}、{BC}、

{BE}、{CE}等6個集合,Tid = 400下的項目有B、E結合之後就會產生{BE}等1個集合。

步驟二對資料庫下的所有項目建立對映編號,因此A、B、C、D、E建立的對映編號為 1、2、3、4、5。與步驟三使用雜湊函數計算Hash table下所有的集合,將所求得出來的值 放入相對映的Bucket列。如集合{AB},則對映到的編號為{1,2},雜湊函數H(1,2) = (1*10+2) mod 7 = 5(餘數),故{AB}是放入第5 bucket;集合{AC},則對映到的編號為{1,3},雜湊函 數H(1,3) = (1*10 + 3) mod 7 = 6(餘數),所以{AC}是放入第6 bucket,依序以上的方法得知,

第0~6 bucket分別放入3、1、2、0、3、1、3個物件集合。

步驟四使用Apriori方法找出第2層的候選項目集合分別為{AB}、{AC}、{AE}、{BC}、

{BE}、{CE}等6個集合,經雜湊函數計算分別對映到的bucket位址為5、6、1、2、4、0 。 其各bucket的位址所含的集合個數分別為1、2、1、2、2、3,經過最低支持度檢測只有{AB}、

{BC}、{BE}、{CE},成為第2層的候選項目集合C2,{AB}、{AE}則成功的被雜湊函數事 先去除。

DHP演算法雖然利用簡單的雜湊函數減少了第2層的候選項目集合,但是其雜湊函數 會有碰撞的情形。如果碰撞太厲害,其執行效率會比Apriori更差。

2.4.1.5 關聯性法則 VIPER 演算法

Pradeep Shenoy 等人[25]提出 VIPER 演算法,主要是提出一套壓縮的方式,希望能減 少資料儲存的空間。但是VIPER 演算法在產生高頻項目組時,每次均要將前一個高頻項目 組解壓縮,才能產生候選項目組,並將結果再以壓縮的方式儲存在磁碟中。這一壓一解的 動作,降低了執行的效率。