數據挖掘算法之-關聯規則挖掘(Association Rule)(購物籃分析)


在各種數據挖掘算法中,關聯規則挖掘算是比較重要的一種,尤其是受購物籃分析的影響,關聯規則被應用到非常多實際業務中,本文對關聯規則挖掘做一個小的總結。
首先,和聚類算法一樣,關聯規則挖掘屬於無監督學習方法,它描寫敘述的是在一個事物中物品間同一時候出現的規律的知識模式,現實生活中,比方超市購物時,顧客購買記錄經常隱含着非常多關聯規則。比方購買圓珠筆的顧客中有65%也購買了筆記本。利用這些規則。商場人員能夠非常好的規划商品擺放問題;
為敘述方便。設R= { I1,I2 ......Im} 是一組物品集,W 是一組事務集。W 中的每一個事務T 是一組物品,T是R的子集

如果有一個物品集A,一個事務T關聯規則是例如以下形式的一種蘊含:AB,當中A、B 是兩組物品,A屬於I子集B屬於I子集

在關聯規則中設計4個經常使用關鍵指標
1.置信度(confidence)

定義:設W中支持物品集A的事務中。有c %的事務同一時候也支持物品集B,c %稱為關聯規則AB 的可信度。

通俗解釋:簡單地說,可信度就是指在出現了物品集A 的事務T 中,物品集B 也同一時候出現的概率有多大。

實例說明:上面所舉的圓珠筆和筆記本的樣例。該關聯規則的可信度就回答了這樣一個問題:假設一個顧客購買了圓珠筆,那么他也購買筆記本的可能性有多大呢?在上述樣例中,購買圓珠筆的顧客中有65%的人購買了筆記本, 所以可信度是65%。

概率描寫敘述:物品集A對物品集B的置信度confidence(A==>B)=P(A|B)

2.支持度(support)

定義:設W 中有s %的事務同一時候支持物品集A 和B,s %稱為關聯規則A→B 的支持度。

支持度描寫敘述了A 和B 這兩個物品集的並集C 在全部的事務中出現的概率有多大。

通俗解釋:簡單地說。A==>B的支持度就是指物品集A和物品集B同一時候出現的概率。

實例說明:某天共同擁有1000 個顧客到商場購買物品,當中有150個顧客同一時候購買了圓珠筆和筆記本,那么上述的關聯規則的支持度就是15%。

概率描寫敘述:物品集A對物品集B的支持度support(A==>B)=P(A n B)

3.期望置信度(Expected confidence

定義:設W 中有e %的事務支持物品集B,e %稱為關聯規則A→B 的期望可信度度。

通俗解釋:期望可信度描寫敘述了在沒有不論什么條件影響時,物品集B 在全部事務中出現的概率有多大。

實例說明:假設某天共同擁有1000 個顧客到商場購買物品,當中有250 個顧客購買了圓珠筆,則上述的關聯規則的期望可信度就是25 %。

概率描寫敘述:物品集A對物品集B的期望置信度為support(B)=P(B)

4.提升度(lift)

定義:提升度是可信度與期望可信度的比值

通俗解釋:提升度反映了“物品集A的出現”對物品集B的出現概率發生了多大的變化。

實例說明:上述的關聯規則的提升度=65%/25%=2.6

概率描寫敘述:物品集A對物品集B的期望置信度為lift(A==>B)=confidence(A==>B)/support(B)=p(B|A)/p(B)

總之,可信度是對關聯規則的精確度的衡量,支持度是對關聯規則重要性的衡量。支持度說明了這條規則在全部事務中有多大的代表性。顯然支持度越大,關聯規則越重要。

有些關聯規則可信度盡管非常高,但支持度卻非常低。說明該關聯規則有用的機會非常小,因此也不重要。


在關聯規則挖掘中。滿足一定最小置信度以及支持度的集合成為頻繁集(frequent itemset),或者強關聯。關聯規則挖掘則是一個尋找頻繁集的過程。


關聯規則挖掘的相關算法

1.Apriori算法:使用候選項集找頻繁項集

Apriori算法是一種最有影響的挖掘布爾關聯規則頻繁項集的算法。其核心是基於兩階段頻集思想的遞推算法。該關聯規則在分類上屬於單維、單層、布爾關聯規則。在這里。全部支持度大於最小支持度的項集稱為頻繁項集,簡稱頻集

該算法的基本思想是:首先找出全部的頻集,這些項集出現的頻繁性至少和提前定義的最小支持度一樣。然后由頻集產生強關聯規則,這些規則必須滿足最小支持度和最小可信度。然后使用第1步找到的頻集產生期望的規則。產生僅僅包括集合的項的全部規則,當中每一條規則的右部僅僅有一項。這里採用的是中規則的定義。一旦這些規則被生成。那么僅僅有那些大於用戶給定的最小可信度的規則才被留下來。

為了生成全部頻集,使用了遞推的方法。

可能產生大量的候選集,以及可能須要反復掃描數據庫,是Apriori算法的兩大缺點

2.基於划分的算法

Savasere等設計了一個基於划分的算法。這個算法先把數據庫從邏輯上分成幾個互不相交的塊,每次單獨考慮一個分塊並對它生成全部的頻集。然后把產生的頻集合並。用來生成全部可能的頻集,最后計算這些項集的支持度。這里分塊的大小選擇要使得每一個分塊能夠被放入主存,每一個階段僅僅需被掃描一次。而算法的正確性是由每一個可能的頻集至少在某一個分塊中是頻集保證的。該算法是能夠高度並行的,能夠把每一分塊分別分配給某一個處理器生成頻集。產生頻集的每一個循環結束后。處理器之間進行通信來產生全局的候選k-項集。通常這里的通信過程是算法運行時間的主要瓶頸;而還有一方面,每一個獨立的處理器生成頻集的時間也是一個瓶頸。

3.FP-樹頻集算法

 

針對Apriori算法的固有缺陷,J. Han等提出了不產生候選挖掘頻繁項集的方法:FP-樹頻集算法。

採用分而治之的策略。在經過第一遍掃描之后,把數據庫中的頻集壓縮進一棵頻繁模式樹(FP-tree),同一時候依舊保留當中的關聯信息,隨后再將FP-tree分化成一些條件庫,每一個庫和一個長度為1的頻集相關,然后再對這些條件庫分別進行挖掘

當原始數據量非常大的時候,也能夠結合划分的方法,使得一個FP-tree能夠放入主存中。實驗表明,FP-growth對不同長度的規則都有非常好的適應性。同一時候在效率上較之Apriori算法有巨大的提高。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM