1. 程式人生 > >海量資料探勘MMDS week2: 頻繁項集挖掘 Apriori演算法的改進:非hash方法

海量資料探勘MMDS week2: 頻繁項集挖掘 Apriori演算法的改進:非hash方法

海量資料探勘Mining Massive Datasets(MMDs) -Jure Leskovec courses學習筆記之關聯規則Apriori演算法的改進:非hash方法 - 大資料集下的頻繁項集:挖掘隨機取樣演算法、SON演算法、Toivonen演算法

Apriori演算法的改進:大資料集下的頻繁項集挖掘

1. 前面所討論的頻繁項都是在一次能處理的情況。如果資料量過大超過了主存的大小,這就不可避免的得使用k步來計算頻繁項集。這裡有許多應用並不需要發現所有的頻繁項。比方說在超市,我們只要找到大部分的銷售頻繁關聯項就夠了,而不必找出所有的頻繁項。

2. Apriori演算法在計算頻繁多項集時,要一步一步計算,會有相當多的頻繁項集產生。這樣主存可能存在不足的痛苦。An alternative is to compress all the work into one or two passes.But It may have both false positives and false negatives.But if the data cooperates there will not be too many of either.

基於取樣的方法。基於前一遍掃描得到的資訊,對此仔細地作組合分析,可以得到一個改進的演算法,Mannila等先考慮了這一點,他們認為取樣是發現規則的一個有效途徑。

基於劃分的方法。Savasere等設計了一個基於劃分(partition)的演算法.這個演算法先把資料庫從邏輯上分成幾個互不相交的塊,每次單獨考慮一個分塊並對它生成所有的頻集,然後把產生的頻集合並,用來生成所有可能的頻集,最後計算這些項集的支援度。這裡分塊的大小選擇要使得每個分塊可以被放入主存,每個階段只需被掃描一次。而演算法的正確性是由每一個可能的頻集至少在某一個分塊中是頻集保證的。

Note: 演算法可行的標準是:幾乎沒有false negatives(頻繁項集當做非頻繁項集)和false positives(非頻繁項集被判為頻繁項集)。

隨機取樣演算法(基於取樣的方法)

簡單的隨機取樣演算法

不是使用整個檔案或籃子,我們使用籃子的一個子集的集合並假裝他們是整個資料集,並調整支援度的閾值來適應小籃子。

基本思路就是:先採樣部分basket,在其上執行Apriori(PCY...)演算法,並調整相應支援度閾值。

  

Note: 取樣得到的子資料集直接存入主存,第一次載入主存後,之後掃描資料子集就不用再次進行I/O操作了。

取樣方式

最安全的抽樣方式是讀入整個資料集,然後對於每個籃子,使用相同的概率p選擇樣品。假設這有m個籃子在整個檔案中。在最後,我們需要選擇的樣品的數量接近pm個籃子的樣品數。

但是如果我們事先知道這些籃子本身在檔案中就是隨機放置的,那麼我們就可以不用讀入整個檔案了,而是隻接選擇前面的pm個籃子作為樣品就可以了。或者如果檔案是分散式檔案系統,我們可以選擇第一個隨機塊作為樣品。

取樣大小

We choose some set of the baskets,not more than we'll fill perhaps half the main memory.
支援度閾值

我們使用籃子的一個子集並假裝他們是整個資料集。我們必須調整支援度的閾值來適應我們的小籃子。例如,我們針對完整資料集的支援度閾值為s,當我們選擇1%的樣本時,我們可以在支援度閾值為s/100的度量上測試。

當我們的樣品選擇完成,我們可以使用部分的主存來放置這些籃子。剩下的主存用來執行前面的Apriori、PCY、Multistage或Multihash演算法。當然這些演算法必須執行所有的樣品,在每個頻繁集上,直到找不到頻繁集為止。這個方法在執行讀取樣品時不需要磁碟操作,因為它是駐留在記憶體的。當每個頻繁項被發現,它們就可以寫到磁碟上了。

減少錯誤的隨機取樣演算法

抽樣可能導致是頻繁項的沒有放進頻繁集,也存在非頻繁項的放入了頻繁集。

當樣本足夠大時,問題變得不是那麼嚴重了;那些支援度遠大於閾值的項集即使在樣本中其支援度也會很高,所有誤分的可能性不大。但是那些支援度在閾值附近的就不好說了。

避免非頻繁項集被判為頻繁項集false positives

