讀書筆記 -- 011_數據挖掘_頻繁模式_關聯性_相關性_1

概念

頻繁模式(frequent pattern):是頻繁地出現在數據集中的模式(如項集、子序列或子結構)。頻繁模式挖掘搜索給定數據集中反覆出現的聯繫。
支持度(support)置信度(confidence)是關聯規則的兩種度量。他們分別反映所發現規則的有用性和確定性。例如:
computer=>antivirus_software[support = 2%; confidence = 60%],
其中支持度2%表示所有事務的2%顯示電腦和殺毒軟件被同時購買,置信度60%表示購買計算機的顧客也購買了殺毒軟件。

2、關聯規則
I={I1,I2,...,Im} 是項的集合。設任務相關的數據D 是數據庫事務的集合,其中每個事務T 是一個非空項集,使得TI 。每一個事務都有一個標識符,成爲TID 。設A 是一個項集,事務T 包含A ,當且僅當AT 。關聯規則是形如 AB 的蘊含式,其中AIBIAB ,並且AB= 。規則AB 在事務集D中成立,具有 支持度 s ,其中sD 中事務包含AB (即集合AB 的並或AB 二者)的百分比。它是概率P(AB) 。規則AB 在事務集D 中具有置信度c ,其中cD 包含A 的事務同時也包含B 的事務的百分比。這是條件概率P(B|A) 。即,

support(AB)=P(AB)=(σ(AB)N)(1)

confidence(AB)=P(B|A)=(σ(AB)σ(A))(2)

其中,σ(X) 表示項集X 的支持度計數。同時滿足最小支持度閾值(min_sup) 和最小置信度閾值(max_conf) 的規則成爲強規則。

給定事務的集合T關聯規則發現是指找出支持度大於等於min_sup 並且置信度大於等於min_conf 的所有規則。挖掘關聯規則的一種原始方法是:計算每個可能規則的支持度和置信度。但是這種方法的代價太高了,令人望而卻步,因爲可以從數據集中提取的規則的數目達到指數級。更具體地說,從包含n 個項的數據集提取的可能規則的總數爲:

R=3n2(n+1)+1

爲了避免不必要的開銷,事先對規則剪枝,而無須計算它們的支持度和置信度的值將是有益的。提高關聯規則挖掘算法性能的第一步是拆分支持度和置信度要求。由公式1可以看出,規則AB 的支持度僅僅依賴於其對應項集AB 的支持度。例如,下面的規則有相同的支持度,因爲他們涉及的項都源自於同一個項集{啤酒,尿布,牛奶}:
{啤酒,尿布}->{牛奶},{啤酒,牛奶}->{尿布},
{牛奶,尿布}->{啤酒},{啤酒}->{尿布,牛奶},
{尿布}->{牛奶,啤酒},{牛奶}->{尿布,啤酒}
如果項集{啤酒,尿布,牛奶}是非頻繁的,則可以立即去掉這6個候選規則,則不必計算他們的置信度值。

因此,關聯規則的挖掘是一個兩步的過程:
(1)找出所有的頻繁項集:根據定義,這些項集的每一個頻繁出現的次數至少與預定義的最小支持度計數min_sup 一樣。
(2)由頻繁項集產生強關聯規則:根據定義,這些規則必須滿足最小支持度和最小置信度。
可以使用附加的興趣度度量來發現相關聯的項之間的相關聯繫。由於第二步的開銷遠小於第一步,因此挖掘關聯規則的總體性能由第一步決定。

例:
這裏寫圖片描述
上表中:規則{(尿)()} 的支持度 = 0.4,置信度=0.67

3、頻繁項集的產生
發現頻繁項集的一種原始的方法是確定每個候選項集的支持度計數。爲了完成這一個任務,必須將每個候選項集與每個事務進行比較。

有幾種方法可以降低產生頻繁項集的計算複雜度:
(1)減少候選項集的數目:下面介紹的先驗(apriori)原理,是一種不用計算支持度值而刪除某些候選項集的有效方法。
(2)減少比較次數:替代將每個候選項集與每個事務相匹配,可以使用更高級的數據結構,或者存儲候選項集或者壓縮數據集,來減少比較的次數。

4、Apriori算法,通過限制候選產生髮現頻繁項集

(1)先驗原理:
(a)定理:如果一個項集是頻繁的,則它的所有非空子集也一定是頻繁的;
(b)單調性:令I 是項的集合,J=2II 的冪集。度量f 是單調的(或向上封閉的),如果

X,YJ:(XY)f(X)f(Y)
這表示如果XY 的子集,則f(Y) 一定不超過f(X) 。例如,如果項集a,b,c 是非頻繁項集,則它的超集也一定是非頻繁的,那麼包含項集a,b,c 的所有超集的可以被立即剪枝。這種基於支持度度量修剪指數搜索空間的策略稱之爲基於支持度的剪枝

(2)Apriori算法

**算法原理:**Apriori使用一種稱之爲逐層搜索的迭代方法,其中k 項集用於探索(k+1) 項集。首先,通過掃描數據庫,累計每個項的計數,並收集滿足最小支持度的項找出頻繁1項集的集合。該集合記爲L1 。然後,使用L1 找出頻繁2項集的集合L2 ,使用L2 找出L3 。如此下去,直到再也找不到頻繁k 項集。找出每個Lk 需要一次數據庫的完整掃描。

