跳到主要內容

Association Rule Mining

What is association rule mining?
 A:
  Given a set of transactions, find rules that will predict the occurrence of an item based on the occurrences of other items in the transaction

Definition
• Support count (\sigma):  itemset  出現的次數
∘ Frequency of occurrence of an itemset
∘ E.g.   \sigma({Milk, Bread,Diaper}) = 2
• Support: 某一個 itemset / itemset 的總數
∘ Fraction of transactions that contain an itemset
∘ E.g.    s({Milk, Bread, Diaper}) = 2/5
• Frequent Itemset
∘ An itemset whose support is greater than or equal to a minsup threshold
•  Rule Evaluation Metrics
∘ Support (s): Fraction of transactions that contain both X and Y, i.e.    \sigma({X, Y}}/T
∘ Confidence (c): Measures how often items in Y appear in transactions that contain X,   \sigma({X, Y}}/ \sigma (X)
  

Maximal Frequent Itemset:
• An itemset is maximal frequent if none of its immediate supersets is frequent(最相近的 superset 都不是 frequent itemset)
• example:
∘ Items: a, b, c, d, e
∘ Frequent Itemset: {a, b, c}
∘ {a, b, c, d}, {a, b, c, e}, {a, b, c, d, e} are not Frequent Itemset.
∘ Maximal Frequent Itemsets: {a, b, c}

Closed Itemset:[2]
       An itemset is closed if none of its immediate supersets has the same support as the itemset.

       So for example, if {Bread, Milk} is an itemset that has support=4, and all of its supersets has support<4, then {Bread, Milk} is a closed itemset.

       Counter e.g.: If, let's say, {Bread, Milk, Sugar} has support=4, then {Bread, Milk} is not a closed itemset anymore.

       Note: The definition states "the same" and doesn't say "the same or more" because it's impossible for a superset to have a support greater than one of its subsets

What is it purpose  to find the closed frequent itemset?
找 closed and frequent itemsets 的主要目的在於可以從 frequent itemset 但不是屬於 closed itemsets 中,找出所有 frequent itemsets 的 support 值,因為 maximun frequent itemset 可以找出所有 frequent itemsets,但是無法找出 frequent itemsets 的 support 值,所以必須找 closed itemset,然後求出 frequent itemset 的 support 值


Apriori Algorithm

• Apriori principle:
∘ If an itemset is frequent, then all of its subsets must also be frequent
• Apriori property:

∘ Support of an itemset never exceeds the support of its subsets
∘ Apriori 使用 anti- monotone(單調,單音) 的特性,避免產生不必要的 candidate itemset, 以減小 search space[1]
∘ 例子參考ch6 ppt 14
• Apriori algorithm:
∘ uses a generate-and-test approach - generates candidate itemsets and tests if they are frequent

Apriori algorithm disadvantage

• Generation of candidate itemsets is expensive (in both space and time)
• Support counting is expensive
∘ Subset checking (computationally expensive)
∘ Multiple Database scans (I/O), 多次的掃描資料庫

Frequent Patten Growth(FP-Growth) Algorithm

FP-Growth Tree[3]

    

FP-Growth algorithm

1. Scan DB once, find frequent 1-itemset (single item pattern)
2. Order frequent items in frequency descending order
3. Scan DB again, construct FP-tree

   min_support = 50%



-----------------------------------------------------------------------------------------------------------
[1] http://dm07course.blogspot.com/search/label/chapter
[2] http://wiki.answers.com/Q/What_is_closed_frequent_itemset_in_datamining#ixzz1AeRZ8Nea
[3] http://www.florian.verhein.com/teaching/2008-01-09/

留言

這個網誌中的熱門文章

CodeBlocks 多國語言的設定步驟

