Python基礎原理:FP-growth算法的構建
和Apriori算法相比,FP-growth算法只需要對數據庫進行兩次遍歷,從而高效發現頻繁項集。對于搜索引擎公司而言,他們需要通過查看互聯網上的用詞,來找出經常在一塊出現的詞。因此就需要能夠高效的發現頻繁項集的方法,FP-growth算法就可以完成此重任。
FP-growth算法是基于Apriori原理的,通過將數據集存儲在FP(Frequent Pattern)樹上發現頻繁項集。
FP-growth算法只需要對數據庫進行兩次掃描,而Apriori算法在求每個潛在的頻繁項集時都需要掃描一次數據集,所以說FP-growth算法是高效的。
FP算法發現頻繁項集的過程是:
(1)構建FP樹;
(2)從FP樹中挖掘頻繁項集
FP表示的是頻繁模式,其通過鏈接來連接相似元素,被連起來的元素可看成是一個鏈表
將事務數據表中的各個事務對應的數據項,按照支持度排序后,把每個事務中的數據項按降序依次插入到一棵以 NULL為根節點的樹中,同時在每個結點處記錄該結點出現的支持度。
假設存在的一個事務數據樣例為,構建FP樹的步驟如下:
結合Apriori算法中最小支持度的閾值,在此將最小支持度定義為3,結合上表中的數據,那些不滿足最小支持度要求的將不會出現在***的FP樹中。
據此構建FP樹,并采用一個頭指針表來指向給定類型的***個實例,快速訪問FP樹中的所有元素,構建的帶頭指針的FP樹如圖:
結合繪制的帶頭指針表的FP樹,對表中數據進行過濾,排序如下:
在對數據項過濾排序了之后,就可以構建FP樹了,從NULL開始,向其中不斷添加過濾排序后的頻繁項集。過程可表示為:
這樣,FP樹對應的數據結構就建好了,現在就可以構建FP樹了,FP樹的構建函數參見Python源代碼。
在運行上例之前還需要一個真正的數據集,結合之前的數據自定義數據集。這樣就構建了FP樹,接下來就是使用它來進行頻繁項集的挖掘。