1. 程式人生 > >DataMining學習1_資料探勘技術(三)——關聯分析

DataMining學習1_資料探勘技術(三)——關聯分析

3、關聯分析

3.1、基本概念

 (1)通常認為項在事物中出現比不出現更重要,因此項是非對稱二元變數。(2)關聯規則是形如X->Y的蘊涵表示式,其中X和Y是不相交的項集,即X交Y=空。(3)由關聯規則作出的推論並不必然蘊涵因果關係。它只表示規則前件和後件中的項明顯地同時出現。(4)通常,頻繁項集的產生所需的計算開銷遠大於規則產生所需的計算開銷。(5)任何具有反單調性的度量都能夠結合到資料探勘演算法中,對候選項集的指數搜尋空間有效地進行剪枝。

3.2、Apriori演算法:

演算法主要利用瞭如下性質:如果一個項集是頻繁的,則它的所有子集一定也是頻繁的(這個性質也稱支援度度量的反單調性)。也就是說如果當前的項集不是頻繁的,那麼它的超集也不在是頻繁的。(該演算法的計算複雜度依賴於資料中的項數和事物的平均長度等性質)

演算法步驟:(1)演算法初始通過單遍掃描資料集,確定每個項的支援度。一旦完成這一步,就得到所有頻繁1項集的集合F1;(2)接下來,該演算法使用上一次迭代發現的頻繁(k-1)項集,產生新的候選k項集;(3)為了對候選項的支援度計數,演算法需要再次掃描一遍資料庫,使用子集函式確定包含在每一個事物t中的Ck中的所有候選k項集;(4)計算候選項的支援度計數後,演算法將刪除支援度計數小於minsup的所有候選項集;(5)當沒有新的頻繁項

集產生時,演算法結束。

Apriori演算法第一它是逐層演算法,第二它使用產生—測試策略來發現頻繁項集。注意:在由k-1項集產生k項集的過程中有以下幾點注意:

(1)新產生的k項集先要確定它的所有的k-1項真子集都是頻繁的(其實如果k個子集中的m個用來產生候選項集,則在候選項集剪枝時只需檢查剩下的k-m個子集),如果有一個不是頻繁的,那麼它可以從當前的候選項集中去掉。

(2)候選項集的產生方法:A)蠻力法:從2項集開始以後所有的項集都從1項集完全拼出來。如:3項集有3個一項集拼出(要列出所有的3個一項集拼出的可能)。然後再按照剪枝演算法剪枝(確定當前的項集的所有k-1項集是否都是頻繁的)。;B)Fk-1*F1法:顧名思義由1項集和k-1項集生成k項集,然後再剪枝。(這種方法是完全的,因為每一個k頻繁項集都是由一個頻繁k-1項集和一個頻繁1項集產生的)但是,這種方法會產生大量重複的k頻繁項集(由於順序的關係)。避免產生重複的候選項集的一種方法是確保每個頻繁項集中的項以字典序儲存,每個頻繁k-1項集X只用字典序比X中的所有項都大的頻繁項進行擴充套件。(還可以使用一些啟發式方法進一步減少候選項集的數量,如:對於每一個倖免於剪枝的候選k項集,它的每一個項必須至少在k-1個k-1項集中出現);C):Fk-1

*Fk-1法:由兩個頻繁k-1項集生成候選k項集,但是兩個頻繁k-1項集的前k-2項必須相同,最後一項必須相異。(由於每個候選是由一對頻繁k-1項集合並而成,所以需要附加的候選剪枝步驟來確保該候選的其餘k-2個子集是頻繁的)。

注意:(1)在支援度計數時除了傳統的方法外還可以將候選項集劃分為不同的桶,並存放在Hash樹中。在支援度計數期間,包含在事物中的項集也雜湊到相應的桶中。(2)隨著頻繁項集最大長度的增加,演算法需要掃描資料庫的次數也將增多。

3.3、規則的產生:

提取規則:將一個頻繁項集Y劃分成兩個非空的子集X和Y-X,使得X->Y-X滿足置信度閾值。計算關聯規則的置信度並不需要再次掃描事物資料集,因為這兩個項集的支援度計數已經在頻繁項集產生時得到。

性質:如果規則X->Y-X不滿足置信度閾值,則形如X1->Y-X1的規則一定也不滿足置信度閾值,其中X1是X的子集。根據該性質假設由頻繁項集{a,b,c,d}產生規則,假設規則{b,c,d}->{a}具有低置信度,則可以丟棄後件包含a的所有規則,如{c,d}->{a,b}。

