Apriori算法總結(jié)
使用場景:
關聯(lián)分析,是一種挖掘數(shù)據(jù)集中關聯(lián)關系的方法。比如 購物時,購買 尿不濕,和買啤酒的關聯(lián)關系。購買粉底和眼霜 的關聯(lián)關系等等。為了挖掘出一些,肉眼不易看出的 數(shù)據(jù)集之間的關系,并加以解讀。統(tǒng)計數(shù)據(jù)集中出現(xiàn)某項數(shù)據(jù)的出現(xiàn)頻率,來確定該行為的可信度。這是使用場景。
原理:
該算法會統(tǒng)計一階項、二階項,以此類推多階項,在數(shù)據(jù)集中出現(xiàn)的頻度。并通過支持度來設置閾值,低于閾值頻度的將會被篩選掉。并計算出每個關聯(lián)關系的置信度。置信度越高,說明關聯(lián)關系越強。支持度越高,說明出現(xiàn)頻率越高,越是可信的。
支持度和可信度。
1、一個項集的支持度(support)
表示同時購買X、Y的訂單數(shù)占總訂單數(shù)(研究關聯(lián)規(guī)則的“長表”中的所有購買的產(chǎn)品的訂單數(shù))的比例。如果用P(X)表示購買X的訂單比例,其他產(chǎn)品類推,那么

2、可信度或置信度(confidence)
表示購買X的訂單中同時購買Y的比例,即同時購買X和Y的訂單數(shù)占購買X的訂單的比例。公式表達:

3、提升度
提升度反映了關聯(lián)規(guī)則中的X重點內(nèi)容與Y的相關性:提升度 >1 且越高表明正相關性越高;提升度 <1 且越低表明負相關性越高;提升度 =1 表明沒有相關性。

算法流程:

Apriori算法偽代碼:
Procedure apriori(D,min_sup)
L1 =find_frequent_1-itemsets(D); // 找出頻繁 1 項集
for(k=2;Lk-1 !=null;k++)
{
Ck =apriori_gen(Lk-1 ); // 產(chǎn)生候選,并剪枝
// 掃描 D 進行候選計數(shù)
for each 事務t in D{
Ct =subset(Ck,t); // 得到 t 的子集
for each 候選 c 屬于 Ct
c.count++;
Lk ={c 屬于 Ck|c.count>=min_sup} //返回候選項集中不小于最小支持度的項集
}
return L= 所有的頻繁集;
第一步:連接(join)
Procedure apriori_gen (Lk-1:frequent(k-1)-itemsets)
for each 項集 l1 屬于 Lk-1
for each 項集 l2 屬于 Lk-1
if((l1[1]=l2[1])&(l1[2]=l2[2])&…&(l1[k-2]=l2[k-2])&(l1[k-1]<l2[k-1]))
then{
c = l1 連接 l2 // 連接步:產(chǎn)生候選
//若k-1項集中已經(jīng)存在子集c則進行剪枝
if has_infrequent_subset(c,Lk-1 )
then delete c; // 剪枝步:刪除非頻繁候選
else add c to Ck;
}
return Ck;
第二步:剪枝(prune)
Procedure has_infrequent_sub (c:candidate k-itemset;Lk-1 :frequent(k-1)-itemsets)
for each (k-1)-subset s of c
if s 不屬于 Lk-1
then return TRUE;
return FALSE;
如需源碼,請私信我。
參考資料1:https://blog.csdn.net/weixin_39220714/article/details/83595519
參考資料2:https://www.csdn.net/tags/MtTaEg5sOTQ5NjUtYmxvZwO0O0OO0O0O.html