簡單的隨機取樣演算法並不需要對完整的大資料集進行一次掃描,但是我們可以通過對整個資料集的一遍掃描,計算所有樣品中頻繁項集的支援度,保留那些在樣品和在資料集上支援度都高於閾值的頻繁項集,以此避免非頻繁項集被判為頻繁項集的錯誤。然而這種方法不能避免那些是頻繁集卻被當做非頻繁項集的情況。

減少頻繁項集當做非頻繁項集的數量false negatives

但是我們可以減少那些是頻繁項集卻沒有在樣品中找出的數量如果記憶體的數量允許。我們設想如果s是支援閾值,且樣品相對於整個資料集的大小為p,這樣我們可以使用ps作為支援閾值。然而我們可以使用比這個值稍微小點的值作為閾值,如0.9ps。使用更低的閾值的好處是能使更多的項進入到頻繁集中,這樣就可以降低這種錯誤。The disadvantage of lowering the support threshold is that then you have to count more sets and there may not be enough main memory to do so.

然後再到整個資料集中計算這些頻繁項集的實際支援度(But then on the full pass you use the correct threshold s when counting from the entire set),除去那些非頻繁項集,這樣我們就可以消除非頻繁項集當成頻繁項集的錯誤,同時最大化的減少了頻繁項集被當做了非頻繁項集。


SON演算法(Savasere,Omiecinski, and Navathe; 基於劃分的方法)

{an improvement on the simple algorithm.SON方法能夠對資料集上所有資料進行處理}

SON演算法同時避免了false negatives(頻繁項集當做非頻繁項集)和false positives(非頻繁項集被判為頻繁項集),所帶來的代價是需要兩個完全的步驟。

SON基本思想

將輸入檔案劃分成1/p個塊(chunks)。將每個檔案塊作為一個樣本,並執行Apriori演算法在其塊上。同樣的使用ps作為其閾值。將每個塊找到的頻繁項集放到磁碟上。

第一步處理

找到區域性頻繁項集:一旦所有的塊按此方式被處理,將那些在一個或多個塊中被選中的頻繁項集收集起來作為候選頻繁項集。注意,如果一個項集在所有的塊中都不是頻繁項集,即它在每個塊中的支援度都低於ps。因為塊數為1/p,所以,整體的支援度也就低於(1/p)ps=s。這樣,每個頻繁項集必然會出現在至少一個塊的頻繁項集中,於是,我們可以確定,真正的頻繁項一定全在候選頻繁項集中,因此這裡沒有false negatives。當我們讀每個塊並處理它們後,我們完成一次處理。


第二步處理

找到全域性頻繁項集:我們計算所有的候選頻繁項集,選擇那些支援度至少為s的作為頻繁項集。


分散式SON演算法

分散式演算法步驟解析

The idea is that you break the file containing the baskets into many groups,one at each processor.

Each processor finds the local frequent item sets,then broadcast to each other processor its list of local frequent item sets.The union of all these lists is the candidate item sets.Now each processor knows the list of candidate itemvsets and counts them locally.

Then, each processor broadcasts its counts to all the other processor.Now each processor knows the total count for each candidate set and can discover which of them are truly frequent.

SON演算法與Map-Reduce

SON演算法使得它很適合在平行計算的環境下發揮功效。每個塊可以並行的處理,然後每個塊的頻繁集合並形成候選集。我們可以將候選分配到多個處理器上,在每個處理器上,這些處理器只需要在一個“購物籃”子集處理這些發過來的候選頻繁項集,最後將這些候選集合並得到最終的在整個資料集上的支援度。這個過程不必應用map-reduce,但是,這種兩步處理的過程可以表達成map-reduce的處理。

map-reduce-map-reduce流程

FirstMap Function:分配籃子子集,並在子集上使用Apriori演算法找出每個項集的頻繁度。將支援閾值降從s降低到ps,如果每個Map任務分得的部分佔總檔案的比例為p。map的輸出為key-value對(F,1),這裡F為該樣本的頻繁項集。值總是為1,這個值是無關緊要的。

FirstReduce Function:每個reduce任務被分配為一組key,這組key實際就為項集,其中的value被忽略,reduce任務簡單產生這些出現過一次或多次的項集,將其作為候選頻繁項集作為輸出。

