1. 程式人生 > >資料探勘演算法之-關聯規則挖掘(Association Rule)

資料探勘演算法之-關聯規則挖掘(Association Rule)

在資料探勘的知識模式中,關聯規則模式是比較重要的一種。關聯規則的概念由Agrawal、Imielinski、Swami 提出,是資料中一種簡單但很實用的規則。關聯規則模式屬於描述型模式,發現關聯規則的演算法屬於無監督學習的方法。

關聯規則挖掘

一、關聯規則的定義和屬性
 
考察一些涉及許多物品的事務:事務1 中出現了物品甲,事務2 中出現了物品乙,事務3 中則同時出現了物品甲和乙。那麼,物品甲和乙在事務中的出現相互之間是否有規律可循呢?在資料庫的知識發現中,關聯規則就是描述這種在一個事務中物品之間同時出現的規律的知識模式。更確切的說,關聯規則通過量化的數字描述物品甲的出現對物品乙的出現有多大的影響。
 
現實中,這樣的例子很多。例如超級市場利用前端收款機收集儲存了大量的售貨資料,這些資料是一條條的購買事務記錄,每條記錄儲存了事務處理時間,顧客購買的物品、物品的數量及金額等。這些資料中常常隱含形式如下的關聯規則:在購買鐵錘的顧客當中,有70 %的人同時購買了鐵釘。這些關聯規則很有價值,商場管理人員可以根據這些關聯規則更好地規劃商場,如把鐵錘和鐵釘這樣的商品擺放在一起,能夠促進銷售。
 
有些資料不像售貨資料那樣很容易就能看出一個事務是許多物品的集合,但稍微轉換一下思考角度,仍然可以像售貨資料一樣處理。比如人壽保險,一份保單就是一個事務。保險公司在接受保險前,往往需要記錄投保人詳盡的資訊,有時還要到醫院做身體檢查。保單上記錄有投保人的年齡、性別、健康狀況、工作單位、工作地址、工資水平等。這些投保人的個人資訊就可以看作事務中的物品。通過分析這些資料,可以得到類似以下這樣的關聯規則:年齡在40 歲以上,工作在A 區的投保人當中,有45 %的人曾經向保險公司索賠過。在這條規則中,“年齡在40 歲以上”是物品甲,“工作在A 區”是物品乙,“向保險公司索賠過”則是物品丙。可以看出來,A 區可能汙染比較嚴重,環境比較差,導致工作在該區的人健康狀況不好,索賠率也相對比較高。
 
設R= { I1,I2 ……Im} 是一組物品集,W 是一組事務集。W 中的每個事務T 是一組物品,T R。假設有一個物品集A,一個事務T,如果A T,則稱事務T 支援物品集A。關聯規則是如下形式的一種蘊含:A→B,其中A、B 是兩組物品,A I,B I,且A ∩B=。一般用四個引數來描述一個關聯規則的屬性:
 
1 .可信度(Confidence)


 
設W 中支援物品集A 的事務中,有c %的事務同時也支援物品集B,c %稱為關聯規則A→B 的可信度。簡單地說,可信度就是指在出現了物品集A 的事務T 中,物品集B 也同時出現的概率有多大。如上面所舉的鐵錘和鐵釘的例子,該關聯規則的可信度就回答了這樣一個問題:如果一個顧客購買了鐵錘,那麼他也購買鐵釘的可能性有多大呢?在上述例子中,購買鐵錘的顧客中有70 %的人購買了鐵釘, 所以可信度是70 %。
 
2 .支援度(Support)
 
設W 中有s %的事務同時支援物品集A 和B,s %稱為關聯規則A→B 的支援度。支援度描述了A 和B 這兩個物品集的並集C 在所有的事務中出現的概率有多大。如果某天共有1000 個顧客到商場購買物品,其中有100 個顧客同時購買了鐵錘和鐵釘,那麼上述的關聯規則的支援度就是10 %。
 
3 .期望可信度(Expected confidence)

 
設W 中有e %的事務支援物品集B,e %稱為關聯規則A→B 的期望可信度度。期望可信度描述了在沒有任何條件影響時,物品集B 在所有事務中出現的概率有多大。如果某天共有1000 個顧客到商場購買物品,其中有200 個顧客購買了鐵釘,則上述的關聯規則的期望可信度就是20 %。
 
