關聯規則


關聯規則

1 關聯規則

關聯規則挖掘的目的是在數據項目中找出所有的並發關系,除了基本Aprioris算法,還有一些常用的改進算法,例如多最小支持度的關聯規則挖掘,分類關聯規則挖掘。

Aprioris算法基於演繹原理(或稱為向下封閉屬性)來高效地產生所有頻繁項目集。算法基於逐級搜索的思想,它采用多輪搜索的方法,每一輪搜索掃描一遍整個數據集,並最終生成所有的頻繁項目集合。

多最小支持度算法簡稱為"MS-Apriori算法",它通過對項目集合中的項目基於最小項目支持度值來進行升序排序。該算法也是基於逐級搜索的,通過多次遍歷數據之后產生所有頻繁項目集。

分類關聯規則挖掘(Class Association Rules,CAR)和一般的關聯規則有兩點不同,第一點是:CAR的后件只有一個項目,第二點是:CAR的后件只能從分類標識集合中選取。項目集合中的項目都不能作為后件使用,分類標識集合中的項目也不能作為前件使用。

下面通過具體應用說明上述三種關聯規則的應用與差別。

首先給出一個事物集合的例子。

給定最小支持度minsup=30%和最小置信度mincof=80%。通過三種數據挖掘方法,找尋事物集合中的關聯規則。

1.1 Apriori算法

Apriori算法分兩步進行,第一步生成所有頻繁項目集,第二步從頻繁項目集中生成所有可信關聯規則。

1.1.1 生成頻繁項目集過程

(1)在第一輪搜索中,算法計算出所有只包含一個項目的項集在事務中的支持度,並且寫出單項目頻繁項目集(即1-頻繁項目集)。(算法第1-2行)

