1.基於先驗原理的剪枝
先驗原理:如果乙個項集是頻繁的,則它的所有子集一定也是頻繁的。相反,如果乙個項集是非頻繁的,則他的所有超集也是非頻繁的。
先驗原理的理解也很簡單,將支援度的公式列出來,我們可以發現,項集的支援度不會小於它的超集。
基於這個原理,如果項集是非頻繁的,則我們不用去判斷,因為肯定是非頻繁的。這就是基於支援度的剪枝。可以不用去判別所有的項集,因為有一部分項集是否頻繁是可以基於它的子集推出來的。
2.候選項集的產生
最開始將每個項集都看作是候選項集,再通過計算得到第一批頻繁項集。
通過合併上一輪產生的頻繁(k-1)項集,只有當它們的前k-2項都相同時,才合併生成k項集。
例如對於,,這三個項集,最開始,我們將生成第一批1-項集 ,,,,再通過兩個相同的1-項集產生2-項集 即生成了,,,,,。再通過兩個2-項集生成3-項集,,,,以此類推…
注意是由和合成的,而不是有和合成的,因為和的第一項不同,乙個為a,乙個為b,所以不能合併。
3.支援度計數(hash樹)
4.規則產生
規則的產生是基於上面3點之後,產生了候選項集,再從這些候選項集中產生規則,最後篩選出置信度高的規則。
注意這裡計算置信度時並不需要再次掃瞄資料集,因為置信度公式為:
主要由兩大部分組成,第一部分是找出頻繁項集,第二部分是找出強規則。
1.找出頻繁項集
通過合併頻繁(k-1)-項集產生k-項集,再通過剪枝原理,從這批k-項集中篩選出一批項集(以此來減少後面hash計數的計算量),從篩選出的k-項集進行hash計數,找出頻繁k-項集。再合併頻繁k-項集生成(k+1)項集…以此類推。
2.找出強規則
從上一步產生的頻繁項集中,組合成規則,從中找出強規則。
接下來用乙個例子用apriori演算法來走一遍關聯規則的流程(本例子預定義的支援度為2),下圖是事物資料,9個顧客分別買了不同的商品列表(我們假定i1表示泡麵,i2表示礦泉水,i3表示牛欄山,i4表示雪碧,i5表示火腿)。首先我們要做的是第一次迭代,掃瞄所有的事物,對每個項進行計數得到候選項集,得到如下圖所示的結果,記為c1。
此時,我們要對支援度計數和支援度的閾值進行比較,剔除小於支援度閾值的項集,顯而易見,在本例中c1的項集都達到了閾值。我們便可以得出頻繁1項集記作l1
接下來我們要進行第二次迭代,目的是得出頻繁2項集,所以要使用連線來產生候選項集2項集。l1
連線這一步,我們把它叫做連線步,連線得到c2後,接下來做的是剪枝步,就是剪掉項集中包含不頻繁項的項集,在本例中1項集全部都是頻繁項集,例如中沒有不頻繁項集,此項集不剪,中沒有不頻繁項集,同理不剪,以此類推。所以c2中所有的項集都不需要剪掉。到此連線步、剪枝步全部完成。(這裡值得注意的是剪枝是必須的一步,不能省略)最後再計一下數得出最終的c2。如下圖所示。
將支援度計數小於閾值2的全部剔除,得出頻繁2項集l2,如下圖所示。
現在開始進行第三次迭代,l2
在這一步同樣是經過了連線步和剪枝步。l2自連線得到
然而除了
得到候選項集c3後與支援度閾值比較,得出頻繁3項集l3。
現在繼續第四次迭代,l3 自連線得到
,接下來剪枝,因為這個項集中不屬於l3,所以剪掉,c4為空了,所以演算法到此結束,現在得出了所有的頻繁項集。
到此為止,我們做完了第一步:找出所有的頻繁項集。接下來要做的便是輸出強關聯規則。
現在我們拿x =
為例,輸出關聯規則。x的非空子集為、、、、、。所以組合一下關聯規則如下:
通過查詢l3,的支援度計數為2,通過查l2,的支援度計數為4。即最終可以計算出confidence =
= 50%。剩下的以此類推,假定我們預定義70%的置信度。在這些規則中,我們可以輸出強關聯規則的只有三個。即三個100%置信度的規則。那麼我們可以得到買泡麵和火腿的一定會買礦泉水,買礦泉水和火腿的一定會買泡麵,買火腿的一定會買泡麵和礦泉水這三個關聯規則。
Apriori演算法 關聯分析
apriori演算法是資料探勘演算法中的重要一員,它是通過對資料集進行關聯分析,從而分析出資料集裡項與項之間的關聯關係。演算法最簡單直接的應用,當屬對超市裡被購買的物品的關聯分析,從而挖掘出顧客購買產品及其附屬產品的關係,例如經典的尿布與啤酒,或者現在各大電商 上,當入手一樣物品後,會給推送來各種很...
資料探勘演算法 關聯分析二(Apriori)
上文說到,大多數關聯規則挖掘演算法通常採用的策略是分解為兩步 頻繁項集產生,其目標是發現滿足具有最小支援度閾值的所有項集,稱為頻繁項集 frequent itemset 規則產生,其目標是從上一步得到的頻繁項集中提取高置信度的規則,稱為強規則 strong rule 通常頻繁項集的產生所需的計算遠大...
關聯分析演算法Apriori介紹
apriori 演算法其名字是因為演算法基於先驗知識 prior knowledge 根據前一次找到的頻繁項來生成本次的頻繁項。apriori 是關聯分析中核心的演算法。apriori 演算法的特點 只能處理分類變數,無法處理數值型變數 資料儲存可以是交易資料格式 事務表 或者是事實表方式 資料 演...