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)>