導(dǎo)讀

隨著大數(shù)據(jù)概念的火熱,啤酒與尿布的故事廣為人知。我們?nèi)绾伟l(fā)現(xiàn)買啤酒的人往往也會(huì)買尿布這一規(guī)律?數(shù)據(jù)挖掘中的用于挖掘頻繁項(xiàng)集和關(guān)聯(lián)規(guī)則的Apriori算法可以告訴我們。本文首先對Apriori算法進(jìn)行簡介,而后進(jìn)一步介紹相關(guān)的基本概念,之后詳細(xì)的介紹Apriori算法的具體策略和步驟,最后給出Python實(shí)現(xiàn)代碼。

1.Apriori算法簡介

Apriori算法是經(jīng)典的挖掘頻繁項(xiàng)集和關(guān)聯(lián)規(guī)則的數(shù)據(jù)挖掘算法。A priori在拉丁語中指"來自以前"。當(dāng)定義問題時(shí),通常會(huì)使用先驗(yàn)知識(shí)或者假設(shè),這被稱作"一個(gè)先驗(yàn)"(a priori)。Apriori算法的名字正是基于這樣的事實(shí):算法使用頻繁項(xiàng)集性質(zhì)的先驗(yàn)性質(zhì),即頻繁項(xiàng)集的所有非空子集也一定是頻繁的。Apriori算法使用一種稱為逐層搜索的迭代方法,其中k項(xiàng)集用于探索(k+1)項(xiàng)集。首先,通過掃描數(shù)據(jù)庫,累計(jì)每個(gè)項(xiàng)的計(jì)數(shù),并收集滿足最小支持度的項(xiàng),找出頻繁1項(xiàng)集的集合。該集合記為L1。然后,使用L1找出頻繁2項(xiàng)集的集合L2,使用L2找出L3,如此下去,直到不能再找到頻繁k項(xiàng)集。每找出一個(gè)Lk需要一次數(shù)據(jù)庫的完整掃描。Apriori算法使用頻繁項(xiàng)集的先驗(yàn)性質(zhì)來壓縮搜索空間。

2. 基本概念