3.4、最大頻繁項集:

       由事物資料集產生的頻繁項集的數量可能非常大,因此,從中識別出可以推匯出其他所有的頻繁項集的、較小的、具有代表性的項集是有用的。

       最大頻繁項集是這樣的頻繁項集,它的直接超集都不是頻繁的。最大頻繁項集有效的提供了頻繁項集的緊湊表示。換句話說,最大頻繁項集形成了可以匯出所有頻繁項集的最小項集的集合。最大頻繁項集的缺點:(1)僅當存在一種有效的演算法,可以直截了當的發現最大頻繁項集而不需要列舉它們的所有子集時,這種方法才是有效的;(2)最大頻繁項集卻不包含它們子集的支援度資訊(為此提出了頻繁閉項集)。

3.5、頻繁閉項集:

       頻繁閉項集提供了項集的一種最小的表示,該表示不丟失支援度的資訊。閉項集:項集X是閉的,如果它的直接超集都不具有和它相同的支援度計數(超集小於它的支出度計數)。

       頻繁閉項集:如果它是閉的,並且它的支援度大於或等於最小支援度閾值。可以使用頻繁閉項集的支援度來確定一些非閉的頻繁項集的支援度。

對於刪除冗餘的關聯規則,頻繁閉項集是非常有用的。關聯規則X->Y是冗餘的,如果存在另一個關聯規則 X1->Y1使得兩個關聯規則的支援度和置信度都相同,其中,X1是X的子集,並且Y1是Y的子集。

注意:最大頻繁項集都是閉的,因為任何最大頻繁項集都不可能與它的直接超集具有相同的支援度計數。

3.6、產生頻繁項集的其他方法:

可以把頻繁項集的產生搜尋過程按照不同的分類就出現不同的方法:(1)一般到特殊與特殊到一般(或者雙向搜尋,但是雙向搜尋需要更多的空間儲存候選項集)。(2)等價類。首先將格劃分為兩個不想交的結點組(或等價類)。頻繁項集產生演算法依次在每個等價類內搜尋頻繁項集。(3)寬度優先與深度優先。通常,深度優先搜尋方法用於發現最大頻繁項集的演算法。這種方法比寬度優先方法更快地檢測到頻繁項集邊界。(4)事物資料庫的表示方法有多種。表示方法的選擇可能影響計算候選項集支援度的I/0開銷。

3.7、不產生候選項集的頻繁項集產生方法

       FP增長演算法。該演算法思想:先掃描資料庫,然後對每一項(1項集)計數,然後再根據前面的計數排序每個事物中的項(按遞減順序)。然後再按照排序後的事物生成FP樹,最後根據FP樹生成頻繁項集(生成頻繁項集的方法見hai jiaweiP157-158)。注意:(1)FP樹的大小也依賴於項如何排序;(2)FP增長以一種自底向上方式探索樹,由FP樹產生頻繁項集的演算法。

3.8、關聯模式的評估

       (1)興趣度的客觀度量。支援度的缺點在於許多潛在的有意義的模式由於包含支援度小的項而被刪除。置信度的缺陷在於該度量忽略了規則後件中項集的支援度,高置信度的規則有時可能誤導。解決置信度問題的一種方法是使用稱作提升度的度量:(注意:只有非零值才是重要的二元屬性是非對稱二元屬性)

它計算規則置信度和規則後件中項集的支援度之間的比率。對於

二元變數,提升度等價於另一種稱作興趣因子的客觀度量,其定義如下:

量,IS度量也可以表示為從一對二元變數中提取出的關聯規則的置信度的幾何均值(兩個 數的幾何均值總是接近於較小的數)。IS度量的侷限性:即使不相關或負相關的模式,度量值也可能很大。

另外還有許多分析二元變數之間聯絡的度量方法,一般將他們分為兩類:對稱的和非對稱的。

(2)多個二元變數的度量

方法一:將二元度量中能夠擴充套件到多元變數的度量擴充套件到多遠變數(使用多維相依表)。另一種方法是將客觀度量定義為模式中項對之間關聯的最大值、最小值和平均值。然而,由於該度量只考慮逐對之間的關聯,所以它可能不能捕獲模式中的隱含關係。

(3)辛普森悖論

在某些情況下,隱藏的變數可能會導致觀察到的一對變數之間的聯絡消失或逆轉方向,這種現象就是所謂的辛普森悖論。例如:在組合資料情況下存在正相關,但是在分層資料情況下卻存在負相關,這種關聯方向上的逆轉就是辛普森悖論。所以有時需要適當的分層才能避免因辛普森悖論產生虛假的模式。

