apriori
演算法其名字是因為演算法基於先驗知識
(prior knowledge).
根據前一次找到的頻繁項來生成本次的頻繁項。
apriori
是關聯分析中核心的演算法。
apriori
演算法的特點
只能處理分類變數,無法處理數值型變數;
資料儲存可以是交易資料格式(事務表),或者是事實表方式(**資料);
演算法核心在於提公升關聯規則產生的效率而設計的。
apriori
的思想正如我們之前所提到的,我們希望置信度和支援度要滿足我們的閾值範圍才算是有效的規則,實際過程中我們往往會面臨大量的資料,如果只是簡單的搜尋,會出現很多的規則,相當大的一部分是無效的規則,效率很低,那麼
apriori
就是通過產生頻繁項集,然後再依據頻繁項集產生規則,進而提公升效率。
以上所說的代表了
apriori
演算法的兩個步驟:產生頻繁項集和依據頻繁項集產生規則。
那麼什麼是頻繁項集?
頻繁項集就是對包含專案
a的專案集
c,其支援度大於等於指定的支援度,則c(
a)為頻繁項集,包含乙個專案的頻繁項集稱為頻繁
1-項集,即l1。
為什麼確定頻繁項集?
剛才說了,必須支援度大於我們指定的支援度,這也就是說能夠確定後面生成的規則是在普遍代表性上的專案集生成的,因為支援度本身的高低就代表了我們關聯分析結果是否具有普遍性。
怎麼尋找頻繁項集?
這裡不再講述,直接說乙個例子大家就都明白了。例子**於
fast algorithms for mining association rules
apriori
尋找頻繁項集的過程是乙個不斷迭代的過程,每次都是兩個步驟,產生候選集
ck(可能成為頻繁項集的專案組合);基於候選集
ck計算支援度,確定lk。
apriori
的尋找策略就是從包含少量的專案開始逐漸向多個專案的專案集搜尋。
資料如下:
我們看到,資料庫儲存的資料格式,會員
100購買了
1 3 4
三種商品,那麼對應的集合形式如右邊的圖所示。那麼基於候選集
c1,我們得到頻繁項集
l1,如下圖所示,在此**中
的支援度為
1,而我們設定的支援度為
2。支援度大於或者等於指定的支援度的最小閾值就成為
l1了,這裡
沒有成為
l1的一員。因此,我們認定包含
4的其他項集都不可能是頻繁項集,後續就不再對其進行判斷了。
此時我們看到
l1是符合最低支援度的標準的,那麼下一次迭代我們依據
l1產生c2(
4就不再被考慮了),此時的候選集如右圖所示
c2(依據
l1*l1
的組合方式)確立。
c2的每個集合得到的支援度對應在我們原始資料組合的計數,如下圖左所示。
此時,第二次迭代發現了
的支援度只有
1,低於閾值,故而捨棄,那麼在隨後的迭代中,如果出現
的組合形式將不被考慮。
如上圖,由
l2得到候選集
c3,那麼這次迭代中的
哪去了?如剛才所言,
的組合形式將不被考慮,因為這兩個項集不可能成為頻繁項集
l3,此時
l4不能構成候選集
l4,即停止。
如果用一句化解釋上述的過程,就是不斷通過
lk的自身連線,形成候選集,然後在進行剪枝,除掉無用的部分。
根據頻繁項集產生簡單關聯規則
apriori
的關聯規則是在頻繁項集基礎上產生的,進而這可以保證這些規則的支援度達到指定的水平,具有普遍性和令人信服的水平。
以上就是
apriori
的演算法基本原理,留了兩個例子,可以加深理解。例子1
Apriori演算法 關聯分析
apriori演算法是資料探勘演算法中的重要一員,它是通過對資料集進行關聯分析,從而分析出資料集裡項與項之間的關聯關係。演算法最簡單直接的應用,當屬對超市裡被購買的物品的關聯分析,從而挖掘出顧客購買產品及其附屬產品的關係,例如經典的尿布與啤酒,或者現在各大電商 上,當入手一樣物品後,會給推送來各種很...
關聯分析(一) Apriori演算法
關聯分析分為非時序關聯分析和時序關聯分析,其中非時序關聯分析採用apriori演算法,利用先驗知識產生頻繁項集以及關聯規則,而時序關聯分析採用gsp演算法。apriori演算法 其名字是因為演算法基於先驗知識 prior knowledge 根據前一次找到的頻繁項來生成本次的頻繁項。apriori是...
Apriori關聯分析
對於一堆資料,我們不知道那些屬性是相關的。這個時候,我們就可以利用apriori演算法分析並發現相關的物品 或者說屬性。這些相關的屬性或者物品,就稱為頻繁項集。即在資料中頻繁出現的專案集合。基於頻繁項集,就能進一步分析其關聯規則。apriori作用是 進行關聯分析,關聯規則學習。屬於無監督學習的一種...