apriori推薦算法

Apriori算法是一種挖掘關聯規則的頻繁項集算法,其核心思想是經過候選集生成和情節的向下封閉檢測兩個階段來挖掘頻繁項集。算法



概念數據庫

(1)支持度(Support):定 義爲 supp(X) = occur(X) / count(D) = P(X)(有絕對支持度(個數)和相對支持度(百分比)之分)。
spa

(2)頻集:支持度大於最小支持度的項集稱爲頻繁項集,簡稱頻集,表示爲L[k]。頻繁集的子集必定是頻繁集。事務

(3)候選集(Candidate itemset):經過向下合併得出的項集。定義爲C[k]。it


Apriori 算法的核心是使用候選項集尋找頻繁項集。 Apriori 使用一種稱爲逐層搜索的迭代方法, k項集用於搜索( k+1 )項集。首先,找出全部頻繁 1- 項集 L1 ,而後用 L1 尋找 L2 ,用 L2 尋找 L3, 如此,直至不能找到頻繁 k- 項集爲止。
io


光看概念太抽象,看下面這個例子就明白是怎麼回事了。date

Apriori尋找頻繁項集的過程是一個不斷迭代的過程,每次都是兩個步驟,產生候選集Ck(可能成爲頻繁項集的項目組合);基於候選集Ck計算支持度,肯定Lk。
Apriori的尋找策略就是從包含少許的項目開始逐漸向多個項目的項目集搜索。
數據以下:
搜索


會員100購買了 1 3 4三種商品,那麼對應的集合形式如右邊的圖所示。那麼基於候選集C1,咱們獲得頻繁項集L1,設定的支持度爲2,支持度大於或者等於指定的支持度的最小閾值就成爲L1了,這裏{4}沒有成爲L1的一員。所以,咱們認定包含4的其餘項集都不多是頻繁項集,後續就再也不對其進行判斷了。
方法


此時咱們看到L1是符合最低支持度的標準的,那麼下一次迭代咱們依據L1產生C2(4就再也不被考慮了),此時的候選集如右圖所示C2(依據L1*L1的組合方式)確立。C2的每一個集合獲得的支持度對應在咱們原始數據組合的計數,以下圖左所示。
im


此時,第二次迭代發現了{1 2} {1 5}的支持度只有1,低於閾值,故而捨棄,那麼在隨後的迭代中,若是出現{1 2} {1 5}的組合形式將不被考慮。



如上圖,由L2獲得候選集C3,那麼此次迭代中的{1 2 3} { 1 3 5}哪去了?如剛纔所言,{1 2} {1 5}的組合形式將不被考慮,由於這兩個項集不可能成爲頻繁項集L3,此時L4不能構成候選集L4,即中止。
若是用一句化解釋上述的過程,就是不斷經過Lk的自身鏈接,造成候選集,而後在進行剪枝,除掉無用的部分。

上面看明白了下面這張圖你就能看懂了。



算法僞代碼

C[k]: 長度爲 k的候選項集   L[k] : 長度爲k的頻繁項集      L[1] = {頻繁項};   for (k = 1; L[k] !=∅; k++) do begin       C[k+1] = 由 L[k]產生的候選;       for each 數據庫中的事務t  do         增長包含在t 中的全部候選C[k+1]的計數       L[k+1] = C[k+1]中知足 min_support的候選       end   return   L[1..k];
相關文章
相關標籤/搜索