(每個頻繁項目集后的數字表示這個頻繁項目集的支持計數,在例子中支持度計數大於等於3即可)

  1. 隨后每一輪搜索都分為三步進行:
  2. 將算法第(k-1)生成的頻繁項目集集合 作為種子集合產生候選項集集合 ,而 中的這些候選項目集都是可能的頻繁項目集。這個過程通過candidate-gen函數完成。

    Candidate-gen(候選項集集合的生成)函數:該函數可以分成兩步:合並和剪枝

    合並:這一步將兩個(k-1)-頻繁項目集合並來產生一個可能的k-候選項集c。兩個頻繁項目集的前k-2個項目都是相同的,只有最后一個項目是不同的。隨后c被加入到候選項目集合中。

    剪枝:從合並步中得到的候選項集集合並不是最終的。該候選項集要滿足向下封閉原理,需要判斷c的所有(k-1)-子集是否都在中。

  3. 隨后 算法對整個事務數據庫進行掃描,計算 中每個候選項集c的支持度。(算法5-10行)
  4. 在本輪搜索的最后,算法計算出 中每個候選項集的支持度,並將符合最小支持度要求的候選項集加入 中。(算法11行)
  5. 算法最終輸出的是所有頻繁項目集的集合F。

    1.1.2 事例生成頻繁項目集的過程

    :{{牛肉}:4,{雞肉}:5,{牛奶}:4,{奶酪}:4,{衣服}:3}

    :{{牛肉,雞肉},{牛肉,牛奶},{牛肉,奶酪},{牛肉,衣服},......}

     

    :{{牛肉,雞肉}:3,{雞肉,牛奶}:4,{牛肉,奶酪}:3,{雞肉,衣服}:3,{衣服,牛奶}:3}

    :{{雞肉,衣服,牛奶}}

    :{{雞肉,衣服,牛奶}:3}

    1.1.3 規則生成的過程

    首先,需要明確一點,當給定一個頻繁項目集f時,如果一個關聯規則的后件為a,那么所有以a的任一非空子集為后件的候選規則都是關聯規則。(先前條件)

    算法如下:

  6. 從頻繁項目集f中生成所有后件只有一項的關聯規則。
  7. 然后利用所有得到的關聯規則和candidate-gen()函數,調用ap-genRules函數生成所有2-后件候選關聯規則,依次類推,同時要滿足先前條件,即1-后件可以組合生成2-后件。

    1.1.4 事例規則生成的過程

    中的頻繁項目集生成1-后件候選關聯規則:

    規則1:雞肉,衣服牛奶[支持度=3/7,置信度=3/3]

    規則2:雞肉,牛奶衣服[支持度=3/7,置信度=3/4](刪除)

    規則3:衣服,牛奶雞肉[支持度=3/7,置信度=3/3]

    中的頻繁項目集生成2-后件候選關聯規則:

    規則4:衣服牛奶,雞肉[支持度=3/7,置信度=3/3]

    1.2 MS-Apriori算法

     

    2.1.1 生成頻繁項目集過程

    MS-Apriori算法的詳細流程。

    算法第1行對I中的所有項目根據項目的MIS值(存儲在MS中)進行排序。

    算法第2行調用init-pass()函數對數據進行第一遍遍歷,得到生成(基數為2的候選項集集合)的種子L。Init-pass函數分為兩步:

  8. 掃描一遍數據,計算每個項目的支持計數。
  9. 按存儲順序在M中找出第一個滿足 的項目i,將其加入L中。對於M中i之后的每個項目j,如果 ,則將j加入L中。

    之后對數據的每一遍遍歷,算法都執行三步操作:

    1. MScandidate-gen函數利用在第(k-1)輪找到的頻繁項目集集合生成候選項集集合。K=2是一個特例,這是候選項集集合的函數為Level2-candidate-gen()。

    Level2-candidate-gen函數:函數有一個參數L,返回一個集合,是所有2-頻繁項目集集合的超集。同時要滿足

    MScandidate-gen函數:函數也分為兩步,合並和剪枝。合並步和candidate-gen()函數一樣。剪枝步則不同。

    對於c的每個(k-1)-子集s,如果s不在中,且s包含c[1],也即c中擁有最低MIS值的項目,則c就能從中刪除。如果這個s不不包含c[1],則即使s並不在中,我們也不能把c刪除,因為我們不能斷定s不滿足MIS(c[1])。

    1. 掃描數據,計算中各項集的支持計數。對每個候選項集c,算法不僅計算它的支持計數,同時也計算去掉c的第一個項目后的支持計數,也即c-{c[1]},這個數據將在關聯規則的生成階段用到。

     

    注意:在實際應用中,如果不想生成某些頻繁項目集,只需將該頻繁項目集的最小支持度設置為101%。

    2.1.2 規則生成的過程

    在MS-Apriori算法中,僅僅記錄每個頻繁項目集的支持計數是不夠的。同時我們還要避免頭項目問題的產生,即只有當頻繁項目集中具有最小MIS值的項目處於規則的后件時才會發生頭項目問題。

    1.3 分類關聯規則

    生成分類關聯規則的算法稱為CAR-Apriori,是基於Apriori算法的。CAR-Apriori算法需要多次遍歷數據來生成所有頻繁項目規則的項。

    不同於一般的關聯規則挖掘CAR可以直接一步生成,關鍵的操作是找出所有支持度高於最小支持度閾值的規則項。一個規則項表示為:

    (condset,y)

    其中condset屬於I是一個項目集合,成為條件集,y屬於Y是一個類標。一個條件集的支持計數表示為condsupCount,是T中包含該條件集的事物的數量,稱為條件集支持計數。一個規則項(condset,y)的支持計數表示為rulesupCount,是T中包含條件集countset且類標為y的事物的數量,稱為規則支持計數。只要滿足最小支持度的規則項都稱為頻繁規則項,其余的都稱為非頻繁規則項。

    在第一遍遍歷中,算法計算每個1-規則項的支持計數。所有的1-候選規則項的集合為:

    算法第2行決定中候選1-規則項是否頻繁的。從頻繁1-規則項中,我們生成1-前件CAR。后續的遍歷,以K-1輪生成的頻繁(k-1)-規則項的集合為種子生成k-候選規則項的集合。每個候選k-規則項的真實支持計數,包括condsupCount和rulesupCount,在對事物數據集合的掃描中得到更新。在數據掃描結束后,算法決定中哪些候選k-規則項是真正頻繁地。與Aprioir算法中唯一的不同是,CARcandidate-gen()中,僅僅將具有相同 分類的規則項通過合並它們的條件集進行合並。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM