Frequent Pattern mining

Frequent pattern mining的幾種方式: 算法

    1.基於模式完整性的(completeness of patterns) 數據庫

    2.基於和規則集有關抽象層次的(levels of abstraction) ide

    3.基於和規則有關維數的(number of data dimensions) spa

    4.基於規則值類型的(types of value) 排序

    5.基於規則種類的(kinds of rules) ci

    6.基於模式種類的(kinds of patterns) it


基礎算法: io

Apriori算法:最基本的frequent itemsets挖掘算法(單抽象層,單數據維,boolean值類型) 基礎

    方法:迭代,用k-itemsets來找到(k+1)-itemsets。 date

    步驟:逐次找L1,L2,L3...Lk。

    爲了減小搜索空間,優先原則(Apriori property)被引入:

       -全部頻繁集的非空子集必然是頻繁集,或者說,全部非頻繁集的超集都不會是頻繁集。

    如何應用Apriori property:包括兩個操做:合併(join)和剪枝(prune)。以L(k-1)尋找Lk爲例子

        1.合併,爲了尋找到Lk,須要對L(k-1)進行自鏈接,以找出k-itemsets的候選者(candidate),用Ck表示。對L(k-1)中的任意一個元素(某一個頻繁項目集)li,一般li中的每一個項目li[x]是已經詞法排序好的。進行L(k-1)joinL(k-1),其中任意兩個li和lj能夠進行鏈接的條件是:li[1]=lj[1],li[2]=lj[2],li[3]=lj[3]...,li[k-2]=lj[k-2],li[k-1]<lj[k-1](第k-1項不相等,否者出現多餘)。合併的結果是li[1],li[2],...li[k-2],li[k-1],lj[k-1]。

        2.剪枝:候選者集合Ck是Lk的超集,Lk的全部元素必然來自Ck。因此遍歷Ck能夠找到Lk的全體元素。可是這樣計算量巨大,因此利用Apriori property來減小Ck的規模。即全部非頻繁的(k-1)-itemset的超集k-itemset都不會屬於頻繁項目集集合Lk。因此能夠對Ck的每一個k-itemset元素進行判斷,只要Ck中某個k-itemset的任一子集(k-1)-itemset不屬於L(k-1),就說明這個候選項不可能成爲頻繁項目集Lk的一員,要被拋棄。


由頻繁項目集l中產生規則rules:

    (

        association rule A=>B 必須知足的條件:

        1.A∩B=∅

        2.support(A⇒B) = P(A ∪ B) >min_sup

        3. confidence(A⇒B) = P(B|A) =  support_count(A ∪ B)/ support_count(A)>min_conf

        )

    對某一個頻繁項目集l,它能夠產生多條關聯規則,產生的方式是求出l的每個非空子集s,s=>(l-s)的條件是support_count(l)/support_count(s)>min_conf。由於l是來自頻繁項目集集合L的,因此它必然知足 P(l) >min_sup


評價:

    Apriori雖然candidate 產生而且檢測(鏈接並剪枝)的方式大大減小了候選者集合C的規模,可是它仍然有兩個弊病:(1)會產生大量的候選者集(2)須要不斷的掃描數據庫check候選者集合C來求得頻繁項目集。


是否有不產生candidate集合的方法挖掘完整的頻繁項目集集合呢?

    Frequent-pattern growth(FP-growth)就是這樣一種算法。

    FP-growth基本思想是分支(divide and conquer),首先,將表明頻繁項目(frequent items)的數據庫壓縮到一顆FP-tree中,這棵FP-tree仍然保留了完整的項目集關聯信息。而後,它將這種被壓縮的數據庫(FP-tree)分割成一組條件數據庫(一種特殊的投射數據庫),每個條件數據庫都和一個頻繁項目或者模式碎片關聯(pattern fragment),而後分別挖掘之。

相關文章
相關標籤/搜索