(3)傾斜支援度分佈的影響

關注具有傾斜支援度分佈的資料集,其中大多資料具有較低或中等頻率,但是少數項具有很高的頻率。但是可能少數項中的模式也是感興趣的。交叉支援模式:交叉支援模式是一個項

率總是小於hc,因此這類模式的h置信度也一定小於hc。因此通過確保模式的h置信度值超過hc就可以消除交叉支援模式。注意h置信度也是反單調的。即:h({i1,i2,…ik})  h({i1,i2,…ik+1})。從而可以直接將它併入挖掘演算法。此外,h置信度能夠確保項集中的項之間是強關聯的。這種強關聯模式又稱超團模式

3.9 處理分類屬性

這種型別的變換可以通過為每個不同的屬性-值對建立一個新的項來實現,這個過程成為二元化。將關聯分析用於二元化後的資料時,需要考慮如下問題:

(1)有些屬性值可能不夠頻繁,不能成為頻繁模式的一部分。對於具有許多可能屬性值的標稱屬性(如州名),這個問題更為明顯。更實際的做法是,將相關的屬性值分組,形成少數類別。例如:每個州名都可以用對應的地理區域取代。另一種可能性是,將不太頻繁的屬性值聚合成一個稱作其他的類別。(2)某些屬性值的頻率可能比其他屬性高很多。由於高頻度的項對應於屬性的典型值,因此他們很少攜帶有助於更好理解模式的新資訊。因此,在使用標準的關聯分析演算法之前,刪除這樣的項可能是有好處的。(3)儘管每個事物的寬度與原始資料中屬性的個數相同,但是計算時間可能增加,特別是新建立的項是頻繁項時,這是因為需要更多時間處理由這些項產生的候選項集。一種減少計算時間的方法是,避免產生包含多個來自同一屬性的項的候選項集。

3.10 處理連續屬性

包含連續屬性的關聯規則通常稱為量化關聯規則。對連續屬性進行關聯分析主要有三種方法:第一、基於離散化的方法;第二、基於統計學的方法;第三、非離散化方法。

(1)基於離散化的方法。將連續屬性的鄰近值分組,形成有限個區間。離散化一般的方法有等區間寬度、等頻率、基於熵或聚類實現,離散的區間可以對映到非對稱的二元屬性。

(2)基於統計學的方法(驗證規則的有趣性用假設檢驗的方法)。思想:先確定一個目標屬性,然後使用已有的演算法,從二元化資料中提取頻繁項集。每個頻繁項集確定一個有趣總體段。使用諸如均值、中位數、方差或絕對偏差等統計量,可以對目標屬性在每個段內的分佈進行彙總。min-Apriori:類似於傳統的關聯分析,項集是詞的彙集,而其支援度度量詞之間的關聯程度。min-Apriori中,給定文件中詞之間的關聯通過取它們的規範化頻率的最小值得到。(3)非離散化方法。分析者更感興趣的是發現連續屬性之間的關聯,而不是連續屬性的離散區間之間的關聯。

3.11 處理概念分層

將概念分層納入關聯分析的主要優點如下:

(1)位於層次結構下層的項可能沒有足夠的支援度,從而不在任何頻繁項集中出現。(2)在概念分層的較低層發現的規則傾向於過於特殊,可能不如較高層的規則令人感興趣。(擴充套件事物的概念)。缺點如下:(1)處於較高層的項比處於較低層的項趨向於具有較高的支援度計數。(2)概念分層的引入增加了關聯分析的計算時間,因為項的個數更多,事物寬度更大。(3)概念分層的引入可能產生冗餘規則。

3.12 序列模式

對於識別動態系統的重要特徵或預測特定事件的未來發生,序列資訊可能是非常有價值的。

資料序列是指與單個數據物件相關聯的有序列表。序列s的支援度是包含s的所有資料序列所佔的比例。如果序列s的支援度大於或等於使用者指定的閾值minsup,則稱s是一個序列模式(或頻繁模式)。序列模式發現:給定序列資料集D和使用者指定的最小支援度閾值minsup,序列模式發現的任務是找出支援度大於或等於minsup的所有序列。可以使用Apriori演算法來挖掘。過程一樣,只是由頻繁k-1項集產生候選k項集時,兩個k-1項集合併成k項集的方法不一樣(但是前提和條件是一樣,即前k-2項集是相同的)。

