第二章、頻繁模式、關聯規則和相關規則挖掘
關聯規則挖掘算法可以從多種數據類型中發現頻繁項集,包括數值數據和分類數據,基礎算法有Apriori算法和FP-Growth算法。
1.關聯模式和關聯規則
1.1 模式和模式發現(頻繁模式可以有以下幾種形式)
1.1.1頻繁項集
項集:項集就是項的集合,例如:{礦泉水,泡面,火腿} 這是一個3項集,項集的出現頻度是包含項集的事務數,把它記作支持度計數,通俗的來說,假設有三個顧客分別買了{礦泉水,泡面,火腿}、{礦泉水,泡面,火腿、牛欄山}、{礦泉水,火腿}。那么這個3項集的支持度計數就是2。
頻繁項集:如果我們預定義的支持度計數是2,也就是此時的支持度計數閾值為2,而上述的3項集的支持度計數是2,所以該3項集是頻繁項集。
Apriori原理:如果某個項集是頻繁的,那么該項集的任何一個子集也一定是頻繁的。
為優化頻繁項集生成算法,提出一些概念:閉項集、最大頻繁項集、約束頻繁項集、近似頻繁項集、top-k頻繁項集
1.1.2頻繁子序列
頻繁子序列是元素的一個有序列表,其中每個元素包含至少一個事件。
序列包含的項數定義為序列的長度,長度為k的序列定義為k序列。子序列和超序列是對應的
1.1.3頻繁子結構
在某些領域中,研究任務可借助圖論來進行建模,子圖就是一個子結構,如果頻繁就成為了頻繁子結構。
1.2 關系和規則發現(基於已發現的頻繁模式,可以挖掘關聯規則,根據關系的興趣度不同側重點,有下面兩種類型的關系)
1.2.1關聯規則
關聯分析可以從數據集中發現有意義的關系,這種關系可以表示成關聯規則或頻繁項集的形式。
當X∩Y=∅(X,Y不相交),則X—>Y是關聯規則。規則的興趣度通過支持度和置信度測量。
支持度表示數據集中規則出現的頻率。
置信度測量在X出現的前提下,Y出現的可能性。
可能遇到的不同種類的規則:布爾關聯規則、單維(指的維度上的關系)關聯規則、多維關聯規則、相關關聯規則、定量關聯規則(至少一個項或屬性是定量的)
1.2.2相關規則
在某些情況下,僅僅憑借支持度和置信度不足以過濾掉無意義的關聯規則,此時需要利用支持計數、置信度和相關性對關聯規則進行篩選。
計算關聯規則的相關性的一些方法:卡方分析、全置信度分析、余弦分析等。
2.購物籃分析(用來挖掘消費者已購買或保存在購物車中物品組合規律的方法)
2.1 購物籃模型
說明購物籃和其關聯的商品之間的關系的模型。
Apriori算法是逐層挖掘項集的算法。與Apriori算法不同,Eclat算法是基於事務標識項集合交集的TID集合交集項集的挖掘算法,而FP-Growth算法是基於頻繁模式樹的算法。TID集合表示交易記錄標識號的集合。
以下2.2——2.6都是來尋找頻繁項集的算法策略(其中Apriori算法是基礎,其他為改進算法)
2.2 Apriori算法
Apriori算法挖掘關聯規則可以分解為以下兩個問題:1.頻繁項集生成 2.關聯規則生成
具體參考算法解析: https://blog.csdn.net/huihuisd/article/details/86489810
2.3 Eclat算法
Apriori算法循環的次數與模式的最大長度是一樣的。Eclat算法是為了減少循環次數而設計的算法,數據輸入格式是樣本購物籃文件中的垂直格式(從事務數據集中發現的頻繁模式)
具體參考算法解析: https://blog.csdn.net/ARPOSPF/article/details/86632408
2.4 FP-growth算法
該算法是在大數據集中挖掘頻繁項集的高校算法,該算法不需要生成候選項集,而是使用模式增長策略。頻繁模式(FP)樹是一種數據結構。
采用頻繁模式樹才存儲事務項集。自上而下生成樹結構,要用到遞歸方式查找頻繁模式。
具體參考算法解析: https://blog.csdn.net/baixiangxue/article/details/80335469
上述三種算法的比較: https://www.cnblogs.com/infaraway/p/6774521.html
2.5 基於最大頻繁項集的GenMax算法
該算法用於挖掘最大頻繁項集,增加多步來檢查最大頻繁項集而不只是頻繁項集,這部分基於Eclat算法的事務編號集合交集運算,差集用於快速頻繁檢驗。可以通過候選最大頻繁項集的定義來確定它。假定最大頻繁項集記為M,若X屬於M,且X是新得到的頻繁項集Y的超集,則Y被丟棄;然而,若X是Y的子集,則將X從M中移除。
2.6 基於頻繁閉項集的Charm算法
用於高效挖掘頻繁閉項集。
閉項集:給定數據集S,如果對於元素Y是S中的一個項集,X也是Y的一個子集,如果X的支持計數不等於Y的支持計數,那么X成為閉項集,如果X是頻繁的,則X是頻繁閉項集。
通過頻繁閉項集,可以得到具有相同支持度的最大頻繁模式。這樣可以對冗余的頻繁模式進行剪枝。Charm算法還利用垂直事務編號集合的交集運算來進行快速的封閉檢查。
2.7 關聯規則生成算法
根據算法生成的頻繁項集,計算並保存每個頻繁項集的支持計數以便於后面的關聯規則挖掘過程。
為生成關聯規則X—>Y,l =X∪Y,l 為某個頻繁項集,需要以下兩個步驟:
①首先得到 l 的所有非空子集
②然后,對於 l 的子集X,Y= l -X,規則X—>Y為強關聯規則,當且僅當confidence(X—>Y)>=minimumconfidence。一個頻繁項集的任何規則的支持計數不能小於最小支持計數。
3.混合關聯規則挖掘
3.1 多層次和多維度關聯規則挖掘
對於給定的事務數據集,若數據集的某些唯獨存在概念層次關系,則需要對該數據集進行多層次關聯規則挖掘。
3.2 基於約束的頻繁模式挖掘
基於約束的頻繁模式挖掘是使用用戶設定的約束對搜索空間進行剪枝的啟示式算法。
常見的約束有:知識類型約束(指定我們想要挖掘什么)、數據約束(對初始數據集的約束)、維度層次約束、興趣度約束、規則約束。
4.序列數據集挖掘
序列數據集挖掘的一個重要任務是序列模式挖掘。A-Priori-life算法被用來進行序列模式挖掘,采用廣度優先策略。
從序列模式中我們能夠發現商店消費者的常見購買模式。
一些常見的序列模式:序列規則、標簽序列規則、類序列規則
4.1 序列數據集
序列數據集S定義為元組(sid,s)的集合,其中sid為序列ID,s為序列。
在序列數據集S中,序列X的支持度定義為S中包含X的元組數,即
supports(X)={(sid,s)∨(sid,s)∈S<—X ⊆ s}
這是序列模式的一個內在性質,它應用於相關算法,如Apriori算法的Apriori性質,對於序列X及其子序列Y,support(X)≤ support(Y)。
4.2 GSP算法
廣義序列模式算法(GSP)是一個類似Apriori算法,但它應用於序列模式。該算法是逐層算法,采取寬度優先策略,具有以下特征:
(1)GSP算法是Apriori算法的擴展。它利用Apriori性質(向下封閉),即給定最小支持計數,若不接受某個序列,則其超序列也將丟棄。
(2)需要對初始事務數據集進行多次掃描。
(3)采用水平數據格式。
(4)每次掃描中,通過將前一次掃描中發現的模式進行自連接來產生候選項集。
(5)在第k此掃描中,僅當在第(k-1)次掃描中接受所有的(k-1)子模式,才接受改序列模式。
具體算法參考解析: https://www.cnblogs.com/liuqing910/p/8964863.html
5.R語言實現規則挖掘
Spade算法,使用等價類的序列模式發現算法是應用於序列模式的垂直挖掘算法,它采用深度優先的策略,算法特征是:
(1)SPADE算法是Apriori算法的拓展
(2)算法采用Apriori性質
(3)需要對初始數據集進行多次掃描
(4)采用垂直數據格式
(5)算法采用簡單的連接運算
(6)所有序列的發現都需要對數據進行三次掃描
從序列模式中生成規則:
序列規則、標簽序列規則和類序列規則都可以從序列模式中生成,這些也可以從前面的序列模式發現算法中得到。
6.高性能算法
7.參考資料:
一些算法總結的很好的PPT: https://wenku.baidu.com/view/1142185f30b765ce0508763231126edb6f1a7628.html
https://wenku.baidu.com/view/7c60f77e86c24028915f804d2b160b4e777f8178.html
關於項集的一些定義: https://blog.csdn.net/u013007900/article/details/54743395
下一章將介紹基本分類算法,包括ID3、C4.5和CART等算法,同時也是數據挖掘的重要應用