4 .作用度(Lift)
 
作用度是可信度與期望可信度的比值。作用度描述物品集A 的出現對物品集B 的出現有多大的影響。因為物品集B 在所有事務中出現的概率是期望可信度;而物品集B 在有物品集A 出現的事務中出現的概率是可信度,通過可信度對期望可信度的比值反映了在加入“物品集A 出現”的這個條件後,物品集B 的出現概率發生了多大的變化。在上例中作用度就是70 %/20 %=3.5。
 
可信度是對關聯規則的準確度的衡量,支援度是對關聯規則重要性的衡量。支援度說明了這條規則在所有事務中有多大的代表性,顯然支援度越大,關聯規則越重要。有些關聯規則可信度雖然很高,但支援度卻很低,說明該關聯規則實用的機會很小,因此也不重要。
 
期望可信度描述了在沒有物品集A 的作用下,物品集B 本身的支援度;作用度描述了物品集A 對物品集B 的影響力的大小。作用度越大,說明物品集B 受物品集A 的影響越大。一般情況,有用的關聯規則的作用度都應該大於1,只有關聯規則的可信度大於期望可信度,才說明A 的出現對B 的出現有促進作用,也說明了它們之間某種程度的相關性,如果作用度不大於1,則此關聯規則也就沒有意義了。
 
二、關聯規則的挖掘

 
在關聯規則的四個屬性中,支援度和可信度能夠比較直接形容關聯規則的性質。從關聯規則定義可以看出,任意給出事務中的兩個物品集,它們之間都存在關聯規則,只不過屬性值有所不同。如果不考慮關聯規則的支援度和可信度,那麼在事務資料庫中可以發現無窮多的關聯規則。事實上,人們一般只對滿足一定的支援度和可信度的關聯規則感興趣。因此,為了發現有意義的關聯規則,需要給定兩個閾值:最小支援度和最小可信度,前者規定了關聯規則必須滿足的最小支援度;後者規定了關聯規則必須滿足的最小可信度。一般稱滿足一定要求的(如較大的支援度和可信度)的規則為強規則(Strong rules)。
 
在關聯規則的挖掘中要注意以下幾點:
 
1、充分理解資料。
 
2、目標明確。
 
3、資料準備工作要做好。能否做好資料準備又取決於前兩點。資料準備將直接影響到問題的複雜度及目標的實現。
 
4、選取恰當的最小支援度和最小可信度。這依賴於使用者對目標的估計,如果取值過小,那麼會發現大量無用的規則,不但影響執行效率、浪費系統資源,而且可能把目標埋沒;如果取值過大,則又有可能找不到規則,與知識失之交臂。
 
5、很好地理解關聯規則。資料探勘工具能夠發現滿足條件的關聯規則,但它不能判定關聯規則的實際意義。對關聯規則的理解需要熟悉業務背景,豐富的業務經驗對資料有足夠的理解。在發現的關聯規則中,可能有兩個主觀上認為沒有多大關係的物品,它們的關聯規則支援度和可信度卻很高,需要根據業務知識、經驗,從各個角度判斷這是一個偶然現象或有其內在的合理性;反之,可能有主觀上認為關係密切的物品,結果卻顯示它們之間相關性不強。只有很好的理解關聯規則,才能去其糟粕,取其精華,充分發揮關聯規則的價值。
 
發現關聯規則要經過以下三個步驟:
 
1、連線資料,作資料準備;
 
2、給定最小支援度和最小可信度,利用資料探勘工具提供的演算法發現關聯規則;
 
3、視覺化顯示、理解、評估關聯規則。
 
三 、關聯規則挖掘的過程
 
關聯規則挖掘過程主要包含兩個階段:
 
第一階段必須先從資料集合中找出所有的高頻專案組(Frequent Itemsets),
 
第二階段再由這些高頻專案組中產生關聯規則(Association Rules)。
 