Ck 爲候選k-項集的集合,而Fk 爲頻繁k-項集的集合。
Apriori算法僞代碼
(1)該算法初始通過單遍掃描數據集,確定每個項的支持度。一旦完成這一步,就得到所有頻繁1-項集的集合F1 (步驟1和步驟2)。
(2)接下來,該算法將使用上一次迭代發現的頻繁(k-1)-項集,產生新的候選k-項集(步驟5)。候選的產生使用apriori-gen函數實現。
(3)爲了對候選項的支持度計數,算法需要再次掃描一遍數據集(步驟6~10)。使用子集函數確定包含在每一個事務t中的Ck 中的所有候選k-項集。
(4)計算候選項的支持度計數之後,算法將刪去支持度計數小於minup 的所有候選項集(步驟12)。
(5)當沒有新的頻繁項集產生,即Fk= 時,算法結束(步驟13)。
Apriori算法的頻繁項集產生的部分有兩個重要的特點:第一,它是逐層算法,他每次遍歷項集格中的一層;第二,它使用產生-測試(generate-and-test)策略發現頻繁項集。該算法總的迭代次數是Kmax+1 ,其中Kmax 是頻繁項集的最大長度。

(3)候選的產生和剪枝
a.候選項集的產生,連接步:爲了找出Lk ,通過將Lk1 與自身連接產生候選K 項集的集合。
b.候選項集的剪枝,剪枝步:掃描數據庫,確定候選的計數,刪除支持度計數小於supportmin 的候選。並非所有的候選都要確定其計數,如果其子項集不是頻繁項集,則確定其不是頻繁項集。

(3.a)連接步:候選項集的產生

a.蠻力方法:把所有的k-項集都看作可能的候選,然後使用候選剪枝除去不必要的候選。第k 層產生的候選項集的數目爲Ckd ,其中,d 是項的總數。雖然候選產生是相當簡單的,但是候選剪枝的開銷極大,因爲必須考察的項集數量太大。設每一個候選項集所需的計算量爲O(k) ,這種方法的總複雜度爲O(dk=1KCkd)=O(d2d1)

b.Fk1F1 方法:這種方法是完備的,因爲每一個頻繁k -項集都是由一個頻繁(k1) -項集和頻繁1-項集組成的。然而,這種方法很難避免重複地產生候選項集。避免產生重複的候選項集的一種方法是確保每個頻繁項集中的項以字典序存儲,每個頻繁(k1) -項集X只用字典序比X中所有的項都大的頻繁項進行擴展。儘管這種方法比蠻力方法有明顯的改進,但是仍然會產生大量不必要的候選。

c.Fk1Fk1 方法:函數apriori-gen函數的候選產生過程合併一對頻繁(k1) 項集,僅當他們的前k2 個項都相同。令A={a1,a2,...,ak1}B={b1,b2,...,bk1} 是一對頻繁(k1) -項集,合併AB ,如果他們滿足如下的條件:

ai=bi(i=1,2,3,...,k2)ak1bk1

(4)基於Hash樹進行支持度計數
在Apriori算法中,候選項集劃分爲不同的桶,並存放在Hash樹中。在支持度計數期間,包含在事務當中的項集也散列到相應的桶中。這種方法不是將事務中的每個項集與所有的候選項集進行比較,而是將它與同一個桶內候選項集進行匹配。圖略。

5、由頻繁項集產生關聯規則
一旦由數據庫中產生頻繁項集,就可以直接由他們產生強關聯規則(強關聯規則滿足最小支持度和最小置信度)。
對於置信度,可以用如下公式進行計算:

confidence(AB)=P(B|A)=(σ(AB)σ(A))

對於支持度,可以用如下的公式計算:
support(AB)=P(AB)=(σ(AB)N)

每個頻繁k 項集能夠產生多達2k2 個關聯規則。關聯規則可以這樣提取:將項集Y 劃分成兩個非空的子集XYX ,使得XXY 滿足置信度閾值。

計算關聯規則的置信度並不需要再次掃描事務數據集。因爲置信度σ(AB)/σ(A) 。這兩個項集在支持度計數已經在頻繁項集產生的時候已經得到,因此不必再次掃描整個數據集。

6、基於置信度的剪枝
不像支持度度量,置信度不具有任何單調性。例如:規則XY 的置信度可能大於、小於或者等於規則XY 的置信度,其中XXYY 。儘管如此,當比較由頻繁項集Y 產生的規則時,下面的定理對置信度度量成立。

定理: 如果規則XYX 不滿足置信度閾值,則形如XYX 的規則一定也不滿足置信度閾值,其中XX 的子集。

7、頻繁項集的緊湊表示
(a)極大頻繁項集:極大頻繁項集的直接超集都不是頻繁的。極大頻繁項集有效地提供了頻繁項集的緊湊表示。換句話說,極大頻繁項集形成了可以導出所有頻繁項集的最小的項集的集合。
(b)閉項集:如果項集X 的直接超集都不具有和他相同的支持度計數。閉項集提供了頻繁項集的一種最小表示,該表示不丟失支持度信息。
(c)閉頻繁項集:如果一個項集是閉的,並且它的支持度大於或等於最小支持度閾值。閉頻繁項集的集合包含了頻繁項集的完整信息。不會存在其它的項總是和閉頻繁項集一起出現,否則閉頻繁項集就包含它了。
頻繁項集、極大頻繁項集和閉頻繁項集的關係

例:
騰訊應用寶使用Apriori算法實現的App推薦

發佈了30 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章