本文主要介紹頻繁模式挖掘算法,以及其典型的應用和Apriori算法。
頻繁模式挖掘,相關性挖掘,關聯規則學習,Apriori算法等等,這些看似不同但本質上一樣的概念一直以來被用于描述數據挖掘的相關內容。所謂的數據挖掘是指利用統計的方法從某個數據集中發現有價值的、未被人所知的規律。我們用分類或者聚類的方法,只是想挖掘數據集內各個子集的相互關系,尋找哪些事物經常同時出現,哪些事物相互依附,以及哪些事物存在聯系。
因此,我們這個視角來理解數據挖掘這個概念。在后文中,我將用頻繁模式挖掘來指代數據挖掘這一概念,也有人喜歡稱為關聯挖掘。
頻繁模式指的是在數據集中頻繁出現的一類模式。頻繁項集指的是由包含某一類頻繁模式的元素組成的集合。因此,頻繁模式挖掘也常被叫做頻繁項集挖掘。
購物籃分析(或是親密性分析)是介紹頻繁模式挖掘的佳案例,它是眾所周知的頻繁模式挖掘應用之一。購物籃分析試圖從消費者加入購物籃的商品中挖掘出某種模式或者關聯,可以是真實的購物籃,也可以是虛擬的,并且給出支持度或是置信度。這一方法在用戶行為分析中存在巨大的價值。
將購物籃分析推而廣之就成了頻繁模式挖掘,實際上它與分類非常類似,只是通過相互的關聯來預測屬性或是屬性的組合(不僅僅是預測類別)。因為關聯不需要預標記類別標簽,所以它屬于非監督式學習。
如果我們把所有的物品都看作是我們集合中的一個元素(或是商店售賣的所有商品,或是用于欺詐檢測分析的所有交易記錄),那么每個元素可以用一個布爾值表示,表示該元素是否出現在某個特定的“籃子”里。每個籃子就是一個布爾值的向量,而向量的長度由集合的大小決定。所有可能的向量組成的矩陣就是一個數據集。
我們接下來就用這個布爾向量集合來分析元素之間的關聯關系、相關關系和挖掘模式。表示這些模式的常用的方法之一是通過關聯規則,其中的一個例子如下:
milk => bread [support = 25%, confidence = 60%]
我們怎么知道一條規則的價值究有多少呢?這時候就需要用到支持度和置信度這兩個指標了。
支持度是度量模式或者物品成對出現的絕對次數。在上面的例子里,25%的支持度表示牛奶和面包被共同購買的次數占到所有交易次數的25%。
置信度是度量模式或者物品成對出現的相對次數。在上面的例子里,60%的置信度表示購買牛奶的客戶中,有60%的客戶同時也購買了面包。
在一個給定的場景中,通常需要置信度和支持度都大于設定的閾值,這條關聯規則才能成立,這條規則才有利用價值。
Apriori是廣為人知的頻繁模式挖掘算法。還是以購物籃分析為例,Apriori的數據集是一個巨大的稀疏矩陣,每一行是一單交易,每一列表示這單交易成交的若干個商品。
假設總共有n個商品,Apriori算法首先生成一個候選商品列表長度是2~n-1。用組合的方式可以計算出所有可能的組合情況的個數:
C(n,n-(n+2)) + C(n,n-(n+3)) + … + C(n,n-1)
上式也可以用二項分布的系數來表示。
如果數據集非常龐大,那這個計算過程會很耗時。
算法需要輸入小支持度的閾值。首先,這個算法生成一個候選集合的列表,包括了了數據集中可能出現的所有組合。候選集合生成后,如果其在交易記錄中出現的頻率大于閾值,則認為它是一個頻繁項集。
遍歷頻繁項集的集合可以很容易得到關聯規則及其置信度。置信度的計算公式如下:
Confidence(A=>B) = Support(AUB) / Support(A)
Apriori的算法其實很簡單,就是找出所有滿足支持度和置信度小閾值的規則。但是候選的集合會隨著商品數量的增加而呈指數式增長。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。