多年來一直都是使用 CodeBlocks 英文的介面,不曾想過要將 CodeBlocks 設定成多國語言的開發環境,對於不習慣於英文介面的國人,設定中文的使用介面是非常需要的環境,在 CodeBlocks 論壇有一篇文章提到 :Do you know http://wiki.codeblocks.org/index.php?title=Internationalization ?這個連結說明在 Windows 系統如何設定 CodeBlocks 成為 Internationalization 的環境,整個設定過程如下: 到 CodeBlocks 翻譯文件網站 下載 .mo 檔案:下載時需要 Ubuntu One 的帳號及密碼,登入後點選 .mo 檔案(不要下載 .po 檔是可編輯檔) 系統會傳送一封信件,點選信件的連結,將 .mo 檔案下載 將檔案複製到 C:\Codeblocks\share\CodeBlocks\locale\zh_TW 目錄(沒有這個目錄請自己建立) 開啟 CodeBlocks >> Setting >> Environment >> View >> Internationalization 選項打勾 >> 點選 Chinese 重新開啟 CodeBlocks 要加入其他語言的 .mo 檔案,則在 locale 目錄中新增其他語言的目錄名稱,例如: 德國 de_DE,這樣 CodeBlocks 就是多國語言的開發環境了。 當如果要恢復英文的介面,只要取消 Internationalization 的選項勾選,然後再次重新開啟 CodeBlocks 就回到英文的開發環境。 後記: CodeBlocks 翻譯文件網站 要下載 .mo or .po 檔案需要等待系統回復信件到 Email 信箱,無法及時處理,將這些檔案儲存在 Google Driver 的 src/CodeBlocks 目錄,以後可以從這裡直接取用。

輸入及轉換 Unicode 編碼

如何輸入羅馬數字?不管大寫的數字 ,或者小寫的數字,不知道 Unicode 編碼的人總是會以輸入英文字母 i or I 來替代,即輸入 i, ii, iii, or I, II, III,或許他們不會面臨要輸入 4 以上的羅馬數字,這樣的做法就可以在人類的視覺誤差中暫時瞞騙過關,然而,這樣的作法卻帶來資訊系統不可見的人為問題。這篇文章將描述如何輸入正確的羅馬數字?如何搜尋 Unicode 編碼?以及如何輸入 Unicode 編碼。關於 Unicode 編碼輸入與顯示是一個相當複雜的議題,這篇文章僅針對在 Windows 作業系統中的應用程式如何輸入與搜尋 Unicode 編碼?如何在 Unicode 編碼與對應字元之間做轉換?不會涉及其他的議題;若依照下面描述的輸入方式輸入 Unicode 編碼,不保證能完全符合你/妳所使用個人電腦系統的環境,請再參考相關的文章來解決輸入與顯示 Unicode 編碼的問題。 Unicode 編碼的輸入方式 在 Wiki 的文件 中說明如何在不同環境下輸入特殊字元的 Unicode 編碼,在 Windows 作業系統中輸入 Unicode 編碼的方式如下: Microsoft Word or Wordpad:先輸入 unicode 的編碼,再按下 Alt + x,例如,在 word 中輸入 1f370,然後按下 Alt+x,就會顯示 🍰( &#x1f370)的字元 其他 Microsoft 所有應用程式:應用程式包括 Microsoft PowerPoint, Excel, VS Code 等程式,且要支援 Unicode 編碼的版本,都可以使用注音輸入法來輸入 Unicode 編碼;首先切換到注音輸入法的中文輸入模式,然後按下~鍵(Esc 下方的鍵) + u + Unicode 編碼,特別要注意輸入的數字是鍵盤上方的數字鍵,不可以使用 Number Pad 的數字鍵。 查詢 Unicode 編碼 Unicode編碼的對應字元可以連結到 The Unicode Consortium 的 Code Charts 網站,在網站中輸入你/妳想要字元的 Unicode 編碼,如此就可以找到這個 Unicode 編碼的字元,問題是:我們通常是心中有字元的圖像,或者是要先看到字元的樣子,才知道我們要使用...

cmd 程式無法執行的解決步驟

因為要設定 cmd 的編碼方式為 Unicode 編碼( chcp 65001),可能不小心修改了編碼,而導致cmd 無法開啟,主要的原因是:「cmd 變成沒有編碼」,所以才造成 cmd 無法開啟。在 Windows 8 中要恢復 cmd 編碼的步驟如下: 1. 滑鼠移到左上角,會出現功能的選項,點選「搜尋」的圖示 2. 在輸入的格子中,輸入「cmd」但是不要按下 enter 3. 滑鼠移到「cmd 命令提示字元」,,按下「滑鼠右鍵」 4. 下面會出現一些選項,點選「開啟檔案位置」,如此可以找到 cmd 命令提示字元的位置 5. 在「 命令提示字元」檔案中按下滑鼠右鍵,並點選「內容」 6. 點選「選項」,把「950 - Big 5 繁體中文」的編碼加入