關聯規則挖掘的第一階段必須從原始資料集合中,找出所有高頻專案組(Large Itemsets)。高頻的意思是指某一專案組出現的頻率相對於所有記錄而言,必須達到某一水平。一專案組出現的頻率稱為支援度(Support),以一個包含A與B兩個專案的2-itemset為例,我們可以經由公式(1)求得包含{A,B}專案組的支援度,若支援度大於等於所設定的最小支援度(Minimum Support)門檻值時,則{A,B}稱為高頻專案組。一個滿足最小支援度的k-itemset,則稱為高頻k-專案組(Frequent k-itemset),一般表示為Large k或Frequent k。演算法並從Large k的專案組中再產生Large k+1,直到無法再找到更長的高頻專案組為止。
 
關聯規則挖掘的第二階段是要產生關聯規則(Association Rules)。從高頻專案組產生關聯規則,是利用前一步驟的高頻k-專案組來產生規則,在最小信賴度(Minimum Confidence)的條件門檻下,若一規則所求得的信賴度滿足最小信賴度,稱此規則為關聯規則。
 
從上面的介紹還可以看出,關聯規則挖掘通常比較適用與記錄中的指標取離散值的情況。如果原始資料庫中的指標值是取連續的資料,則在關聯規則挖掘之前應該進行適當的資料離散化(實際上就是將某個區間的值對應於某個值),資料的離散化是資料探勘前的重要環節,離散化的過程是否合理將直接影響關聯規則的挖掘結果。
 
四、 關聯規則的分類
 
按照不同情況,關聯規則可以進行分類如下:
 
1.基於規則中處理的變數的類別,關聯規則可以分為布林型和數值型。
 
布林型關聯規則處理的值都是離散的、種類化的,它顯示了這些變數之間的關係;而數值型關聯規則可以和多維關聯或多層關聯規則結合起來,對數值型欄位進行處理,將其進行動態的分割,或者直接對原始的資料進行處理,當然數值型關聯規則中也可以包含種類變數。例如:性別=“女”=>職業=“祕書” ,是布林型關聯規則;性別=“女”=>avg(收入)=2300,涉及的收入是數值型別,所以是一個數值型關聯規則。
 
2.基於規則中資料的抽象層次,可以分為單層關聯規則和多層關聯規則。
 
在單層的關聯規則中,所有的變數都沒有考慮到現實的資料是具有多個不同的層次的;而在多層的關聯規則中,對資料的多層性已經進行了充分的考慮。例如:IBM桌上型電腦=>Sony印表機,是一個細節資料上的單層關聯規則;桌上型電腦=>Sony印表機,是一個較高層次和細節層次之間的多層關聯規則。
 
3.基於規則中涉及到的資料的維數,關聯規則可以分為單維的和多維的。
 
在單維的關聯規則中,我們只涉及到資料的一個維,如使用者購買的物品;而在多維的關聯規則中,要處理的資料將會涉及多個維。換成另一句話,單維關聯規則是處理單個屬性中的一些關係;多維關聯規則是處理各個屬性之間的某些關係。例如:啤酒=>尿布,這條規則只涉及到使用者的購買的物品;性別=“女”=>職業=“祕書”,這條規則就涉及到兩個欄位的資訊,是兩個維上的一條關聯規則。
 
5. 關聯規則挖掘的相關演算法
 
1.Apriori演算法:使用候選項集找頻繁項集
 
Apriori演算法是一種最有影響的挖掘布林關聯規則頻繁項集的演算法。其核心是基於兩階段頻集思想的遞推演算法。該關聯規則在分類上屬於單維、單層、布林關聯規則。在這裡,所有支援度大於最小支援度的項集稱為頻繁項集,簡稱頻集。
 
該演算法的基本思想是:首先找出所有的頻集,這些項集出現的頻繁性至少和預定義的最小支援度一樣。然後由頻集產生強關聯規則,這些規則必須滿足最小支援度和最小可信度。然後使用第1步找到的頻集產生期望的規則,產生只包含集合的項的所有規則,其中每一條規則的右部只有一項,這裡採用的是中規則的定義。一旦這些規則被生成,那麼只有那些大於使用者給定的最小可信度的規則才被留下來。為了生成所有頻集,使用了遞推的方法。
 
