回覆列表
  • 1 # 使用者2640307401818

    首先重申一下Apriori演算法的兩個條件,頻繁意思就是計數大於自定義支援度閾值:

    任何頻繁項集的非空子集都是頻繁的;任何非頻繁項集的超集都是非頻繁的;

    1.輸入:T-交易集,ϵ-自定義支援度閾值;

    2.L1是一項頻繁項集,large1-itemsets具體是指交易集裡所有數量大於ϵ的項的集合,是數字1,是分隔符,itemsets是對T裡出現的所有單項交易的統計;

    3.L1已初始化,意即單項頻繁項集已找出,接下來要找二項頻繁項集,故k初始化為2;

    4.注意在while迴圈中,Lk-1是從L1開始的(因為k被初始化為2),L1不是空集,之後如你所說k<-k+1,逐次累加找到包含項數更多的關聯規則,Lk中儲存的就是關聯規則,關聯規則的形式是k-項集;

    5.在此Ck可以理解為儲存關聯規則的中間變數,裡面儲存的是k-項集的所有可能,但未經篩選,不一定所有的k項集計數都大於ϵ。

    { aUb | a∈Lk-1 ∩ b∉a },a是Lk-1的某一元素(即某一k-1項集),b是一項頻繁集。意思是對Lk-1裡的k-1頻繁項集進行擴充套件,但必須滿足b不屬於a,舉個例子,a={A,B,C},b={D},此時{aUb|a∈Lk-1∩b∉a}={A,B,C,D},但如果b={B},則對{aUb|a∈Lk-1∩b∉a}不滿足b∉a,所以這一步就不會執行;{ c | {s | s⊆c ∩ |s|=k-1} ⫋ Lk-1 },c可以看作是Lk-1的補集(這樣說不嚴謹,純粹是為了便於題主理解),裡面儲存的是非頻繁項集,根據條件我們知道任何非頻繁項集的超集都是非頻繁的,所以要減去這些項;{ aUb | a∈Lk-1 ∩ b∉a } - { c | {s | s⊆c ∩ |s|=k-1} ⫋ Lk-1 }就是得到一個裡面全是頻繁項集的k-項集集合,命名為Ck。中間的是減號;

    6.Ct <- {c | c∈Ck ∩ c⊆t},符號 ∩ 是取交集的意思。對於Ck中的所有k-項集,如果在T中存在(有些項集由演算法組合生成,實際資料集T中未必存在),則將這些項集放到一個新的容器Ct中;

    7.是計算Ct中所有k-項集的頻次;

    8.Lk儲存的是所有頻繁k-項集且計數頻次大於ϵ,也就是我們要得到的關聯規則;

    9.U Lk返回的是{L1,L2,……Lk}所有k-項集集合,k最終停止在哪個值取決於交易集T和ϵ;

  • 中秋節和大豐收的關聯?
  • 在修飾照片的後期,如何新增浪漫陽光的效果比較好?