數據挖掘-關聯規則分析[ZZ]

1.什麼是關聯規則算法

    "尿布與啤酒"的故事你們都有聽過,這裏就不羅嗦了。數據庫

    按常規思惟,尿布與啤酒風馬牛不相及,若不是藉助數據挖掘技術對大量交易數據進行挖掘分析,沃爾瑪是不可能發現數據內在這一有價值的規律的。
    數據關聯是數據庫中存在的一類重要的可被發現的知識。若兩個或多個變量的取值之間存在某種規律性,就稱爲關聯。關聯可分爲簡單關聯、時序關聯、因果關聯。關聯分析的目的是找出數據庫中隱藏的關聯網。有時並不知道數據庫中數據的關聯函數,即便知道也是不肯定的,所以關聯分析生成的規則帶有可信度。關聯規則挖掘發現大量數據中項集之間有趣的關聯或相關聯繫。Agrawal等於1993年首先提出了挖掘顧客交易數據庫中項集間的關聯規則問題,之後諸多的研究人員對關聯規則的挖掘問題進行了大量的研究。他們的工做包括對原有的算法進行優化,如引入隨機採樣、並行的思想等,以提升算法挖掘規則的效率;對關聯規則的應用進行推廣。關聯規則挖掘在數據挖掘中是一個重要的課題,最近幾年已被業界所普遍研究。ide

    2.關聯規則挖掘過程、分類及其相關算法
  2.1關聯規則挖掘的過程
  關聯規則挖掘過程主要包含兩個階段:第一階段必須先從資料集合中找出全部的高頻項目組(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)的條件門檻下,若一規則所求得的信賴度知足最小信賴度,稱此規則爲關聯規則。例如:經由高頻k-項目組{A,B}所產生的規則AB,其信賴度可經由公式(2)求得,若信賴度大於等於最小信賴度,則稱AB爲關聯規則。
  就沃爾馬案例而言,使用關聯規則挖掘技術,對交易資料庫中的紀錄進行資料挖掘,首先必需要設定最小支持度與最小信賴度兩個門檻值,在此假設最小支持度min_support=5% 且最小信賴度min_confidence=70%。所以符合此該超市需求的關聯規則將必須同時知足以上兩個條件。若通過挖掘過程所找到的關聯規則「尿布,啤酒」,知足下列條件,將可接受「尿布,啤酒」的關聯規則。用公式能夠描述Support(尿布,啤酒)>=5%且Confidence(尿布,啤酒)>=70%。其中,Support(尿布,啤酒)>=5%於此應用範例中的意義爲:在全部的交易紀錄資料中,至少有5%的交易呈現尿布與啤酒這兩項商品被同時購買的交易行爲。Confidence(尿布,啤酒)>=70%於此應用範例中的意義爲:在全部包含尿布的交易紀錄資料中,至少有70%的交易會同時購買啤酒。所以,從此如有某消費者出現購買尿布的行爲,超市將可推薦該消費者同時購買啤酒。這個商品推薦的行爲則是根據「尿布,啤酒」關聯規則,由於就該超市過去的交易紀錄而言,支持了「大部份購買尿布的交易,會同時購買啤酒」的消費行爲。
  從上面的介紹還能夠看出,關聯規則挖掘一般比較適用與記錄中的指標取離散值的狀況。若是原始數據庫中的指標值是取連續的數據,則在關聯規則挖掘以前應該進行適當的數據離散化(實際上就是將某個區間的值對應於某個值),數據的離散化是數據挖掘前的重要環節,離散化的過程是否合理將直接影響關聯規則的挖掘結果。
  2.2關聯規則的分類
  按照不一樣狀況,關聯規則能夠進行分類以下:
  1.基於規則中處理的變量的類別,關聯規則能夠分爲布爾型和數值型。
  布爾型關聯規則處理的值都是離散的、種類化的,它顯示了這些變量之間的關係;而數值型關聯規則能夠和多維關聯或多層關聯規則結合起來,對數值型字段進行處理,將其進行動態的分割,或者直接對原始的數據進行處理,固然數值型關聯規則中也能夠包含種類變量。例如:性別=「女」=>職業=「祕書」 ,是布爾型關聯規則;性別=「女」=>avg(收入)=2300,涉及的收入是數值類型,因此是一個數值型關聯規則。
  2.基於規則中數據的抽象層次,能夠分爲單層關聯規則和多層關聯規則。
  在單層的關聯規則中,全部的變量都沒有考慮到現實的數據是具備多個不一樣的層次的;而在多層的關聯規則中,對數據的多層性已經進行了充分的考慮。例如:IBM臺式機=>Sony打印機,是一個細節數據上的單層關聯規則;臺式機=>Sony打印機,是一個較高層次和細節層次之間的多層關聯規則。
  3.基於規則中涉及到的數據的維數,關聯規則能夠分爲單維的和多維的。
  在單維的關聯規則中,咱們只涉及到數據的一個維,如用戶購買的物品;而在多維的關聯規則中,要處理的數據將會涉及多個維。換成另外一句話,單維關聯規則是處理單個屬性中的一些關係;多維關聯規則是處理各個屬性之間的某些關係。例如:啤酒=>尿布,這條規則只涉及到用戶的購買的物品;性別=「女」=>職業=「祕書」,這條規則就涉及到兩個字段的信息,是兩個維上的一條關聯規則。
  2.3關聯規則挖掘的相關算法
  1.Apriori算法:使用候選項集找頻繁項集
  Apriori算法是一種最有影響的挖掘布爾關聯規則頻繁項集的算法。其核心是基於兩階段頻集思想的遞推算法。該關聯規則在分類上屬於單維、單層、布爾關聯規則。在這裏,全部支持度大於最小支持度的項集稱爲頻繁項集,簡稱頻集。
  該算法的基本思想是:首先找出全部的頻集,這些項集出現的頻繁性至少和預約義的最小支持度同樣。而後由頻集產生強關聯規則,這些規則必須知足最小支持度和最小可信度。而後使用第1步找到的頻集產生指望的規則,產生只包含集合的項的全部規則,其中每一條規則的右部只有一項,這裏採用的是中規則的定義。一旦這些規則被生成,那麼只有那些大於用戶給定的最小可信度的規則才被留下來。爲了生成全部頻集,使用了遞推的方法。
  可能產生大量的候選集,以及可能須要重複掃描數據庫,是Apriori算法的兩大缺點。
  2.基於劃分的算法
  Savasere等設計了一個基於劃分的算法。這個算法先把數據庫從邏輯上分紅幾個互不相交的塊,每次單獨考慮一個分塊並對它生成全部的頻集,而後把產生的頻集合並,用來生成全部可能的頻集,最後計算這些項集的支持度。這裏分塊的大小選擇要使得每一個分塊能夠被放入主存,每一個階段只需被掃描一次。而算法的正確性是由每個可能的頻集至少在某一個分塊中是頻集保證的。該算法是能夠高度並行的,能夠把每一分塊分別分配給某一個處理器生成頻集。產生頻集的每個循環結束後,處理器之間進行通訊來產生全局的候選k-項集。一般這裏的通訊過程是算法執行時間的主要瓶頸;而另外一方面,每一個獨立的處理器生成頻集的時間也是一個瓶頸。
  3.FP-樹頻集算法
  針對Apriori算法的固有缺陷,J. Han等提出了不產生候選挖掘頻繁項集的方法:FP-樹頻集算法。採用分而治之的策略,在通過第一遍掃描以後,把數據庫中的頻集壓縮進一棵頻繁模式樹(FP-tree),同時依然保留其中的關聯信息,隨後再將FP-tree分化成一些條件庫,每一個庫和一個長度爲1的頻集相關,而後再對這些條件庫分別進行挖掘。當原始數據量很大的時候,也能夠結合劃分的方法,使得一個FP-tree能夠放入主存中。實驗代表,FP-growth對不一樣長度的規則都有很好的適應性,同時在效率上較之Apriori算法有巨大的提升。函數

相關文章
相關標籤/搜索