數據挖掘(Data Mining)是一個處理過程,它利用一種或多種計算機技術,從數據庫的數據中自動分析并提取知識。數據挖掘的目的是確定數據的趨勢和模式。
關聯技術用于發現數據庫中屬性之間的有趣聯系。和傳統的產生式規則不同,關聯規則可以有一個或多個輸出屬性。同時,一個規則的輸出屬性可以是另一規則的輸入屬性。關聯規則是用于購物籃分析的常用技術,是因為可以找尋潛在的令人感興趣的所有的產品組合。由此,有限數目的屬性可能生成上百條關聯規則。
Income range($)Magazine promotionWatch promotionLife insurance promotionCredit card insurancesexage
40-50Kyesnononomale45
30-40Kyesyesyesnofemale40
40-50Knonononomale42
30-40Kyesyesyesyesmale43
50-60Kyesnoyesnofemale28
20-30Knonononofemale55
30-40Kyesnoyesyesmale35
20-30Knoyesnonomale27
30-40Kyesnononofemale43
30-40Kyesyesyesnofemale41
40-50Knoyesyesnomale43
20-30Knoyesyesnofemale29
50-60Knoyesyesnofemale39
40-50Kyesyesnonomale55
20-30Knonoyesyesfemale19
我們將Agrawal等人描述的apriori關聯規則算法應用到上表數據中。該算法檢查了項目籃,并為那些包含項目最少的籃子生成規則。Apriori算法不處理數值型數據。因此,在應用該算法之前,我們將屬性年齡轉化為離散的分類值:超過15,超過20,超過30,超過40,和超過50。例如,age=over40是年齡在40和49歲(包含40和49)之間。我們將屬性選項限制為income range,credit card insurance,sex和age。這里是通過表的數據應用apriori算法所產生的3條關聯規則:
(1)IF sex=female age=over40 credit card insurance=NO THEN life=insurance promotion=YES
(2)IF sex=male age=over40 credit card insurance=NO THEN life=insurance promotion=NO
(3)IF sex=female age=over40 THEN credit card insurance=NO life=insurance promotion=YES
3條規則的準確度都達到100%并且正確的覆蓋了所有數據實例的20%。對于規則3,20%的覆蓋率告訴我們,每5個人是年齡超過40的女性,她沒有信用卡保險,且她們都是通過壽險促銷活動獲得壽險的。注意,規則3中的信用卡保險和壽險促銷都是輸出屬性。
關聯規則存在的問題是,對于潛在有趣的規則,我們可能發現某個規則的值很小。
在關聯規則系統中,規則本身是“如果條件怎么樣,怎么樣,怎么樣,那么結果或情況就怎么樣”的簡單方式。可以表示為“A=>B”關聯規則,它包括兩2部分:左部A稱為前件,又部B稱為后件。前件可以包括一個或多個條件,在某個給定的正確率中,要使后件為真,前件中的所有條件必須同時為真。后件一般只包含一種情況,而不是多種情況。
例如,購買計算機有購買財務軟件趨向的關聯規則,以及年齡在30至40歲之間并且年收入早42000元至50000元之間的客戶購買高清晰度彩電電視機趨向的關聯規則可以分別表示為:
Buys(x,“computer”)=>buys(x,“financial_management_software”) (11.1)
Age(“30…60”)∧income(“42000…50000”)=>buys(x,“high_resolution_TV”)(11.2)
其中x為表示客戶的變量。
關聯規則在實際應用中根據值類型,數據維,層次的不同,可以分成各種類型的規則。
根據規則中所處理的值類型可以分部成布爾關聯規則和量化關聯規則兩種。例如,上述的關聯(11.1)就是布爾關聯規則,而關聯規則(11.2)是量化規則,其量化屬性值就離散值。
如果規則中的項或屬性只涉及到一個維,那就是單維規則。例如關聯規則(11.1)只涉及buys維。而關聯規則(11.2)涉及到三個維age,income和buys數據維,因此是多維關聯。
如果規則集涉及不同的抽象層次,那么關聯規則集就是多層次關聯規則;反之就是單層關聯規則。例如,規則(11.1)和(11.2)都是單層規則。而關聯規則集
Age(“30…40”)=>buys(x,“IBM computer”) (11.3)
Age(“30…40”)=>buys(x,“computer”) (11.4)
涉及的購買商品有較低抽象層次“IBM computer”和較高抽象層次的“computer”。因此,規則集(11.3)和(11.4)是多層關聯規則。
關聯規則在實際應用中用SQL語言就可以很好的處理,例如對于關聯規則(11.2)可以用以下的SQL查詢語句完成。
Select Cust.name, p.item_name
From Purchases, P
Group by Cust.ID
Having (Cust.age>=30.and.Cust.age<=40).and.(Cust.income>=42000 and Cust.income<=50000) and (p.item_name=’high_resolution_TV’)
關聯規則的應用必須有應用目標,在實際應用中可以以前件為目標,以后件為目標,以準確性為目標,以覆蓋率為目標或者以“興趣度”為目標。
以前件為目標的關聯規則是將前件等于某值的所有規則收集起來顯示給用戶。例如:一個五金店可能需要前件為釘子,螺栓或螺釘的所有規則,以了解對這些低利潤的商品打折是否能夠促進其他高利潤商品的銷售。
以后件為目標的關聯規則是查找后件等于某值的所有規則,用來了解什么因素與后件有關或對后件有什么影響。例如,得到后件為“咖啡”的所有標準對于咖啡的銷售就十分重要,可以從中了解哪些商品的銷售會導致咖啡銷售的增加。咖啡店就可以將這些商品放到咖啡附近,以同時提高兩者的銷售額。或者,咖啡廠商可以根據這個準則決定下次把他們的優惠卷放在哪些雜志上。
以正確率為目標的關聯規則,主要是以正確率表示前件為真時,后件為真的可能性。正確率高表示規則比較可靠。正確率有時也稱為置信度,對于“A=>B”關聯規則,其置信度或正確率可以定義為:
置信度(A=>B)=包含A和B的元組數/包含A的元組樹(11.5)
有時,對用戶來說最重要的是規則的正確率。正確率達到80%或90%以上的規則,表明發現的關系是很強的。即使它們對數據庫的覆蓋率較低,出現的次數有限,只要抓住這些規則。成功的可能性就比較大。
以覆蓋率為目標的關聯規則表示數據庫中適用于規則的記錄數量。其覆蓋率可以定義為:
覆蓋率(A=>B)=包含A和B的元組數/元組總數(11.6)
覆蓋率高表示規則經常被使用,由取樣技術或數據庫性質得到某種現象的可能性也比較大。有時,用戶想知道哪些是最普通的規則或哪些規則最容易應用。將規則按覆蓋率排序,用戶就能很快知道哪些情況是數據庫中經常出現的。
以“興趣度”為目標的關聯規則是評價人們使用關聯規則以后,對所產生規則的感興趣程度,它于正確率和覆蓋率有關。如果覆蓋率一定時,興趣度隨著正確率的增大而增大。在正確率一定時,興趣度隨著覆蓋率的增大而增大。可以采用各種方式將規則按某種興趣排序,就能在覆蓋率和正確率的評價目標選擇中做出平衡。