multihash 演算法
有時我們從
multistage
演算法的額外的步驟中獲取好處。這個
pcy的變形叫做
multihash[7]
演算法。不同於在連續的兩個步驟中使用兩個雜湊表,該演算法在一步中使用兩個雜湊演算法和兩個分離的雜湊表。如表
6.7所述。
在同一步裡使用兩個
hash
表的危險是每個雜湊表僅有
pcy演算法的一半的桶。只要
pcy演算法的桶的平均計數比支援度閾值低,我們就可以預見大部分的桶都是非頻繁桶,並可以在這兩個只有一半大小的雜湊表上操作完成。在這種情形下,我們選擇
multihash
方法。
對multihash
的第二步,每個
hash
表也會被轉換為乙個
bitmap
。注意,在圖
6.7中,兩個
bitmap
佔據的空間只有
pcy演算法的乙個
bitmap
的大小。項對
被放入候選集
c2的條件同
multistage:i
和j必須是頻繁的,且
對在兩個雜湊表中必須被
hash
到頻繁桶。 正如
multistage
演算法,在
multihash
演算法中,我們也可以不用限制只使用兩個
hash
表。在multihash
演算法的第一步中,我們也可以使用多個
hash
表。不過風險是桶的平均計數會超過閾值。在這種情況下,這裡會只有很少的非頻繁桶在每個
hash
表中。即使這樣,乙個項對必須被
hash
到每個hash
表的頻繁桶中並計數,並且,我們會發現,乙個非頻繁項對作為乙個候選的概率將上公升,而不是下降,無利反而有害。
圖3、multihash演算法使用多個hash表在第一步中,左圖為第一步處理,右圖為第二步處理
使用兩個雜湊表的危險是在第一步,每個雜湊表僅有
pcy雜湊表的一半的桶容量。只要
pcy桶的平均數目比支援的閾值低,我們就能操作兩個一半大小的雜湊表,其期望雜湊表的大多數桶不是頻繁的。這樣,在這種情形下,我們可以選擇
multihash
方法。
基於海量資料的關聯規則挖掘(五)
2.1基於hash的方法 首先是基於雜湊的演算法。基於雜湊的演算法仍是將所有所有資料放入記憶體的方法。只要在計算的過程中能夠滿足演算法對記憶體的大量需求,apriori 演算法能夠很好的執行。但在計算候選項集時特別是在計算候選項對 c2時需要消耗大量記憶體。針對 c2候選項對過大,一些演算法提出用來...
基於海量資料的關聯規則挖掘(十一)
上面我們介紹的都是基於 apriori 的頻集方法。即使進行了優化,但是 apriori 方法一些固有的缺陷還是無法克服 可能產生大量的候選集。當長度為1的頻集有10000個的時候,長度為2的候選集個數將會超過10m。還有就是如果要生成乙個很長的規則的時候,要產生的中間元素也是巨大量的。無法對稀有資...
使用mahout做海量資料關聯規則挖掘
mahout是乙個基於hadoop的分布式資料探勘開源專案 mahout本來是指乙個騎在大象上的人 掌握了關聯規則的基本演算法和使用,加上分布式關聯規則挖掘後,就可以處理基本的關聯規則挖掘工作了,實踐中只需要把握業務,理解資料便可游刃有餘。安裝mahout 騎在大象上的俠士必然需要一頭雄糾糾的大象,...