fp增長演算法:使用fp樹的緊湊資料結構組織資料,並從中提取頻繁項集
fp樹表示法:fp樹是一種輸入資料的壓縮表示,把每個事務對映到fp樹中的一條路徑來構造;步驟:
掃瞄一次資料集,確定每個項的支援度,事務資料去除非頻繁項,將事務中的項按支援度降序
第二次掃瞄資料集,構建fp樹,讀入第乙個事務,路徑上結點的頻數計數為1
繼續讀入事務,如果有共同的字首項則字首項合併,計數+1,沒有則另開一條路徑
繼續該過程直到所有事務對映到fp樹的一條路徑
*我們第一次掃瞄資料,得到所有頻繁一項集的的計數。然後刪除支援度低於閾值的項,將1項頻繁集放入項頭表,並按照支援度降序排列。接著第二次也是最後一次掃瞄資料,將讀到的原始資料剔除非頻繁1項集,並按照支援度降序排列。
fp樹的特點:
fp樹的大小比未壓縮的資料小,因為事務有共同項;而當事務不包含任何共同項時,fp樹的大小與原資料一樣且還有結點間的指標和計數
fp樹還包含乙個連線具有相同項的結點的指標列表,有助於快速的訪問樹中的項(虛線指標不代表實際的聯絡)
fp樹的頻繁項集的產生:fp增長是一種自底向上方法探索樹,由樹產生頻繁項集的演算法
fp增長採用分治策略將乙個問題分解為較小的子問題,從而發現特定字尾結尾的所有頻繁項集;
步驟:收集包含特定結點結尾的所有路徑,即字首路徑
特定項的結點的支援度計數相加得到項支援度計數
驗證單個特定結尾的結點是頻繁的,那麼兩個項是否頻繁呢?為了解決子問題,將字首路徑轉化為條件fp樹:
更新字首路徑上的支援度計數,某些事務不包含特定結尾結點
刪除特定結尾結點
更新字首路徑上的支援度計數後,某些項不再是頻繁的了,可以去除
從特定結點為結尾的條件fp樹中找到與其組合的結點,以其作為結尾開始二階條件fp樹(第3步迭代)
*當然,另一種方法就是上面所說的發現以特定結點為結尾的極大頻繁項集,然後以其為結尾組合成k-頻繁項集(路徑順序無關,主要是統一路徑上在一起出現了)
*每一次遞迴,都要通過更新字首路徑中的支援度計數和刪除非頻繁的項來構建條件fp樹;由於子問題是不相交的,所以fp增長不會產生重複的項集
*fp tree演算法改進了apriori演算法的i/o瓶頸,巧妙的利用了樹結構,這讓我們想起了birch聚類,birch聚類也是巧妙的利用了樹結構來提高演算法執行速度。利用記憶體資料結構以空間換時間是常用的提高演算法執行時間瓶頸的辦法。在實踐中,fp tree演算法是可以用於生產環境的關聯演算法,而apriori演算法則做為先驅,起著關聯演算法指明燈的作用。除了fp tree,像gsp,cba之類的演算法都是apriori派系的。
第六章 Apriori演算法
apriori演算法是agrawal和r.srikant於1994年提出的,為布林關聯規則挖掘頻繁項集的原創性演算法。演算法的名字基於這樣的事實 演算法使用頻繁項集性質的先驗知識。apriori演算法使用一種稱為逐層搜尋的迭代演算法,其中k項集用於探索 k 1 項集。首先,通過掃瞄資料庫,累計每個項...
mysql第六章 第六章 mysql日誌
第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...
第六章實驗任務(2)
題目 將下面的程式編譯連線,用debug載入 跟蹤,然後回答問題。源 除錯過程 問題1 cpu執行程式,程式返回前,data斷的資料為多少?解答 data段的資料是 144c 0000 23 01 56 04 00 00 00 00 00 00 00 00 00 00 00 00,結果保持變。問題2...