數據挖掘算法之-關聯規則挖掘(Association Rule)

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

關聯規則挖掘

1、關聯規則的定義和屬性
 
考察一些涉及許多物品的事務:事務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,則此關聯規則也就沒有意義了。
 
2、關聯規則的挖掘
 
在關聯規則的四個屬性中,支持度和可信度可以比較直接形容關聯規則的性質。從關聯規則定義能夠看出,任意給出事務中的兩個物品集,它們之間都存在關聯規則,只不過屬性值有所不一樣。若是不考慮關聯規則的支持度和可信度,那麼在事務數據庫中能夠發現無窮多的關聯規則。事實上,人們通常只對知足必定的支持度和可信度的關聯規則感興趣。所以,爲了發現有意義的關聯規則,須要給定兩個閾值:最小支持度和最小可信度,前者規定了關聯規則必須知足的最小支持度;後者規定了關聯規則必須知足的最小可信度。通常稱知足必定要求的(如較大的支持度和可信度)的規則爲強規則(Strong rules)。
 
在關聯規則的挖掘中要注意如下幾點:
 
一、充分理解數據。
 
二、目標明確。
 
三、數據準備工做要作好。可否作好數據準備又取決於前兩點。數據準備將直接影響到問題的複雜度及目標的實現。
 
四、選取恰當的最小支持度和最小可信度。這依賴於用戶對目標的估計,若是取值太小,那麼會發現大量無用的規則,不但影響執行效率、浪費系統資源,並且可能把目標埋沒;若是取值過大,則又有可能找不到規則,與知識失之交臂。
 
五、很好地理解關聯規則。數據挖掘工具可以發現知足條件的關聯規則,但它不能斷定關聯規則的實際意義。對關聯規則的理解須要熟悉業務背景,豐富的業務經驗對數據有足夠的理解。在發現的關聯規則中,可能有兩個主觀上認爲沒有多大關係的物品,它們的關聯規則支持度和可信度卻很高,須要根據業務知識、經驗,從各個角度判斷這是一個偶然現象或有其內在的合理性;反之,可能有主觀上認爲關係密切的物品,結果卻顯示它們之間相關性不強。只有很好的理解關聯規則,才能去其糟粕,取其精華,充分發揮關聯規則的價值。
 
發現關聯規則要通過如下三個步驟:
 
一、鏈接數據,做數據準備;
 
二、給定最小支持度和最小可信度,利用數據挖掘工具提供的算法發現關聯規則;
 
三、可視化顯示、理解、評估關聯規則。
 
三 、關聯規則挖掘的過程
 
關聯規則挖掘過程主要包含兩個階段:
 
第一階段必須先從資料集合中找出全部的高頻項目組(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)的條件門檻下,若一規則所求得的信賴度知足最小信賴度,稱此規則爲關聯規則。
 
從上面的介紹還能夠看出,關聯規則挖掘一般比較適用與記錄中的指標取離散值的狀況。若是原始數據庫中的指標值是取連續的數據,則在關聯規則挖掘以前應該進行適當的數據離散化(實際上就是將某個區間的值對應於某個值),數據的離散化是數據挖掘前的重要環節,離散化的過程是否合理將直接影響關聯規則的挖掘結果。
 
4、 關聯規則的分類
 
按照不一樣狀況,關聯規則能夠進行分類以下:
 
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算法有巨大的提升。
 
5、關聯規則發掘技術在國內外的應用
 
就目前而言,關聯規則挖掘技術已經被普遍應用在西方金融行業企業中,它能夠成功預測銀行客戶需求。一旦得到了這些信息,銀行就能夠改善自身營銷。如今銀行每天都在開發新的溝通客戶的方法。各銀行在本身的ATM機上就捆綁了顧客可能感興趣的本行產品信息,供使用本行ATM機的用戶瞭解。若是數據庫中顯示,某個高信用限額的客戶更換了地址,這個客戶頗有可能新近購買了一棟更大的住宅,所以會有可能須要更高信用限額,更高端的新信用卡,或者須要一個住房改善貸款,這些產品均可以經過信用卡帳單郵寄給客戶。當客戶打電話諮詢的時候,數據庫能夠有力地幫助電話銷售表明。銷售表明的電腦屏幕上能夠顯示出客戶的特色,同時也能夠顯示出顧客會對什麼產品感興趣。
 
同時,一些知名的電子商務站點也從強大的關聯規則挖掘中的受益。這些電子購物網站使用關聯規則中規則進行挖掘,而後設置用戶有意要一塊兒購買的捆綁包。也有一些購物網站使用它們設置相應的交叉銷售,也就是購買某種商品的顧客會看到相關的另一種商品的廣告。
 
可是目前在我國,「數據海量,信息缺少」是商業銀行在數據大集中以後廣泛所面對的尷尬。目前金融業實施的大多數數據庫只能實現數據的錄入、查詢、統計等較低層次的功能,卻沒法發現數據中存在的各類有用的信息,譬如對這些數據進行分析,發現其數據模式及特徵,而後可能發現某個客戶、消費羣體或組織的金融和商業興趣,並可觀察金融市場的變化趨勢。能夠說,關聯規則挖掘的技術在我國的研究與應用並非很普遍深刻。
 
近年來關聯規則發掘技術的一些研究
 
因爲許多應用問題每每比超市購買問題更復雜,大量研究從不一樣的角度對關聯規則作了擴展,將更多的因素集成到關聯規則挖掘方法之中,以此豐富關聯規則的應用領域,拓寬支持管理決策的範圍。如考慮屬性之間的類別層次關係,時態關係,多表挖掘等。近年來圍繞關聯規則的研究主要集中於兩個方面,即擴展經典關聯規則可以解決問題的範圍,改善經典關聯規則挖掘算法效率和規則興趣性。算法

相關文章
相關標籤/搜索