SecondMap Function:第二步的map任務將第一步的reduce的所有輸出和輸入檔案的一部分作為輸入,每個Map任務計算在分配的那塊輸入檔案中每個候選頻繁項集的出現次數。這步的輸出為鍵值對(C,v),這裡,C是一個候選集,v是其在該Map任務中的支援度。

SecondReduce Function:此步的Reduce任務將在每個候選頻繁項集各個Map中的候選集的支援度相加。相加的結果就為整個檔案上的支援度,這些支援度若大於s,則保留在頻繁項集中,否則剔除。


Toivonen演算法(隨機抽樣演算法)

{an entirely different approach to saving passes}

Toivonen演算法在給出足夠記憶體的情況下,在小樣本上進行一步處理,接著再整個資料上進行一步處理。這個演算法不會帶來false negatives,也不會帶來false positives,但是這裡存在一個小的概率使得演算法會產生不了任何結構。這種情況下演算法需要重複直至找到一個結果,雖然如此,得到最終頻繁項集的處理的平均步數不會太大。

小樣本上掃描pass1:尋找候選頻繁項集

Toivonen演算法由從輸入資料集中選擇一個小的樣品開始,並從中找到候選頻繁項集,找的過程同Apriori演算法,不過很重要的一點不同是閾值的設定的比樣品比例的閾值小。即,當整個資料集上的支援度閾值為s,該樣品所佔資料集的比例為p,則該閾值可以設定為0.9ps或0.8ps。越小的閾值,就意味著在處理樣本時,越多的記憶體在計算頻繁項集時需要使用;但是也就越大的可能性避免演算法不能產生結果。

構造負邊界negative border

Negative border:是樣品的一個非頻繁項集合,並且這些項集去掉任意一個項item後的直接子集是頻繁集。

構造Negative border示例

考慮項為{A,B,C,D,E},而且我們找到頻繁項集為{A},{B},{C},{D},{B,C},{C,D}。

注意,只要籃子數不比閾值小,空集Φ也是頻繁的,但是我們忽略它。The empty set is a subset of every basket, so the only way the empty set could not be frequent is if the support threshold is higher than the number of baskets.But that means nothing would be frequent and why are we bothering anyway.

首先,{E}是在negative border中的,因為{E}本身不是頻繁項集,但是從中去任意項後就變成Φ了,就成了頻繁項集,所有包含在negative border中。

{A,B},{A,C},{A,D}和{B,D}也在negative border中。因為它們都不是頻繁項集,但是除掉一個項的子集都是頻繁項集。如{A,B}的子集{A}和{B}都是頻繁集。

剩下的六個二元項集不在negative border中。{B,C}和{C,D}因為它們本身是頻繁項集,所有就不是negative border的元素了,而其他四個雖然不是頻繁項集,但是因為包含了項E,而子集{E}不是頻繁項集。

沒有任何三元的或更大的項集在negative border中了。例如{B,C,D}不在negative border中,因為它有一個立即子集{B,D},而{B,D}不是頻繁項集。

這樣,negative border由下面五個集合組成:{E},{A,B},{A,C},{A,D}和{B,D}。

Negative border的作用及目的

The purpose of counting the negative border is to act as canaries.None of them should be frequent in the whole data set because we picked the support threshold for the sample that is significantly below a proportional threshold.

But if one or more of the items sets in the negative order turned out to be frequent in the hold,then we have to believe that the sample was not representative.And we need to repeat the entire process.

Negative border圖解


Note:

1. the vertical dimension is the size of item sets, and the horizontal dimension somehow represents all the item sets of a given size.

2. The frequent item region is closed downwards because of monotonicity,a subset of the frequent item set is always frequent.

3. The negative border may consist of sets of different sizes, and its items tend to have widely varying frequencies.
大資料集上掃描pass2

我們需要進一步在整個資料集上處理,算出所有在樣品中的頻繁項集或negative border中的所有項集的計數。

這步會產生的可能輸出為:

1、  如果negative border中沒有一個項集在整個資料集上計算為頻繁項集。這種情況下,正確的頻繁項集就為樣本中的頻繁項集。

2、  某些在negative border中的項集在整個資料集中計算是頻繁項集。這時,我們不能確定是否存在更大的項集,這個項集既不在樣本的negative border中,也不在它的頻繁項集中,但是是整個資料集的頻繁項集。這樣,我們在此次的抽樣中得不到結果,演算法只能在重新抽樣,繼續重複上面的步驟,直到出現滿足輸出情形1時停止。