(1)時限約束:模式的事件和元素都施加了時限約束。時限約束包括最大跨度約束、最小間隔和最大間隔約束和視窗大小約束:

       最大跨度約束:整個序列中所允許的事件的最晚和最早發生的最大時間差。一般的最大跨度約束越長,在資料序列中檢測到模式的可能性就更大。然而,較大的最大跨度約束也可能捕獲不真實的模式,因為這增加了兩個不相關的事件的可能性。此外,模式也可能涉及陳舊事件。最大跨度約束影響序列模式發現演算法的支援度計數,施加最大時間跨度約束之後,有些資料序列就不支援候選模式。

       最小間隔和最大間隔約束:通過限制序列中兩個相繼元素之間的時間差來指定。與最大跨度一樣,這些約束也影響序列模式發現演算法的支援度計數。因為當最小間隔和最大間隔約束存在時,有些資料序列就不在支援候選模式。使用最大間隔約束的一個龐效是可能違反先驗原理,使用鄰接子序列可以避免這個問題。使用鄰接子序列的概念,可以用如下方法修改先驗原理,來處理最大間隔約束:

 修訂的先驗原理:如果一個K-序列是頻繁的,則它的所有鄰接(k-1)-子序列也一定是頻繁的。(只需少量改動,就可以將修訂的先驗原理用於序列模式發現演算法)。

視窗大小約束:可以定義一個視窗大小閾值(ws)來指定序列模式的任意元素中事件最早和最晚出現之間的最大允許時間差。視窗大小約束也影響序列模式發現演算法的支援度計數

(2)可選計數方案:有一些方法可以用來由序列資料庫對候選k-序列的支援度計數。主流演算法有:

COBJ:每個物件出現一次。該方法在物件時線中查詢給定的序列至少出現一次。

CWIN:每個滑動窗口出現一次。在該方法中,將一個固定長度的滑動時間視窗移過時線,一次移動一個時間單位。序列在滑動視窗中遇到一次,支援度計數就增值一次。

CWINWIN:最小出現視窗數。最小出現視窗是給定時限約束下序列出現的最小視窗。換言之,最小出現視窗是這樣的時間間隔,使得序列在該時間間隔中出現,但不在其任何真子集中出現。該定義可以視為CWIN的限制版本,因為其效果是收縮或坍塌被CWIN計數的某些視窗。

CDIST_O:允許事件——時間戳重疊的不同出現。序列的不同出現定義為事件——時間戳對的集合,使得至少有一個新的事件——時間戳對不同於以前統計過的出現。

CDIST:不允許事件——時間重疊的不同出現。在上一方法中,允許序列的兩次出現具有重疊的事件——時間對。該方法不允許重疊。當一個事件——時間戳對在計數時用過之後,將它標記為已使用,並且在對相同的序列計數時不再使用。

關於計數方法最後要說明的是,需要確定計算支援度度量的基線(可能達到的最大值)。

3.13 子圖模式

在圖的集合中發現一組公共子結構,這樣的任務稱作頻繁子圖挖掘。頻繁子圖挖掘:給定圖

但是候選子圖的個數實際上少得多,因為有許多是不連通的子圖(應該去掉)。用一種Apriori方法來找出頻繁子圖:方法一:資料變換。將圖變換成類似於於事物的形式,使得我們可以使用諸如Apriori等已有的演算法。在這種情況下,邊標號l(e)與對應的頂點標號(l(vi),l(vj))組合被對映到一個”項”。”事物”的寬度由圖的邊數決定。儘管很簡單,但是僅當圖中每條邊都具有唯一的頂點和邊標號組合時,該方法才可行。

方法二:挖掘頻繁子圖演算法的一般結構:

(1)候選產生。合併頻繁(k-1)-子圖對,得到候選k-子圖。

(2)候選剪枝:丟棄包含非頻繁的(k-1)-子圖的所有候選k-子圖。

(3)支援度計數:統計G中包含每個候選的圖的個數

(4)候選刪除:丟棄支援度小於minsup的所有候選子圖。

候選產生

