数据挖掘算法之-关联规则挖掘(Association Rule)
在數(shù)據(jù)挖掘的知識模式中,關(guān)聯(lián)規(guī)則模式是比較重要的一種。關(guān)聯(lián)規(guī)則的概念由Agrawal、Imielinski、Swami 提出,是數(shù)據(jù)中一種簡單但很實用的規(guī)則。關(guān)聯(lián)規(guī)則模式屬于描述型模式,發(fā)現(xiàn)關(guān)聯(lián)規(guī)則的算法屬于無監(jiān)督學(xué)習(xí)的方法。
一、關(guān)聯(lián)規(guī)則的定義和屬性
?
考察一些涉及許多物品的事務(wù):事務(wù)1 中出現(xiàn)了物品甲,事務(wù)2 中出現(xiàn)了物品乙,事務(wù)3 中則同時出現(xiàn)了物品甲和乙。那么,物品甲和乙在事務(wù)中的出現(xiàn)相互之間是否有規(guī)律可循呢?在數(shù)據(jù)庫的知識發(fā)現(xiàn)中,關(guān)聯(lián)規(guī)則就是描述這種在一個事務(wù)中物品之間同時出現(xiàn)的規(guī)律的知識模式。更確切的說,關(guān)聯(lián)規(guī)則通過量化的數(shù)字描述物品甲的出現(xiàn)對物品乙的出現(xiàn)有多大的影響。
?
現(xiàn)實中,這樣的例子很多。例如超級市場利用前端收款機收集存儲了大量的售貨數(shù)據(jù),這些數(shù)據(jù)是一條條的購買事務(wù)記錄,每條記錄存儲了事務(wù)處理時間,顧客購買的物品、物品的數(shù)量及金額等。這些數(shù)據(jù)中常常隱含形式如下的關(guān)聯(lián)規(guī)則:在購買鐵錘的顧客當(dāng)中,有70 %的人同時購買了鐵釘。這些關(guān)聯(lián)規(guī)則很有價值,商場管理人員可以根據(jù)這些關(guān)聯(lián)規(guī)則更好地規(guī)劃商場,如把鐵錘和鐵釘這樣的商品擺放在一起,能夠促進銷售。
?
有些數(shù)據(jù)不像售貨數(shù)據(jù)那樣很容易就能看出一個事務(wù)是許多物品的集合,但稍微轉(zhuǎn)換一下思考角度,仍然可以像售貨數(shù)據(jù)一樣處理。比如人壽保險,一份保單就是一個事務(wù)。保險公司在接受保險前,往往需要記錄投保人詳盡的信息,有時還要到醫(yī)院做身體檢查。保單上記錄有投保人的年齡、性別、健康狀況、工作單位、工作地址、工資水平等。這些投保人的個人信息就可以看作事務(wù)中的物品。通過分析這些數(shù)據(jù),可以得到類似以下這樣的關(guān)聯(lián)規(guī)則:年齡在40 歲以上,工作在A 區(qū)的投保人當(dāng)中,有45 %的人曾經(jīng)向保險公司索賠過。在這條規(guī)則中,“年齡在40 歲以上”是物品甲,“工作在A 區(qū)”是物品乙,“向保險公司索賠過”則是物品丙。可以看出來,A 區(qū)可能污染比較嚴(yán)重,環(huán)境比較差,導(dǎo)致工作在該區(qū)的人健康狀況不好,索賠率也相對比較高。
?
設(shè)R= { I1,I2 ……Im} 是一組物品集,W 是一組事務(wù)集。W 中的每個事務(wù)T 是一組物品,T R。假設(shè)有一個物品集A,一個事務(wù)T,如果A T,則稱事務(wù)T 支持物品集A。關(guān)聯(lián)規(guī)則是如下形式的一種蘊含:A→B,其中A、B 是兩組物品,A I,B I,且A ∩B=。一般用四個參數(shù)來描述一個關(guān)聯(lián)規(guī)則的屬性:
?
1 .可信度(Confidence)
?
設(shè)W 中支持物品集A 的事務(wù)中,有c %的事務(wù)同時也支持物品集B,c %稱為關(guān)聯(lián)規(guī)則A→B 的可信度。簡單地說,可信度就是指在出現(xiàn)了物品集A 的事務(wù)T 中,物品集B 也同時出現(xiàn)的概率有多大。如上面所舉的鐵錘和鐵釘?shù)睦?#xff0c;該關(guān)聯(lián)規(guī)則的可信度就回答了這樣一個問題:如果一個顧客購買了鐵錘,那么他也購買鐵釘?shù)目赡苄杂卸啻竽?#xff1f;在上述例子中,購買鐵錘的顧客中有70 %的人購買了鐵釘, 所以可信度是70 %。
?
2 .支持度(Support)
?
設(shè)W 中有s %的事務(wù)同時支持物品集A 和B,s %稱為關(guān)聯(lián)規(guī)則A→B 的支持度。支持度描述了A 和B 這兩個物品集的并集C 在所有的事務(wù)中出現(xiàn)的概率有多大。如果某天共有1000 個顧客到商場購買物品,其中有100 個顧客同時購買了鐵錘和鐵釘,那么上述的關(guān)聯(lián)規(guī)則的支持度就是10 %。
?
3 .期望可信度(Expected confidence)
?
設(shè)W 中有e %的事務(wù)支持物品集B,e %稱為關(guān)聯(lián)規(guī)則A→B 的期望可信度度。期望可信度描述了在沒有任何條件影響時,物品集B 在所有事務(wù)中出現(xiàn)的概率有多大。如果某天共有1000 個顧客到商場購買物品,其中有200 個顧客購買了鐵釘,則上述的關(guān)聯(lián)規(guī)則的期望可信度就是20 %。
?
4 .作用度(Lift)
?
作用度是可信度與期望可信度的比值。作用度描述物品集A 的出現(xiàn)對物品集B 的出現(xiàn)有多大的影響。因為物品集B 在所有事務(wù)中出現(xiàn)的概率是期望可信度;而物品集B 在有物品集A 出現(xiàn)的事務(wù)中出現(xiàn)的概率是可信度,通過可信度對期望可信度的比值反映了在加入“物品集A 出現(xiàn)”的這個條件后,物品集B 的出現(xiàn)概率發(fā)生了多大的變化。在上例中作用度就是70 %/20 %=3.5。
?
可信度是對關(guān)聯(lián)規(guī)則的準(zhǔn)確度的衡量,支持度是對關(guān)聯(lián)規(guī)則重要性的衡量。支持度說明了這條規(guī)則在所有事務(wù)中有多大的代表性,顯然支持度越大,關(guān)聯(lián)規(guī)則越重要。有些關(guān)聯(lián)規(guī)則可信度雖然很高,但支持度卻很低,說明該關(guān)聯(lián)規(guī)則實用的機會很小,因此也不重要。
?
期望可信度描述了在沒有物品集A 的作用下,物品集B 本身的支持度;作用度描述了物品集A 對物品集B 的影響力的大小。作用度越大,說明物品集B 受物品集A 的影響越大。一般情況,有用的關(guān)聯(lián)規(guī)則的作用度都應(yīng)該大于1,只有關(guān)聯(lián)規(guī)則的可信度大于期望可信度,才說明A 的出現(xiàn)對B 的出現(xiàn)有促進作用,也說明了它們之間某種程度的相關(guān)性,如果作用度不大于1,則此關(guān)聯(lián)規(guī)則也就沒有意義了。
?
二、關(guān)聯(lián)規(guī)則的挖掘
?
在關(guān)聯(lián)規(guī)則的四個屬性中,支持度和可信度能夠比較直接形容關(guān)聯(lián)規(guī)則的性質(zhì)。從關(guān)聯(lián)規(guī)則定義可以看出,任意給出事務(wù)中的兩個物品集,它們之間都存在關(guān)聯(lián)規(guī)則,只不過屬性值有所不同。如果不考慮關(guān)聯(lián)規(guī)則的支持度和可信度,那么在事務(wù)數(shù)據(jù)庫中可以發(fā)現(xiàn)無窮多的關(guān)聯(lián)規(guī)則。事實上,人們一般只對滿足一定的支持度和可信度的關(guān)聯(lián)規(guī)則感興趣。因此,為了發(fā)現(xiàn)有意義的關(guān)聯(lián)規(guī)則,需要給定兩個閾值:最小支持度和最小可信度,前者規(guī)定了關(guān)聯(lián)規(guī)則必須滿足的最小支持度;后者規(guī)定了關(guān)聯(lián)規(guī)則必須滿足的最小可信度。一般稱滿足一定要求的(如較大的支持度和可信度)的規(guī)則為強規(guī)則(Strong rules)。
?
在關(guān)聯(lián)規(guī)則的挖掘中要注意以下幾點:
?
1、充分理解數(shù)據(jù)。
?
2、目標(biāo)明確。
?
3、數(shù)據(jù)準(zhǔn)備工作要做好。能否做好數(shù)據(jù)準(zhǔn)備又取決于前兩點。數(shù)據(jù)準(zhǔn)備將直接影響到問題的復(fù)雜度及目標(biāo)的實現(xiàn)。
?
4、選取恰當(dāng)?shù)淖钚≈С侄群妥钚】尚哦取_@依賴于用戶對目標(biāo)的估計,如果取值過小,那么會發(fā)現(xiàn)大量無用的規(guī)則,不但影響執(zhí)行效率、浪費系統(tǒng)資源,而且可能把目標(biāo)埋沒;如果取值過大,則又有可能找不到規(guī)則,與知識失之交臂。
?
5、很好地理解關(guān)聯(lián)規(guī)則。數(shù)據(jù)挖掘工具能夠發(fā)現(xiàn)滿足條件的關(guān)聯(lián)規(guī)則,但它不能判定關(guān)聯(lián)規(guī)則的實際意義。對關(guān)聯(lián)規(guī)則的理解需要熟悉業(yè)務(wù)背景,豐富的業(yè)務(wù)經(jīng)驗對數(shù)據(jù)有足夠的理解。在發(fā)現(xiàn)的關(guān)聯(lián)規(guī)則中,可能有兩個主觀上認為沒有多大關(guān)系的物品,它們的關(guān)聯(lián)規(guī)則支持度和可信度卻很高,需要根據(jù)業(yè)務(wù)知識、經(jīng)驗,從各個角度判斷這是一個偶然現(xiàn)象或有其內(nèi)在的合理性;反之,可能有主觀上認為關(guān)系密切的物品,結(jié)果卻顯示它們之間相關(guān)性不強。只有很好的理解關(guān)聯(lián)規(guī)則,才能去其糟粕,取其精華,充分發(fā)揮關(guān)聯(lián)規(guī)則的價值。
?
發(fā)現(xiàn)關(guān)聯(lián)規(guī)則要經(jīng)過以下三個步驟:
?
1、連接數(shù)據(jù),作數(shù)據(jù)準(zhǔn)備;
?
2、給定最小支持度和最小可信度,利用數(shù)據(jù)挖掘工具提供的算法發(fā)現(xiàn)關(guān)聯(lián)規(guī)則;
?
3、可視化顯示、理解、評估關(guān)聯(lián)規(guī)則。
?
三 、關(guān)聯(lián)規(guī)則挖掘的過程
?
關(guān)聯(lián)規(guī)則挖掘過程主要包含兩個階段:
?
第一階段必須先從資料集合中找出所有的高頻項目組(Frequent Itemsets),
?
第二階段再由這些高頻項目組中產(chǎn)生關(guān)聯(lián)規(guī)則(Association Rules)。
?
關(guān)聯(lián)規(guī)則挖掘的第一階段必須從原始資料集合中,找出所有高頻項目組(Large Itemsets)。高頻的意思是指某一項目組出現(xiàn)的頻率相對于所有記錄而言,必須達到某一水平。一項目組出現(xiàn)的頻率稱為支持度(Support),以一個包含A與B兩個項目的2-itemset為例,我們可以經(jīng)由公式(1)求得包含{A,B}項目組的支持度,若支持度大于等于所設(shè)定的最小支持度(Minimum Support)門檻值時,則{A,B}稱為高頻項目組。一個滿足最小支持度的k-itemset,則稱為高頻k-項目組(Frequent k-itemset),一般表示為Large k或Frequent k。算法并從Large k的項目組中再產(chǎn)生Large k+1,直到無法再找到更長的高頻項目組為止。
?
關(guān)聯(lián)規(guī)則挖掘的第二階段是要產(chǎn)生關(guān)聯(lián)規(guī)則(Association Rules)。從高頻項目組產(chǎn)生關(guān)聯(lián)規(guī)則,是利用前一步驟的高頻k-項目組來產(chǎn)生規(guī)則,在最小信賴度(Minimum Confidence)的條件門檻下,若一規(guī)則所求得的信賴度滿足最小信賴度,稱此規(guī)則為關(guān)聯(lián)規(guī)則。
?
從上面的介紹還可以看出,關(guān)聯(lián)規(guī)則挖掘通常比較適用與記錄中的指標(biāo)取離散值的情況。如果原始數(shù)據(jù)庫中的指標(biāo)值是取連續(xù)的數(shù)據(jù),則在關(guān)聯(lián)規(guī)則挖掘之前應(yīng)該進行適當(dāng)?shù)臄?shù)據(jù)離散化(實際上就是將某個區(qū)間的值對應(yīng)于某個值),數(shù)據(jù)的離散化是數(shù)據(jù)挖掘前的重要環(huán)節(jié),離散化的過程是否合理將直接影響關(guān)聯(lián)規(guī)則的挖掘結(jié)果。
?
四、 關(guān)聯(lián)規(guī)則的分類
?
按照不同情況,關(guān)聯(lián)規(guī)則可以進行分類如下:
?
1.基于規(guī)則中處理的變量的類別,關(guān)聯(lián)規(guī)則可以分為布爾型和數(shù)值型。
?
布爾型關(guān)聯(lián)規(guī)則處理的值都是離散的、種類化的,它顯示了這些變量之間的關(guān)系;而數(shù)值型關(guān)聯(lián)規(guī)則可以和多維關(guān)聯(lián)或多層關(guān)聯(lián)規(guī)則結(jié)合起來,對數(shù)值型字段進行處理,將其進行動態(tài)的分割,或者直接對原始的數(shù)據(jù)進行處理,當(dāng)然數(shù)值型關(guān)聯(lián)規(guī)則中也可以包含種類變量。例如:性別=“女”=>職業(yè)=“秘書” ,是布爾型關(guān)聯(lián)規(guī)則;性別=“女”=>avg(收入)=2300,涉及的收入是數(shù)值類型,所以是一個數(shù)值型關(guān)聯(lián)規(guī)則。
?
2.基于規(guī)則中數(shù)據(jù)的抽象層次,可以分為單層關(guān)聯(lián)規(guī)則和多層關(guān)聯(lián)規(guī)則。
?
在單層的關(guān)聯(lián)規(guī)則中,所有的變量都沒有考慮到現(xiàn)實的數(shù)據(jù)是具有多個不同的層次的;而在多層的關(guān)聯(lián)規(guī)則中,對數(shù)據(jù)的多層性已經(jīng)進行了充分的考慮。例如:IBM臺式機=>Sony打印機,是一個細節(jié)數(shù)據(jù)上的單層關(guān)聯(lián)規(guī)則;臺式機=>Sony打印機,是一個較高層次和細節(jié)層次之間的多層關(guān)聯(lián)規(guī)則。
?
3.基于規(guī)則中涉及到的數(shù)據(jù)的維數(shù),關(guān)聯(lián)規(guī)則可以分為單維的和多維的。
?
在單維的關(guān)聯(lián)規(guī)則中,我們只涉及到數(shù)據(jù)的一個維,如用戶購買的物品;而在多維的關(guān)聯(lián)規(guī)則中,要處理的數(shù)據(jù)將會涉及多個維。換成另一句話,單維關(guān)聯(lián)規(guī)則是處理單個屬性中的一些關(guān)系;多維關(guān)聯(lián)規(guī)則是處理各個屬性之間的某些關(guān)系。例如:啤酒=>尿布,這條規(guī)則只涉及到用戶的購買的物品;性別=“女”=>職業(yè)=“秘書”,這條規(guī)則就涉及到兩個字段的信息,是兩個維上的一條關(guān)聯(lián)規(guī)則。
?
5. 關(guān)聯(lián)規(guī)則挖掘的相關(guān)算法
?
1.Apriori算法:使用候選項集找頻繁項集
?
Apriori算法是一種最有影響的挖掘布爾關(guān)聯(lián)規(guī)則頻繁項集的算法。其核心是基于兩階段頻集思想的遞推算法。該關(guān)聯(lián)規(guī)則在分類上屬于單維、單層、布爾關(guān)聯(lián)規(guī)則。在這里,所有支持度大于最小支持度的項集稱為頻繁項集,簡稱頻集。
?
該算法的基本思想是:首先找出所有的頻集,這些項集出現(xiàn)的頻繁性至少和預(yù)定義的最小支持度一樣。然后由頻集產(chǎn)生強關(guān)聯(lián)規(guī)則,這些規(guī)則必須滿足最小支持度和最小可信度。然后使用第1步找到的頻集產(chǎn)生期望的規(guī)則,產(chǎn)生只包含集合的項的所有規(guī)則,其中每一條規(guī)則的右部只有一項,這里采用的是中規(guī)則的定義。一旦這些規(guī)則被生成,那么只有那些大于用戶給定的最小可信度的規(guī)則才被留下來。為了生成所有頻集,使用了遞推的方法。
?
可能產(chǎn)生大量的候選集,以及可能需要重復(fù)掃描數(shù)據(jù)庫,是Apriori算法的兩大缺點。
?
2.基于劃分的算法
?
Savasere等設(shè)計了一個基于劃分的算法。這個算法先把數(shù)據(jù)庫從邏輯上分成幾個互不相交的塊,每次單獨考慮一個分塊并對它生成所有的頻集,然后把產(chǎn)生的頻集合并,用來生成所有可能的頻集,最后計算這些項集的支持度。這里分塊的大小選擇要使得每個分塊可以被放入主存,每個階段只需被掃描一次。而算法的正確性是由每一個可能的頻集至少在某一個分塊中是頻集保證的。該算法是可以高度并行的,可以把每一分塊分別分配給某一個處理器生成頻集。產(chǎn)生頻集的每一個循環(huán)結(jié)束后,處理器之間進行通信來產(chǎn)生全局的候選k-項集。通常這里的通信過程是算法執(zhí)行時間的主要瓶頸;而另一方面,每個獨立的處理器生成頻集的時間也是一個瓶頸。
?
3.FP-樹頻集算法
?
針對Apriori算法的固有缺陷,J. Han等提出了不產(chǎn)生候選挖掘頻繁項集的方法:FP-樹頻集算法。采用分而治之的策略,在經(jīng)過第一遍掃描之后,把數(shù)據(jù)庫中的頻集壓縮進一棵頻繁模式樹(FP-tree),同時依然保留其中的關(guān)聯(lián)信息,隨后再將FP-tree分化成一些條件庫,每個庫和一個長度為1的頻集相關(guān),然后再對這些條件庫分別進行挖掘。當(dāng)原始數(shù)據(jù)量很大的時候,也可以結(jié)合劃分的方法,使得一個FP-tree可以放入主存中。實驗表明,FP-growth對不同長度的規(guī)則都有很好的適應(yīng)性,同時在效率上較之Apriori算法有巨大的提高。
?
五、關(guān)聯(lián)規(guī)則發(fā)掘技術(shù)在國內(nèi)外的應(yīng)用
?
就目前而言,關(guān)聯(lián)規(guī)則挖掘技術(shù)已經(jīng)被廣泛應(yīng)用在西方金融行業(yè)企業(yè)中,它可以成功預(yù)測銀行客戶需求。一旦獲得了這些信息,銀行就可以改善自身營銷。現(xiàn)在銀行天天都在開發(fā)新的溝通客戶的方法。各銀行在自己的ATM機上就捆綁了顧客可能感興趣的本行產(chǎn)品信息,供使用本行ATM機的用戶了解。如果數(shù)據(jù)庫中顯示,某個高信用限額的客戶更換了地址,這個客戶很有可能新近購買了一棟更大的住宅,因此會有可能需要更高信用限額,更高端的新信用卡,或者需要一個住房改善貸款,這些產(chǎn)品都可以通過信用卡賬單郵寄給客戶。當(dāng)客戶打電話咨詢的時候,數(shù)據(jù)庫可以有力地幫助電話銷售代表。銷售代表的電腦屏幕上可以顯示出客戶的特點,同時也可以顯示出顧客會對什么產(chǎn)品感興趣。
?
同時,一些知名的電子商務(wù)站點也從強大的關(guān)聯(lián)規(guī)則挖掘中的受益。這些電子購物網(wǎng)站使用關(guān)聯(lián)規(guī)則中規(guī)則進行挖掘,然后設(shè)置用戶有意要一起購買的捆綁包。也有一些購物網(wǎng)站使用它們設(shè)置相應(yīng)的交叉銷售,也就是購買某種商品的顧客會看到相關(guān)的另外一種商品的廣告。
?
但是目前在我國,“數(shù)據(jù)海量,信息缺乏”是商業(yè)銀行在數(shù)據(jù)大集中之后普遍所面對的尷尬。目前金融業(yè)實施的大多數(shù)數(shù)據(jù)庫只能實現(xiàn)數(shù)據(jù)的錄入、查詢、統(tǒng)計等較低層次的功能,卻無法發(fā)現(xiàn)數(shù)據(jù)中存在的各種有用的信息,譬如對這些數(shù)據(jù)進行分析,發(fā)現(xiàn)其數(shù)據(jù)模式及特征,然后可能發(fā)現(xiàn)某個客戶、消費群體或組織的金融和商業(yè)興趣,并可觀察金融市場的變化趨勢。可以說,關(guān)聯(lián)規(guī)則挖掘的技術(shù)在我國的研究與應(yīng)用并不是很廣泛深入。
?
近年來關(guān)聯(lián)規(guī)則發(fā)掘技術(shù)的一些研究
?
由于許多應(yīng)用問題往往比超市購買問題更復(fù)雜,大量研究從不同的角度對關(guān)聯(lián)規(guī)則做了擴展,將更多的因素集成到關(guān)聯(lián)規(guī)則挖掘方法之中,以此豐富關(guān)聯(lián)規(guī)則的應(yīng)用領(lǐng)域,拓寬支持管理決策的范圍。如考慮屬性之間的類別層次關(guān)系,時態(tài)關(guān)系,多表挖掘等。近年來圍繞關(guān)聯(lián)規(guī)則的研究主要集中于兩個方面,即擴展經(jīng)典關(guān)聯(lián)規(guī)則能夠解決問題的范圍,改善經(jīng)典關(guān)聯(lián)規(guī)則挖掘算法效率和規(guī)則興趣性。
總結(jié)
以上是生活随笔為你收集整理的数据挖掘算法之-关联规则挖掘(Association Rule)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity3D下NGUI插件使用中文Tr
- 下一篇: 语音合成 java_语音合成 JAVA