在資料挖掘的知識模式中,關聯規則模式是比較重要的一種。關聯規則的概念由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機的使用者了解。如果資料庫中顯示,某個高信用限額的客戶更換了位址,這個客戶很有可能新近購買了一棟更大的住宅,是以會有可能需要更高信用限額,更高端的新信用卡,或者需要一個住房改善貸款,這些産品都可以通過信用卡賬單郵寄給客戶。當客戶打電話咨詢的時候,資料庫可以有力地幫助電話銷售代表。銷售代表的電腦螢幕上可以顯示出客戶的特點,同時也可以顯示出顧客會對什麼産品感興趣。
同時,一些知名的電子商務站點也從強大的關聯規則挖掘中的受益。這些電子購物網站使用關聯規則中規則進行挖掘,然後設定使用者有意要一起購買的捆綁包。也有一些購物網站使用它們設定相應的交叉銷售,也就是購買某種商品的顧客會看到相關的另外一種商品的廣告。
但是目前在我國,“資料海量,資訊缺乏”是商業銀行在資料大集中之後普遍所面對的尴尬。目前金融業實施的大多數資料庫隻能實作資料的錄入、查詢、統計等較低層次的功能,卻無法發現資料中存在的各種有用的資訊,譬如對這些資料進行分析,發現其資料模式及特征,然後可能發現某個客戶、消費群體或組織的金融和商業興趣,并可觀察金融市場的變化趨勢。可以說,關聯規則挖掘的技術在我國的研究與應用并不是很廣泛深入。
近年來關聯規則發掘技術的一些研究
由于許多應用問題往往比超市購買問題更複雜,大量研究從不同的角度對關聯規則做了擴充,将更多的因素內建到關聯規則挖掘方法之中,以此豐富關聯規則的應用領域,拓寬支援管理決策的範圍。如考慮屬性之間的類别層次關系,時态關系,多表挖掘等。近年來圍繞關聯規則的研究主要集中于兩個方面,即擴充經典關聯規則能夠解決問題的範圍,改善經典關聯規則挖掘算法效率和規則興趣性。