可能產生大量的候選集,以及可能需要重複掃描資料庫,是Apriori演算法的兩大缺點。
 
2.基於劃分的演算法
 
Savasere等設計了一個基於劃分的演算法。這個演算法先把資料庫從邏輯上分成幾個互不相交的塊,每次單獨考慮一個分塊並對它生成所有的頻集,然後把產生的頻集合並,用來生成所有可能的頻集,最後計算這些項集的支援度。這裡分塊的大小選擇要使得每個分塊可以被放入主存,每個階段只需被掃描一次。而演算法的正確性是由每一個可能的頻集至少在某一個分塊中是頻集保證的。該演算法是可以高度並行的,可以把每一分塊分別分配給某一個處理器生成頻集。產生頻集的每一個迴圈結束後,處理器之間進行通訊來產生全域性的候選k-項集。通常這裡的通訊過程是演算法執行時間的主要瓶頸;而另一方面,每個獨立的處理器生成頻集的時間也是一個瓶頸。
 
3.FP-樹頻集演算法
 
針對Apriori演算法的固有缺陷,J. Han等提出了不產生候選挖掘頻繁項集的方法:FP-樹頻集演算法。採用分而治之的策略,在經過第一遍掃描之後,把資料庫中的頻集壓縮排一棵頻繁模式樹(FP-tree),同時依然保留其中的關聯資訊,隨後再將FP-tree分化成一些條件庫,每個庫和一個長度為1的頻集相關,然後再對這些條件庫分別進行挖掘。當原始資料量很大的時候,也可以結合劃分的方法,使得一個FP-tree可以放入主存中。實驗表明,FP-growth對不同長度的規則都有很好的適應性,同時在效率上較之Apriori演算法有巨大的提高。
 
五、關聯規則發掘技術在國內外的應用
 
就目前而言,關聯規則挖掘技術已經被廣泛應用在西方金融行業企業中,它可以成功預測銀行客戶需求。一旦獲得了這些資訊,銀行就可以改善自身營銷。現在銀行天天都在開發新的溝通客戶的方法。各銀行在自己的ATM機上就捆綁了顧客可能感興趣的本行產品資訊,供使用本行ATM機的使用者瞭解。如果資料庫中顯示,某個高信用限額的客戶更換了地址,這個客戶很有可能新近購買了一棟更大的住宅,因此會有可能需要更高信用限額,更高階的新信用卡,或者需要一個住房改善貸款,這些產品都可以通過信用卡賬單郵寄給客戶。當客戶打電話諮詢的時候,資料庫可以有力地幫助電話銷售代表。銷售代表的電腦螢幕上可以顯示出客戶的特點,同時也可以顯示出顧客會對什麼產品感興趣。
 
同時,一些知名的電子商務站點也從強大的關聯規則挖掘中的受益。這些電子購物網站使用關聯規則中規則進行挖掘,然後設定使用者有意要一起購買的捆綁包。也有一些購物網站使用它們設定相應的交叉銷售,也就是購買某種商品的顧客會看到相關的另外一種商品的廣告。
 
但是目前在我國,“資料海量,資訊缺乏”是商業銀行在資料大集中之後普遍所面對的尷尬。目前金融業實施的大多數資料庫只能實現資料的錄入、查詢、統計等較低層次的功能,卻無法發現數據中存在的各種有用的資訊,譬如對這些資料進行分析,發現其資料模式及特徵,然後可能發現某個客戶、消費群體或組織的金融和商業興趣,並可觀察金融市場的變化趨勢。可以說,關聯規則挖掘的技術在我國的研究與應用並不是很廣泛深入。
 
近年來關聯規則發掘技術的一些研究
 
由於許多應用問題往往比超市購買問題更復雜,大量研究從不同的角度對關聯規則做了擴充套件,將更多的因素整合到關聯規則挖掘方法之中,以此豐富關聯規則的應用領域,拓寬支援管理決策的範圍。如考慮屬性之間的類別層次關係,時態關係,多表挖掘等。近年來圍繞關聯規則的研究主要集中於兩個方面,即擴充套件經典關聯規則能夠解決問題的範圍,改善經典關聯規則挖掘演算法效率和規則興趣性。