1. 程式人生 > >weka –Apriori演算法 關聯規則挖掘詳解

weka –Apriori演算法 關聯規則挖掘詳解

本文轉自:http://blog.csdn.net/haosijia929/article/details/5596939

一、Apriori演算法引數含義

本次共進行了9組實驗,使用了weka安裝目錄data資料夾下的contact-lenses.arff資料。

ToolsàArffViewer,開啟contact-lenses,可以看到實驗資料contact-lenses共有24條記錄,5個屬性值。具體內容如下:

結合實驗結果闡釋下列12個引數的含義

1.        car 如果設為真,則會挖掘類關聯規則而不是全域性關聯規則。

2.        classindex 類屬性索引。如果設定為-1,最後的屬性被當做類屬性。

3.        delta 以此數值為迭代遞減單位。不斷減小支援度直至達到最小支援度或產生了滿足數量要求的規則。

4.        lowerBoundMinSupport 最小支援度下界。

5.        metricType 度量型別。設定對規則進行排序的度量依據。可以是:置信度(類關聯規則只能用置信度挖掘),提升度(lift),槓桿率(leverage),確信度(conviction)。

在 Weka中設定了幾個類似置信度(confidence)的度量來衡量規則的關聯程度,它們分別是:

a)        Lift : P(A,B)/(P(A)P(B)) Lift=1時表示A和B獨立。這個數越大(>1),越表明A和B存在於一個購物籃中不是偶然現象,有較強的關聯度.

b)        Leverage :P(A,B)-P(A)P(B)

Leverage=0時A和B獨立,Leverage越大A和B的關係越密切

c)        Conviction:P(A)P(!B)/P(A,!B) (!B表示B沒有發生) Conviction也是用來衡量A和B的獨立性。從它和lift的關係(對B取反,代入Lift公式後求倒數)可以看出,這個值越大, A、B越關聯。

6.        minMtric 度量的最小值。

7.        numRules 要發現的規則數。

8.        outputItemSets 如果設定為真,會在結果中輸出項集。

9.        removeAllMissingCols 移除全部為預設值的列。

10.    significanceLevel 重要程度。重要性測試(僅用於置信度)。

11.    upperBoundMinSupport 最小支援度上界。 從這個值開始迭代減小最小支援度。

12.    verbose 如果設定為真,則演算法會以冗餘模式執行。

二、實驗結果及分析

1. 以其中一組實驗為例做詳細分析

具體引數設定如下圖:

完整的實驗結果輸出及具體分析

=== Run information ===     // 實驗執行資訊

Scheme:       weka.associations.Apriori -I -N 10 -T 0 -C 0.9 -D 0.05 -U 1.0 -M 0.5 -S -1.0 -c -1

Relation:     contact-lenses       //資料的名稱 contact-lenses

Instances:    24         //資料的記錄數 24

Attributes:   5         //屬性數目 5以及各屬性名稱

              age

              spectacle-prescrip

              astigmatism

              tear-prod-rate

              contact-lenses

=== Associator model (full training set) ===

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%  scheme -所選的關聯規則挖掘方案: Apriori演算法

%  演算法的引數設定:-I -N 10 -T 0 -C 0.9 -D 0.05 -U 1.0 -M 0.5 -S -1.0 -c -1 ;

%  各引數依次表示:

%  I - 輸出項集,若設為false則該值預設;

%  N 10 - 規則數為10;

%  T 0 – 度量單位選為置信度,(T1-提升度,T2槓桿率,T3確信度);

%  C 0.9 – 度量的最小值為0.9;

%  D 0.05 - 遞減迭代值為0.05;

%  U 1.0 - 最小支援度上界為1.0;

%  M 0.5 - 最小支援度下屆設為0.5;

%  S -1.0 - 重要程度為-1.0;

%  c -1 - 類索引為-1輸出項集設為真

%  (由於car, removeAllMissingCols, verbose都保持為預設值False,因此在結果的引數設定為預設,若設為True,則會在結果的引數設定資訊中分別表示為A, R,V)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Apriori  // Apriori演算法執行結果

=======

Minimum support: 0.5 (12 instances)  //最小支援度0.5,即最少需要12個例項

Minimum metric <confidence>: 0.9   //最小度量<置信度>: 0.9

Number of cycles performed: 10    //進行了10輪搜尋

Generated sets of large itemsets:     //生成的頻繁項集

Size of set of large itemsets L(1): 7     //頻繁1項集:7個

Large Itemsets L(1):      //頻繁1項集(outputItemSets設為True, 因此下面會具體列出)

spectacle-prescrip=myope 12

spectacle-prescrip=hypermetrope 12

astigmatism=no 12

astigmatism=yes 12

tear-prod-rate=reduced 12

tear-prod-rate=normal 12

contact-lenses=none 15

%%%%%%%%%%%%%%%%%%%%%%%%