Note:如果negative border發現某個項集在整個資料集中是頻繁的,那麼它的super sets都可能是頻繁項集,而被我們忽略了。這樣的話就必須重新取樣執行演算法。

儘量避免第2種情況發生的方法:Try to choose the support threshold so the probability of failure is low, while the number of itemsets checked on the second pass fits in main memory.

Toivonen演算法可行性分析

顯然 Toivonen演算法不會產生false positive,因為它僅僅將在樣本中是頻繁項並在整個資料集上計算確實為頻繁項集的項集作為頻繁項集。

討論Toivonen演算法能夠不產生false negative

如果一個項集在整個資料集上是頻繁的,而在樣本中不是頻繁的,那麼negative border中一定有一個成員是頻繁的。(這樣就要重新執行演算法了)

也就是說如果在negative border中沒有成員在整個資料集中是頻繁的,那麼在整個資料集中再也不存在我們沒有計數的頻繁項了。if we find no members of the negative border to be frequent in the whole, then we know that there are no sets at all that are frequent in the whole but that we did not count.

也就是說不存在一個項集在整個資料集上是頻繁的,而在樣本中既不出現在頻繁集中,也不出現在negative border中。

定理證明proof by contradiction

Note:

1. In principle, T could be S itself,if it has no proper subsets that are not frequent in the sample.All we care about is that all the subsets of T are frequent in the sample.

2. I also claim that T is in the negative border.If it is not frequent in the sample, but it had a proper subset that was not frequent in the sample,then T would not be the smallest subset of S with that property.也就是S的比T更小的子集一定在樣本頻繁項集中,這樣T就自然在樣本的negative border上了。T就在樣本的negative border上並且T是頻繁的 與 2.Nothing ...矛盾!

反例:

假設這裡有個集合S在資料集上是頻繁項集,也不是樣本的頻繁項集。並且negative border中沒有成員在整個資料集上是頻繁的。

假設T是S的一個在樣本中不屬於頻繁項集的最小子集。

由頻繁項集的單調性知,S的所有子集都是整個資料集的頻繁項集。則T是整個資料集的頻繁項集。
T一定在negative border中。因為T滿足在negative border中的條件:它自己不是樣本的頻繁項集,而它的直接子集是樣本的頻繁項集,因為若它的直接子集不是,則T就不是S的在樣本中不屬於頻繁項集的最小子集(這個直接子集才是)。
於是我們發現T是整個資料集的頻繁項集,又在樣本的negative border中。與假設矛盾!

其他的頻集挖掘方法

上面我們介紹的都是基於Apriori的頻集方法。即使進行了優化,但是

Apriori方法一些固有的缺陷無法克服

可能產生大量的候選集。當長度為1的頻集有10000個的時候,長度為2的候選集個數將會超過10M。還有就是如果要生成一個很長的規則的時候,要產生的中間元素也是巨大量的。

無法對稀有資訊進行分析。由於頻集使用了引數minsup,所以就無法對小於minsup的事件進行分析;而如果將minsup設成一個很低的值,那麼演算法的效率就成了一個很難處理的問題。

分別解決以上兩個問題的兩種方法:

FP-樹頻集演算法

針對問題一,J.Han等在《資料探勘概率與技術》中提出了不產生候選挖掘頻繁項集的方法:FP-樹頻集演算法。他們採用了分而治之的策略,在經過了第一次的掃描之後,把資料庫中的頻集壓縮排一棵頻繁模式樹(FP-tree),同時依然保留其中的關聯資訊。隨後我們再將FP-tree分化成一些條件庫,每個庫和一個長度為1的頻集相關。然後再對這些條件庫分別進行挖掘。當原始資料量很大的時候,也可以結合劃分的方法,使得一個FP-tree可以放入主存中。實驗表明,FP-growth對不同長度的規則都有很好的適應性,同時在效率上較之apriori演算法有巨大的提高。

挖掘高可信度的規則

第二個問題是基於這個的一個想法:apriori演算法得出的關係都是頻繁出現的,但是在實際的應用中,我們可能需要尋找一些高度相關的元素,即使這些元素不是頻繁出現的。在apriori演算法中,起決定作用的是支援度,而我們現在將把可信度放在第一位,挖掘一些具有非常高可信度的規則。Edith Cohen在"Finding Interesting Associations without Support Pruning"中介紹了對於這個問題的一個解決方法。

