機器學習筆記之關聯規則


機器學習筆記之關聯規則

一、關聯規則概述

1.1 關聯規則

關聯規則(Association Rules)反映一個事物與其他事物之間的相互依存性和關聯性。如果兩個或者多個事物之間存在一定的關聯關系,那么,其中一個事物就能夠通過其他事物預測到。

關聯規則可以看作是一種IF-THEN關系。假設商品A被客戶購買,那么在相同的交易ID下,商品B也被客戶挑選的機會就被發現了。

有沒有發生過這樣的事:你出去買東西,結果卻買了比你計划的多得多的東西?這是一種被稱為沖動購買的現象,大型零售商利用機器學習和Apriori算法,讓我們傾向於購買更多的商品。

購物車分析是大型超市用來揭示商品之間關聯的關鍵技術之一。他們試圖找出不同物品和產品之間的關聯,這些物品和產品可以一起銷售,這有助於正確的產品放置。

買面包的人通常也買黃油。零售店的營銷團隊應該瞄准那些購買面包和黃油的顧客,向他們提供報價,以便他們購買第三種商品,比如雞蛋。因此,如果顧客買了面包和黃油,看到雞蛋有折扣或優惠,他們就會傾向於多花些錢買雞蛋。這就是購物車分析的意義所在。

置信度: 表示你購買了A商品后,你還會有多大的概率購買B商品。

支持度: 指某個商品組合出現的次數與總次數之間的比例,支持度越高表示該組合出現的幾率越大。

提升度: 提升度代表商品A的出現,對商品B的出現概率提升了多少,即“商品 A 的出現,對商品 B 的出現概率提升的”程度。

二、 Apriori 算法

Apriori算法利用頻繁項集生成關聯規則。它基於頻繁項集的子集也必須是頻繁項集的概念。頻繁項集是支持值大於閾值(support)的項集。

Apriori算法就是基於一個先驗:如果某個項集是頻繁的,那么它的所有子集也是頻繁的。

2.1 算法流程

輸入:數據集合D,支持度閾值𝛼

輸出:最大的頻繁k項集

1)掃描整個數據集,得到所有出現過的數據,作為候選頻繁1項集。k=1,頻繁0項集為空集。
2)挖掘頻繁k項集

  • 掃描數據計算候選頻繁k項集的支持度
  • 去除候選頻繁k項集中支持度低於閾值的數據集,得到頻繁k項集。如果得到的頻繁k項集為空,則直接返回頻繁k-1項集的集合作為算法結果,算法結束。如果得到的頻繁k項集只有一項,則直接返回頻繁k項集的集合作為算法結果,算法結束。
  • 基於頻繁k項集,連接生成候選頻繁k+1項集。

3)令k=k+1,轉入步驟2。

2.2 算法案例

第一次迭代:假設支持度閾值為2,創建大小為1的項集並計算它們的支持度。

可以看到,第4項的支持度為1,小於最小支持度2。所以我們將在接下來的
迭代中丟棄{4}。我們得到最終表F1。

第2次迭代:接下來我們將創建大小為2的項集,並計算它們的支持度。F1中設
置的所有項。

再次消除支持度小於2的項集。在這個例子中{1,2}。
現在,讓我們了解什么是剪枝,以及它如何使Apriori成為查找頻繁項集的最佳算法之一。

剪枝:我們將C3中的項集划分為子集,並消除支持值小於2的子集。

第三次迭代:我們將丟棄{1,2,3}和{1,2,5},因為它們都包含{1,2}。

第四次迭代:使用F3的集合,我們將創建C4。

因為這個項集的支持度小於2,所以我們就到此為止,最后一個項集是F3。

注:到目前為止,我們還沒有計算出置信度。

使用F3,我們得到以下項集:
對於I={1,3,5},子集是{1,3},{1,5},{3,5},{1},{3},{5}
對於I={2,3,5},子集是{2,3},{2,5},{3,5},{2},{3},{5}

應用規則:我們將創建規則並將它們應用於項集F3。現在假設最小置信值是60%。對於I的每個子集S,輸出規則:

  • S–>(I-S)(表示S推薦I-S)
  • 如果:支持度(l)/支持度(S)>=最小配置值

