Apriori算法用來找出頻繁出現的數據集合。
1. 頻繁項集的評估標准
常用的頻繁項集的評估標准有支持度、置信度、提升度三個。
支持度:幾個關聯數據在數據集中出現的次數占總數據集的比重。或者說幾個關聯數據出現的概率。
比如兩個想分析關聯性的數據X和Y,則支持度為:
以此類推,三個想分析關聯性的數據X、Y、Z,則支持度為:
一般來說,支持度高的數據不一定構成頻繁項集,但是支持度低的肯定不構成頻繁項集。
置信度:一個數據出現后,另一個數據出現的概率。或者說數據的條件概率。
比如兩個想分析關聯性的數據X和Y,則置信度為:
以此類推,三個想分析關聯性的數據X、Y、Z,則置信度為:
舉個例子,在購物數據中,紙巾對應雞爪的置信度為40%,支持度為1%。則意味,總共有1%的用戶既購買了雞爪又買了紙巾;同時買雞爪的用戶有40%的用戶購買紙巾。
提升度:在含有Y的條件下,同時含有X的概率,與X總體發生的概率之比,即: 置信度與X總體發生的概率之比。
提升度大於1則X<=Y是有效的強關聯規則。提升度小於等於1則X<=Y是無效的強關聯規則。如果X和Y獨立,則lift(X<=Y) = 1,因為此時p(X|Y) = p(X)。
2. Apriori算法思想
對於Apriori算法,我們使用支持度作為判斷頻繁項集的標准。Apriori算法的目標是找到最大的K項頻繁集。這里有兩層意思,
第一層,要找到符合支持度標准的頻繁集。但是這樣的頻繁集可能有很多。
第二層,要找到最大個數的頻繁集。比如找到符合支持度的頻繁集AB和ABE,那么會拋棄AB,只保留ABE,因為AB是2項頻繁集,而ABE是3項頻繁集。
Apriori算法挖掘K項頻繁集過程:
Apriori算法采用迭代的方法,先搜索候選1項集及對應的支持度,剪枝去掉低於支持度的1項集,得到頻繁1項集。然后對剩下的頻繁1項集進行連接,得到候選的頻繁2項集,篩選去掉低於支持度的候選頻繁2項集,得到真正的頻繁2項集,以此類推,迭代下去,直到無法找到頻繁k+1項集為止,對應的頻繁k項集的集合即為算法的輸出結果。
可見,這個算法很簡潔,第i次的迭代過程包括掃描計算候選頻繁i項集的支持度,剪枝得到真正頻繁i項集和連接生成候選頻繁i+1項集第三步。
用下面這個簡單例子演示:
數據集D有4條記錄,分別是134,235,1235和25。現在用Apriori算法來尋找頻繁k項集,最小支持度設置為50%。首先我們生成候選頻繁1項集,包括我們所有的5個數據並計算5個數據的支持度,計算完畢后我們進行剪枝,數據4由於支持度只有25%被剪掉。我們最終的頻繁1項集為1235,現在我們鏈接生成候選頻繁2項集,包括12,13,15,23,25,35共6組。此時我們的第一輪迭代結束。
進行第二輪迭代,我們掃描數據集計算候選頻繁2項集的支持度,接着進行剪枝,由於12和15的支持度只有25%而被篩除,得到真正的頻繁2項集,包括13,23,25,35。現在我們鏈接生成候選頻繁3項集,123,135,和235共3組,這部分圖中沒有畫出。通過計算候選頻繁3項集的支持度,我們發現123和135的支持度均為25%,因此接着被剪枝,最終得到的真正頻繁3項集為235一組。由於此時我們無法再進行數據鏈接,進而得到候選頻繁4項集,最終的結果即為頻繁3項集235。