【機器學習實戰】FP-growth演算法詳解
阿新 • • 發佈:2018-12-05
背景
apriori演算法 需要多次掃描資料,I/O 大大降低了時間效率
1. fp-tree資料結構
1> 項頭表
記錄所有的1項頻繁集出現的次數,並降序排列
2> fp tree
根據項頭表,構建fp樹
3> 節點連結串列
所有項頭表的1項頻繁集都是一個節點連結串列的頭,依次指向fp樹中的位置,而且方便查詢和更新
2. 項頭表的建立
排序後的資料集進行了兩步操作:
1> 刪除每行關鍵字中支援度小於minSup的
2> 對關鍵字中剩下的元素按照支援度排序
3. fp tree和節點連結串列一起構建
開始節點為空
首先插入第一行關鍵字
接著插入第二行關鍵字,如果有重複的字首路徑,則路徑上的節點+1
.
.
.
,
,
.
.
類似的我們插入所有的資料之後,fptree和連結串列也都建好了,下圖即為最後的tree和節點連結串列
4.FP Tree的挖掘
對項頭表從底部依次向上挖掘頻繁集,對於項頭表對應於fp樹的每一項,我們要找到它的條件模式基(所有的路徑字首),更新該路徑的節點數目。
F:
D:
…
最後是A,因為條件模式基為空,所以可不用挖掘
由此,我們得到了所有的頻繁集(> 0.2),如果只要最大的頻繁k項集,從上面分析可以看出,最大的是5項集,A----C----E----B----F
5.FP Tree步驟總結
1> 掃描資料,得到所有頻繁一項集的計數,按照支援度保留滿足的項,將頻繁一項集放入項頭表,並按降序排列
2> 掃描資料,重置原始資料(刪除非頻繁一項集,並按支援度排序)
3> 讀入排序後的資料集,插入FP樹,並構建節點連結串列
4> 挖掘頻繁資訊,按照項頭表,從底向上依次尋找頻繁集。
參考博主