在上面所示資料介面中,分別點選標籤spectacle-prescrip,astigmatism,tear-prod-rate和contact-lenses,該列的值會自動進行分類排序,可以很方便的對上面結果進行。點選age標籤,其值按pre-presbiopic、presbiopic和young分類排序,可以看到各屬性值的記錄數均為8<12,不滿足最小支援度,因此age屬性的所有取值都沒有列在上面結果中。

%%%%%%%%%%%%%%%%%%%%%%%%

Size of set of large itemsets L(2): 1    //頻繁2項集: 1個

Large Itemsets L(2):

tear-prod-rate=reduced contact-lenses=none 12

//tear-prod-rate取值為reduced且 contact-lenses取值為none 的記錄數共有12個

Best rules found:    //最佳關聯規則

 1. tear-prod-rate=reduced 12 ==> contact-lenses=none 12    conf:(1)

// 若tear-prod-rate取值為reduced可以推出 contact-lenses的取值為none,該關聯規則置信度為100%

2.其它實驗設定及部分結果展示

1. 實驗中,若其它引數保持為預設值,將最小支援度下界設為0.8,則執行結果會顯示”No large itemsets and rules found!”,即找不到滿足條件的關聯規則。

2. 若其它引數保持為預設值,將最小支援度下界設為0.25,上界設為0.8,度量選為置信度,最小值為0.8,則執行結果找到:頻繁1項集10個,頻繁2項集18個,頻繁3項集4個,找到的最佳關聯規則為:

1. tear-prod-rate=reduced 12 ==> contact-lenses=none 12    conf:(1)

 2. spectacle-prescrip=myope tear-prod-rate=reduced 6 ==> contact-lenses=none 6    conf:(1)

 3. spectacle-prescrip=hypermetrope tear-prod-rate=reduced 6 ==> contact-lenses=none 6    conf:(1)

 4. astigmatism=no tear-prod-rate=reduced 6 ==> contact-lenses=none 6    conf:(1)

 5. astigmatism=yes tear-prod-rate=reduced 6 ==> contact-lenses=none 6    conf:(1)

 6. spectacle-prescrip=myope contact-lenses=none 7 ==> tear-prod-rate=reduced 6    conf:(0.86)

 7. astigmatism=no contact-lenses=none 7 ==> tear-prod-rate=reduced 6    conf:(0.86)

 8. contact-lenses=none 15 ==> tear-prod-rate=reduced 12    conf:(0.8)

3. 若其它引數保持為預設值,將最小支援度下界設為0.25,上界設為0.8,度量選為提升度(Lift : P(A,B)/(P(A)P(B))),最小值為1.1,則執行結果找到10條最佳關聯規則,前3條如下:

1. tear-prod-rate=reduced 12 ==> spectacle-prescrip=myope contact-lenses=none 6    conf:(0.5) < lift:(1.71)> lev:(0.1) [2] conv:(1.21)

 2. spectacle-prescrip=myope contact-lenses=none 7 ==> tear-prod-rate=reduced 6    conf:(0.86) < lift:(1.71)> lev:(0.1) [2] conv:(1.75)

 3. tear-prod-rate=reduced 12 ==> astigmatism=no contact-lenses=none 6    conf:(0.5) < lift:(1.71)> lev:(0.1) [2] conv:(1.21)

4. 若其它引數保持為預設值,將最小支援度下界設為0.25,上界設為0.8,度量選為槓桿率(Leverage:P(A,B)-P(A)P(B),在下面第一條規則中,[4]表示滿足lev:(0.19)的例項數目),最小值為0.1,則執行結果找到6條最佳關聯規則,前3條如下:

1. tear-prod-rate=reduced 12 ==> contact-lenses=none 12    conf:(1) lift:(1.6) < lev:(0.19) [4]> conv:(4.5)

2. contact-lenses=none 15 ==> tear-prod-rate=reduced 12    conf:(0.8) lift:(1.6) < lev:(0.19) [4]> conv:(1.88)

3. tear-prod-rate=reduced 12 ==> spectacle-prescrip=myope contact-lenses=none 6   

5. 若其它引數保持為預設值,將最小支援度下界設為0.25,上界設為0.8,度量選為確信度(Conviction:P(A)P(!B)/P(A,!B)),最小值為1.1,則執行結果找到10條最佳關聯規則,前3條如下:

1. tear-prod-rate=reduced 12 ==> contact-lenses=none 12    conf:(1) lift:(1.6) lev:(0.19) [4] < conv:(4.5)>

2. spectacle-prescrip=myope tear-prod-rate=reduced 6 ==> contact-lenses=none 6    conf:(1) lift:(1.6) lev:(0.09) [2] < conv:(2.25)>

3. spectacle-prescrip=hypermetrope tear-prod-rate=reduced 6 ==> contact-lenses=none 6    conf:(1) lift:(1.6) lev:(0.09) [2] < conv:(2.25)>