當k是圖中頂點的個數時,通過新增一個頂點,迭代地擴充套件子圖的方法稱作頂點增長。當k是圖中邊的個數。新增一條邊到已有的子圖中來擴充套件子圖的方法稱作邊增長。為了避免產生重複的候選,我們可以對合並施加附加的條件:兩個(k-1)-子圖必須共享一個共同的(k-2)-子圖。共同的(k-2)-子圖稱作核。(1)通過頂點增長產生候選。頂點增長方法可以看作合併一對(k-1)*(k-1)的鄰接矩陣,產生k*k鄰接矩陣的過程。(2)通過邊增長產生候選。與頂點增長不同,邊增長子圖的一步頂點個數不一定增加(加0或1)。注意:A):邊增長是要考慮圖的拓撲等價。B):當與一對(k-1)-子圖相關聯的核有多個時,還可能產生多個候選子圖。儘管邊增長過程可能產生多個候選子圖,但是候選子圖的數量傾向於比頂點增長策略產生的少。

候選剪枝

相繼從k-子圖刪除一條邊,並檢查對應的(k-1)-子圖是否連通且頻繁,如果不是,則該候選k-子圖可以丟棄。為了檢查(k-1)-子圖是否頻繁,需要將它與其他頻繁(k-1)-子圖匹配。判定兩個圖是否拓撲等價稱為圖同構問題

處理圖同構

處理圖同構的標準方法是:將每個圖都對映為唯一的串表示式,稱作程式碼或規範標號。規範標號具有如下性質:如果兩個圖是同構的,則它們的程式碼一定相同。這個性質使得我們可以通過比較圖的規範標號來檢查圖同構。構造圖的規範標號的第一步是找出圖的鄰接矩陣表示。原則上,一個圖可以有多種鄰接矩陣表示,因為存在多種確定頂點次序的方法。第二步是確定每個鄰接矩陣的串表示。由於鄰接矩陣是對稱的,因此只需要根據矩陣的上三角部分構造串表示就足夠了。一個例子是程式碼是通過逐列連線矩陣的上三角元素得到。最後一步是比較所有的串表示式,並選出具有最小(最大)字典次序的串。這個演算法需要考察圖的所有可能的鄰接矩陣,並計算他們串表示式,以便找出規範標號。更具體的,對於一個包含K個頂點的圖,要考慮K!中排列。已經開發了一些方法來降低該任務的複雜度,包括存放先前的規範標號。

注意:要找一個圖的所有鄰接矩陣是因為兩個同構的圖可能頂點標號完全不同。

支援度計數

關關聯規則統稱負相關模式。非頻繁模式和負相關模式只涉及包含正項的項集和模式,而負模式涉及包含正項和負項的項集和模式。三個概念存在一定的共性:首先,許多非頻繁模式有對應的負模式。其次,許多負相關模式也具有對應的負模式。由於 X並上Y 的支援度越底,該模式就越負相關,因此非頻繁的負相關模式傾向於比頻繁的負相關模式更令人感興趣。

挖掘有趣的非頻繁模式的方法:(1)將每個項看做對稱的二元變數,通過負項增廣,將事務資料二元化。即將原始資料變換成具有正項和負項的事物,對增廣的事務使用已有的頻繁項集產生演算法(如:Apriori),可以推匯出所有的負項集。僅當只有少量變數被視為對稱的二元變數(即負模式僅涉及少量負項),該方法才是可行的。(2)不用負項增廣資料集,而是根據對應的正項集的計算負項集的支援度。可以用若干優化策略來進一步提高挖掘演算法的效能。首先,可以限制被視為對稱二元變數的變數數。更具體地說,僅當y頻繁時才認為負項是有趣的。另一種策略是限制負模式的型別。(3)僅當非頻繁模式的支援度顯著小於期望支援度時,才認為它是有趣的。對於負相關模式,期望支援度根據統計獨立性假設計算。計算期望支援度的方法:使用概念分層和基於近鄰的方法,稱作間接關聯。間接關聯的一個解釋如下圖:其中Y稱作中介集。如果一對項a,b是通過中介集Y間接關聯的,下列條件成



間接關聯可以用如下方法產生。首先,使用諸如AprioriFP增長等標準演算法產生頻繁項集。然後,合併每對頻繁k-項集得到候選間接關聯(a,b,Y),其中ab一對項,而Y是他們的公共中介。例如,若{pqr}{pqs}是頻繁3-項集,則通過合併這對頻繁項集得到候選間接關聯(rs{pq})。一旦產生候選,就要驗證它是否滿足上面條件中的項對支援度和中介依賴條件。然而,中介支援度條件不必驗證,因為候選間接關聯是通過合併一對頻繁項集得到的。

轉自:

http://blog.sina.com.cn/s/blog_6002b97001014niv.html

http://blog.csdn.net/petal1990/article/details/42191245