{1,3,5}
規則1:{1,3}–>({1,3,5}–{1,3})表示1&3–>5
置信度=支持度(1,3,5)/支持度(1,3)=2/3=66.66%>60%
因此選擇了規則1

規則2:{1,5}–>({1,3,5}–{1,5})表示1&5–>3
置信度=支持度(1,3,5)/支持度(1,5) =2/2=100%>60%
因此選擇了規則2

規則3:{3,5}–>({1,3,5}–{3,5})表示3&5–>1
置信度=支持度(1,3,5)/支持度(3,5)=2/3=66.66%>60%
因此選擇規則3

規則4:{1}–>({1,3,5}–{1})表示1–>3&5
置信度=支持度(1,3,5)/支持度(1)=2/3=66.66%>60%
因此選擇規則4

規則5:{3}–>({1,3,5}–{3})表示3–>1和5
置信度=支持度(1,3,5)/支持度(3)=2/4=50%<60%
規則5被拒絕

規則6:{5}–>({1,3,5}–{5})表示5–>1和3
置信度=支持度(1,3,5)/支持度(5)=2/4=50%<60%
規則6被拒絕

這就是在Apriori算法中創建規則的方法。可以為項集{2,3,5}實現相同的步驟。

2.3 Apriori算法缺點

Apriori 在計算的過程中有以下幾個缺點:

  • 可能產生大量的候選集。因為采用排列組合的方式,把可能的項集都組合出來了;
  • 每次計算都需要重新掃描數據集,來計算每個項集的支持度。

三、FP-Growth算法

3.1 FP-growth算法思想

FP-growth(頻繁模式增長)算法是韓家煒老師在2000年提出的關聯分析算法,它采取如下分治策略:將提供頻繁項集的數據庫壓縮到一棵頻繁模式樹(FP-Tree),但仍保留項集關聯信息。

該算法是對Apriori方法的改進。生成一個頻繁模式而不需要生成候選模式。FP-growth算法以樹的形式表示數據庫,稱為頻繁模式樹或FP-tree。此樹結構將保持項集之間的關聯。數據庫使用一個頻繁項進行分段。這個片段被稱為“模式片段”。分析了這些碎片模式的項集。因此,該方法相對減少了頻繁項集的搜索。

該算法和Apriori算法最大的不同有兩點:
第一,不產生候選集
第二,只需要兩次遍歷數據庫,大大提高了效率。

3.2 FP-Tree

FP樹(FP-Tree)是由數據庫的初始項集組成的樹狀結構。 FP樹的目的是挖掘最頻繁的模式。FP樹的每個節點表示項集的一個項。根節點表示null,而較低的節點表示項集。在形成樹的同時,保持節點與較低節點(即項集與其他項集)的關聯。

算法步驟:

頻繁模式增長方法可以在不產生候選集的情況下找到頻繁模式。
1) 第一步是掃描數據庫以查找數據庫中出現的項集。這一步與Apriori的第一步相同。
2) 第二步是構造FP樹。為此,創建樹的根。根由null表示。
3) 下一步是再次掃描數據庫並檢查事務。檢查第一個事務並找出其中的項集。計數最大的項集在頂部,計數較低的下一個項集,以此類推。這意味着樹的分支是由事務項集按計數降序構造的。
4) 將檢查數據庫中的下一個事務。項目集按計數降序排列。如果此事務的任何項集已經存在於另一個分支中(例如在第一個事務中),則此事務分支將共享根的公共前綴。這意味着公共項集鏈接到此事務中另一項集的新節點。
5) 此外,項集的計數在事務中發生時遞增。當根據事務創建和鏈接公共節點和新節點時,它們的計數都增加1。
6) 下一步是挖掘創建的FP樹。為此,首先檢查最低節點以及最低節點的鏈接。最低的節點表示頻率模式長度1。由此遍歷FP樹中的路徑。此路徑稱為條件模式基。條件模式庫是一個子數據基,由FP樹中的前綴路徑組成,路徑中的節點(后綴)最低。
7) 構造一個條件FP樹,它由路徑中的項集計數構成。在條件FP樹中考慮滿足閾值支持的項集。
8) 頻繁模式由條件FP樹生成