整個演算法基本上分成三個步驟:計算特徵、生成候選集、過濾候選集。在三個步驟中,關鍵的地方就是在計算特徵時Hash方法的使用。在考慮方法的時候,有幾個衡量好壞的指數:時空效率、錯誤率和遺漏率。

基本的方法有兩類:Min_Hashing(MH)和Locality_Sensitive_Hashing(LSH)。

Min_Hashing的基本想法是:將一條記錄中的頭k個為1的欄位的位置作為一個Hash函式。Locality_Sentitive_Hashing的基本想法是:將整個資料庫用一種基於概率的方法進行分類,使得相似的列在一起的可能性更大,不相似的列在一起的可能性較小。我們再對這兩個方法比較一下。MH的遺漏率為零,錯誤率可以由k嚴格控制,但是時空效率相對的較差。LSH的遺漏率和錯誤率是無法同時降低的,但是它的時空效率卻相對的好很多。所以應該視具體的情況而定。最後的實驗資料也說明這種方法的確能產生一些有用的規則。

Dic演算法

DIC 演算法

皮皮blog

Reviews複習

Toivonen演算法

Note: 頻繁項集的子集也是頻繁的,這樣頻繁項集還包含{D} 。但是不會包含{B, D}

ref:

相關推薦

海量資料MMDS week2: 頻繁挖掘 Apriori演算法改進基於hash方法

海量資料探勘Mining Massive Datasets(MMDs) -Jure Leskovec courses學習筆記之關聯規則Apriori演算法的改進:基於hash的方法:PCY演算法, Multistage演算法, Multihash演算法 Apriori演

海量資料MMDS week2: 頻繁挖掘 Apriori演算法改進hash方法

海量資料探勘Mining Massive Datasets(MMDs) -Jure Leskovec courses學習筆記之關聯規則Apriori演算法的改進:非hash方法 - 大資料集下的頻繁項集:挖掘隨機取樣演算法、SON演算法、Toivonen演算法 Apri

海量資料MMDS week2: Association Rules關聯規則與頻繁挖掘

