我們是通過算法來找到數據之間的關聯規則(兩個物品之間可能存在很強的相關關系)和頻繁項集(經常出現在一起的物品的集合)。
我們是通過支持度和置信度來定義關聯規則和頻繁項集的
一個項集支持度是指在所有數據集中出現這個項集的概率,項集可能只包含一個選項,也有可能是多個選項的組合。

置信度 針對於啤酒——>尿布這樣的關聯規則來定義,計算方式為支持度(啤酒,尿布)/支持度啤酒,其中支持度(啤酒、尿布)為3/5,支持度啤酒為4/5,所以他的置信度為3/4,即置信度為75%,這意味着在啤酒的規則中,有0.75的規則都適用。
但是在這樣的規則中,如果需要求出所有規則,那么計算量比較大,這就可以用到 Apriori算法
Apriori 的原理:如果某個項集是頻繁項集,那么它所有的非空子集也是頻繁的(先驗原理)。即如果 {0,1} 是頻繁的,那么 {0}, {1} 也一定是頻繁的。反過來能發現如果一個項集是非頻繁的,那么它的所有超集也是非頻繁的。這樣就不用計算他的支持度了,可以減少計算量。
計算步驟為:
先會生成所有單個物品的項集列表, 掃描交易記錄來查看哪些項集滿足最小支持度要求(一般會給一個最小支持度),那些不滿足最小支持度的集合會被去掉,對剩下的集合進行組合以生成包含兩個元素的項集,接下來重新掃描交易記錄,去掉不滿足最小支持度的項集,重復進行直到所有項集都被去掉。
提高Apriori算法的效率
1、基於散列的技術
當掃描數據庫中的每個事務時,由C1中的候選頻繁項集1項集產生頻繁項集1項集L1時,可以對每個事務產生所有的2項集,將他們散列(映射)到散列表中的不同桶中,並增加對應的桶計數。在散列表中,對應桶計數低於支持度閾值的2項集不可能是頻繁的,可以刪除掉。
2、事物壓縮
不包含任何頻繁項集的K項集的事務不可能包含任何頻繁(K+1)項集。這種事務在之后的考慮時,可以被標記或者刪除,因為產生的j項集(j>K) 的數據庫掃描不再需要他們。
3、划分
包含兩個階段,第一階段,算法把D中的事務分成n個非重疊的分區,如果D中事務的最小相對支持度閾值為p,則每個分區的最小支持度為p乘該分區中的事務數。對每個分區,找到所有的局部頻繁項集。 階段二是,再次掃描D,評估每個候選的實際支持度,以確定全局頻繁項集。
4、抽樣
選取給你定數據庫D中的隨機樣本S,然后在S而不再D中搜索頻繁項集。
5、動態項集技術