3.3 算法案例

設置支持度閾值為50%,置信度閾值為60%

構建FP樹
1.考慮到根節點為空(null)。

2.T1:I1、I2、I3的第一次掃描包含三個項目{I1:1}、{I2:1}、{I3:1},其中I2作為子級鏈接到根,I1鏈接到I2,I3鏈接到I1。

再次掃描數據庫並檢查事務。檢查第一個事務並找出其中的項集。計數最大的項集在頂部,計數較低的下一個項集,以此類推。這意味着樹的分支是由事務項集按計數降序構造的。

3.T2:包含I2、I3和I4,其中I2鏈接到根,I3鏈接到I2,I4鏈接到I3。但是這個分支將共享I2節點,就像它已經在T1中使用一樣。將I2的計數增加1,I3作為子級鏈接到I2,I4作為子級鏈接到I3。計數是{I2:2},{I3:1},{I4:1}。

4.T3:I4、I5。類似地,在創建子級時,一個帶有I5的新分支鏈接到I4。

5.T4:I1、I2、I4。順序為I2、I1和I4。I2已經鏈接到根節點,因此它將遞增1。同樣地,I1將遞增1,因為它已經鏈接到T1中的I2,因此{I2:3},{I1:2},{I4:1}。

6.T5:I1、I2、I3、I5。順序為I2、I1、I3和I5。因此{I2:4},{I1:3},{I3:2},{I5:1}。

7.T6:I1、I2、I3、I4。順序為I2、I1、I3和I4。因此{I2:5},{I1:4},{I3:3},{I4 1}。

FP-tree的挖掘總結如下:

1.不考慮最低節點項I5,因為它沒有達到最小支持計數,因此將其刪除。

2.下一個較低的節點是I4。I4出現在兩個分支中,{I2,I1,I3,I4:1},{I2,I3,I4:1}。因此,將I4作為后綴,前綴路徑將是{I2,I1,I3:1},{I2,I3:1}。這形成了條件模式基。

3.將條件模式基視為事務數據庫,構造FP樹。這將包含{I2:2,I3:2},不考慮I1,因為它不滿足最小支持計數。

4.此路徑將生成所有頻繁模式的組合:{I2,I4:2},{I3,I4:2},{I2,I3,I4:2}

5.對於I3,前綴路徑將是:{I2,I1:3},{I2:1},這將生成一個2節點FP樹{I2:4,I1:3},並生成頻繁模式:{I2,I3:4},{I1:I3:3},{I2,I1,I3:3}。

6.對於I1,前綴路徑是:{I2:4}這將生成一個單節點FP樹:{I2:4},並生成頻繁模式:{I2,I1:4}

“條件模式基” 指的是以要挖掘的節點為葉子節點,自底向上求出 FP 子樹,然后將FP 子樹的祖先節點設置為葉子節點之和。

下面給出的圖描繪了與條件節點l3相關聯的條件FP樹。

3.4 FP-Growth算法的優缺點

FP-Growth算法的優點:

1.與Apriori算法相比,該算法只需對數據庫進行兩次掃描
2.該算法不需要對項目進行配對,因此速度更快。
3.數據庫存儲在內存中的壓縮版本中。
4.對長、短頻繁模式的挖掘具有高效性和可擴展性。

FP-Growth算法的缺點:

1.FP-Tree比Apriori更麻煩,更難構建。
2.可能很耗資源。
3.當數據庫較大時,算法可能不適合共享內存

四、參考資料

  1. Prof. Andrew Ng. Machine Learning. Stanford University
  2. 《統計學習方法》,清華大學出版社,李航著,2019年出版
  3. 《機器學習》,清華大學出版社,周志華著,2016年出版
  4. Christopher M. Bishop, Pattern Recognition and Machine Learning, Springer-Verlag, 2006
  5. Stephen Boyd, Lieven Vandenberghe, Convex Optimization, Cambridge University Press, 2004
  6. https://www.icourse163.org/course/WZU-1464096179


免責聲明!

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



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