海量資料探勘Mining Massive Datasets(MMDs) -Jure Leskovec courses學習筆記之association rules關聯規則與頻繁項集挖掘 {Frequent Itemsets: Often called "associatio

資料---頻繁挖掘Apriori演算法的C++實現

1 準備 2 作業粗糙翻譯內容 2.1 前言 程式設計作業可能比書面作業花費更多的時間,而這也算是你最後成績的10%,所以請提前開始; 這是個人作業,你可以與你的同學或者老師交流,但是不能夠共享程式碼和抄襲; 類似的庫或頻繁模式挖掘演算

頻繁挖掘Apriori演算法及其Python實現

Apriori演算法是通過限制候選產生髮現頻繁項集。 Apriori演算法使用一種稱為逐層搜尋的迭代方法,其中k項集用於探索(k+1)項集。首先,通過掃描資料庫,累計每個項的計數,並收集滿足最小支援度的項,找出頻繁1項集的集合,記為L1。然後,使用L1找出頻繁

海量資料MMDS week4: 推薦系統之資料降維Dimensionality Reduction

海量資料探勘Mining Massive Datasets(MMDs) -Jure Leskovec courses學習筆記 推薦系統Recommendation System之降維Dimensionality Reduction{部落格內容:推薦系統有一種推薦稱作隱語義模型

【Python資料課程】八.關聯規則挖掘Apriori實現購物推薦

        這篇文章主要介紹三個知識點,也是我《資料探勘與分析》課程講課的內容。        1.關聯規則挖掘概念及實現過程;        2.Apriori演算法挖掘頻繁項集;        3.Python實現關聯規則挖掘及置信度、支援度計算。一. 關聯規則挖掘概

跟我一起資料(20)——網站日誌挖掘

收集web日誌的目的 Web日誌挖掘是指採用資料探勘技術,對站點使用者訪問Web伺服器過程中產生的日誌資料進行分析處理,從而發現Web使用者的訪問模式和興趣愛好等,這些資訊對站點建設潛在有用的可理解的未知資訊和知識,用於分析站點的被訪問情況,輔助站點管理和決策支援等。 1、

R語言包arules進行頻繁挖掘的最簡單例子

arules是進行頻繁項集挖掘(frequent itemset mining)的有效工具,不過我在使用的時候發現網上很多例子都比較繁瑣,這裡總結一下其中apriori方法的最簡單使用方法,這裡首先給出程式碼:files_change<-read.transaction

關聯規則(頻繁)——Apriori

1.該問題最初是對“購物籃”提出來的,著名例子是“尿布與啤酒”。 2.相關概念:  關聯規則的支援度:Support(A,B)=包含A和B的事務數/事務總數  關聯規則的置信度:Confidence(A,B)= 包含A和B的事務數/包含A事務數  頻繁項集:項集的頻率大於等

頻繁挖掘apriori和fp-growth

Apriori和fp-growth是頻繁項集(frequent itemset mining)挖掘中的兩個經典演算法,主要的區別在於一個是廣度優先的方式,另一個是深度優先的方式,後一種是基於前一種效率較低的背景下提出來的,雖然都是十幾年前的,但是理解這兩個演算法對資料探勘

頻繁挖掘演算法——Apriori演算法

前言        關聯規則就是在給定訓練項集上頻繁出現的項集與項集之間的一種緊密的聯絡。其中“頻繁”是由人為設定的一個閾值即支援度 (support)來衡量,“緊密”也是由人為設定的一個關聯閾值即置信度(confidence)來衡量的。這兩種度量標準是頻繁項集挖掘中兩個至關

頻繁挖掘演算法——Eclat演算法

        前面介紹過的Apriori演算法和FP-growth演算法都是從TID項集格式(即{TID:itemset})的事務集中挖掘頻繁模式,其中TID是事務識別符號,而itemset是事務TID中購買的商品。這種資料格式稱為水平資料格式。或者,資料也可以用項-TID

資料之關聯分析二(頻繁的產生)

頻繁項集的產生 格結構(lattice structure)常常用來表示所有可能的項集。 發現頻繁項集的一個原始方法是確定格結構中每個候選項集的支援度。但是工作量比較大。另外有幾種方法可以降低產生頻繁項集的計算複雜度。 1. 減少候選項集的數目。如先驗

資料中的模式發現(一)頻繁頻繁、最大頻繁

Frequent Itemset(頻繁項集) 稱I={i1,i2,...,im}I=\{i_1, i_2, ..., i_m\}I={i1​,i2​,...,im​}為項(Item)的集合,D={T1,T2,...,Tn}D=\{T_1, T_2, ...,T_

資料頻繁分析

頻繁項集最經典和常用的應用就是超市的購物籃分析。每個購物籃裡有很多商品,每個商品都是一項元素,每個購物籃都是一個集合,所有購物籃就形成了一個系列集合。 分析哪些商品經常一起頻繁出現在購物籃內,即找到頻繁項集,然後,再分析其他商品與頻繁項集的關係,即關聯規則。 1. 什麼是

資料挖掘頻繁模式的基本概念及方法

摘自《DATA MINING:Concepts and Techniques》一書,以及個人理解,主要為自己鞏固和總結,如有紕漏和出錯的地方,還請指出。此書第六章開頭指出    頻繁模式(frequent pattern),是指頻繁地出現在資料集中的模式,譬如項集,子序列或子

資料筆記六】挖掘頻繁模式、關聯和相關性基本概念和方法

6.挖掘頻繁模式、關聯和相關性:基本概念和方法 頻繁模式(frequent pattern)是頻繁地出現在資料集中的模式。 6.1 基本概念 頻繁模式挖掘搜尋給定資料集中反覆出現的聯絡,旨在發現大型事務或關係資料集中項之間有趣的關聯或相關性,其典型例子就是購物籃分析。 購物

資料概念與技術】學習筆記6-挖掘頻繁模式、關聯和相關性基本概念和方法(編緝中)

頻繁模式是頻繁地出現在資料集中的模式(如項集、子序列或子結構)。頻繁模式挖掘給定資料集中反覆出現的聯絡。“購物籃”例子,想象全域是商店中商品的集合,每種商品有一個布林變數,表示該商品是否出現。則每個購物籃可以用一個布林向量表示。分析布林向量,得到反映商品頻繁關聯或同時購買的購買模式。這些模式可用關聯規則來表示

資料學習筆記】10.頻繁模式挖掘基礎

一、基本概念頻繁模式– 頻繁的出現在資料集中的模式– 項集、子序或者子結構動機– 發現數據中蘊含的事物的內在規律• 項(Item) – 最小的處理單位 – 例如:Bread, Milk• 事務(Transaction) – 由事務號和項集組成 – 例如:<1, {Bre