熱線電話:13121318867

登錄
首頁精彩閱讀數據挖掘:周期性分析SMCA算法簡介
數據挖掘:周期性分析SMCA算法簡介
2016-04-18
收藏
數據挖掘:周期性分析SMCA算法簡介



算法介紹

以時間順序挖掘周期性的模式(即周期性分析)是一種重要的數據挖掘方式,在以前的研究中我們假設每個時間點只發生一個事件,然而在這篇文章中我們研究一種更普遍的模式:即在每個時間點可以發生多個事件。

在這個算法中我們需要自己設置三個參數:min_rep, max_dis, global_rep。分別代表“一個有效序列的最小重復次數”、“相鄰有效序列最大允許擾動”、“有效序列總的要求重復次數”。其實在算法最后中我們會發現,我們也可以設置另外一個參數Lmaxn,即允許的最大周期。

最后,這個算法原作者似乎認為效果不錯,->.->

問題定義

在這個部分中,我們定義一些異步周期挖掘的問題。

E代表所有事件的集合,即一個事件的集合一定是E的一個非空子集。信息庫D是一系列的時間記錄,每一個記錄用一個數組來表示(tid, X),表示在tid時刻發生了集合X中的事件。同時D的這種表示方法我們定義為水平表達格式(horizontal format),具體請看下表。同時對于另一個事件集合Y,我們定義Y是被一個時間記錄所支持需滿足:Y?X。一個有k個事件的序列一般稱為k-事件序列(k-event set)。

Time Event Set Time Event Set Time Event Set
1 A, B, C 7 A, B, C, D 13 A, C, D
2 B, D 8 A 14 A, C
3 A, C, D 9 A, C, D 15 A, D
4 B 10 A, C 16 A, C, D
5 A, C 11 D 17 A
6 D 12 A, B, C, D 18 A, B, C, D

定義 1:一個以l為周期的模式是一個非空序列P=(p1,p2,…,pl),其中p1是一個事件序列,其他的或者是一個事件序列,或者是*,即可以理解為任何序列。

一個模式P若包含i個事件則被稱作i-模式(i-pattern)。特別的,我們稱1-模式為單模式(singular patterns),當i>1時我們稱之為復雜模式(complax patterns),例如(A, *, *)是一個單模式而(A, B, *)是一個2-模式,也稱為復雜模式。如果一個模式不包含任何“*”我們就稱之為滿模式(full pattern),否則就稱之為部分模式(partial pattern)。

定義 2:設有周期為了的模式P=(p1,p2,…,pl)和一個包含l個事件的集合D’=(d1,d2,…,dl),我們定義P匹配D’當且僅當對于每個j(1<=j<=l),或者pj=*,或者pj?dj。D’也可以稱為P的一個匹配項。

比如現在有一個模式P=(A, B, *),那么*顯然可以和任何事件序列匹配,于是如果我們有D=(A, B, C)就是一個P的一個匹配項。

定義 3:為了方便,我們用一個4元組(P, l, rep, pos)來定義一個模式片段P,它的周期l,開始位置是pos,并重復rep次,一般我們假設這個rep要取最大值(maximum segment)。

定義 4:一個最大片段(maximum segment)是一個有效片段當且僅當其重復次數不小于參數min_rep。

我們再定義一下擾動的概念:連個片段的擾動就是第一個片段的尾部和第二個片段的開始的位置之間的距離。例如在下圖中,S1和S3之間的擾動是8(15 – 3)。


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
A C B A E D A A B C A B C A A D A A B C A E C
D1 D1 D1 D2 D2 D2 D3 D3 D3




D8 D8 D8 D9 D9 D9 D10 D10 D10
S1 S1 S1 S1 S1 S1 S1 S1 S1




S3 S3 S3 S3 S3 S3 S3 S3 S3


定義 5:假設一個時間的數據庫D和一個模式P,序列D是一系列不重合的有效序列,并且其中任意相鄰片段的擾動小于一個預定的值,我們稱之為最大擾動max_dis。一個序列被稱作是有效的當且僅當P的全部的重合的次數大于一個預定的參數global_rep。

對于Fig.1b,如果我們設min_rep = 2, global_rep = 6, max_dis = 8,那么我們將會得到兩個有效序列(S1, S2),和(S1, S3)。而我們的任務找到所有有效的周期序列,其周期在1~Lmax之間,其中Lmax由用戶給定。

算法預覽

在這個模塊中,我們從挖掘單模式的周期序列到復雜模式周期序列,展示一下在時間數據庫中異步周期序列挖掘的過程。首先一個稱為“SPMiner”被用來找所有的單模式周期序列,它的原理主要是潛在循環試探(Potential Cycle Detection)和基于哈希的表(Hash-Based Validation)。然后,兩個算法“MPMiner”和“CPMiner”被用來尋找有效的多重單模式(multievent 1-patterns)和復雜模式序列(complex patterns)。最后,所有的有效片段都可以組合在一起來檢測是否滿足要求,即最后的”APMiner”。詳細見下圖:



現在我們分步驟來講解每一步的具體方法及部分偽代碼

SPMiner:Segment Mining for Single Event Pattern

首先,我們在前面提過一種叫做水平數據格式(horizontal database layout)的數據結構,現在我們要使用一種和其相對應的垂直數據格式(vertical database format),具體請見下表,它可以大大提高我們的搜索效率。


Event TimeList
A 1, 3, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18
B 1, 2, 4, 7, 12, 18
C 1, 3, 5, 7, 9, 10, 12, 13, 14, 16, 18
D 2, 3, 6, 7, 9, 11, 12, 13, 15, 16, 18

PCD算法(Potential Cycle Detection)測探所有在1~Lmax之間的可能周期,具體看偽代碼。

HBV算法(Hash-Based Validation)可以對于每個潛在的周期p和一個事件列表e,通過遍歷一遍事件表來找出所有的單模式序列。具體看偽代碼。

Procedure of SPMiner(D, Lmax)
    for each event Ei ∈ VD do:
        PCD(Ei, TimeList);
        for p = 1 to Lmax do
            if(CheckSet[p] >= min_rep)
                then HBV(Ei, Ei.TimeList, p); 
Procedure of PCD(TimeList)
    for i = 1 to i <= Lmax do CheckSet[i] = 1;
    for each time instant Ti ∈ TimeList do
        for each time instant Tj ∈ TimeList, i < j do
            if((Tj - Ti) <= Lmax) then
                CheckSet[Tj - Ti]++;
            else break; 
Procedure of HBV(EvtSet, TimeList, p)
    Allocate data structure Cseg[p];
    for i = 0 to p - 1 do /* Initilization */
        Cseg[i].last = -Max; Cseg[i].rep = 1;
    /* Validation */
    for each time instant Ti ∈ TimeList do
        pos = Ti % p;
        if(Ti - Cseg[pos].last == p) then
            Cseg[pos].rep++; Cseg[pos].last = Ti; continue;
        if(Cseg[pos].rep >= min_rep) then
            Output(EvtSet, p, Cseg[pos].rep, Cseg[pos].last - p * (Cseg[pos].rep - 1));
        Cseg[pos].rep = 1; Cseg[pos].last = Ti;
     for i = 0 to p - 1 do /* Rechecking */
        if(Cseg[i].rep >= min_rep) then
            Output(EvtSet, p, Cseg[i].rep, Cseg[i].last - p * (Cseg[i].rep - 1)); 


最后我們會得到如下的結果


Pattern Period Rep Start
A 1 7 12
A 2 5 1
A 2 6 8
C 2 5 1
C 2 5 10
D 2 5 7
D 3 6 3

MPMiner: Multievent Patterns

這里我們直接介紹推薦的SBE算法(Segment-Based Enumeration)。

SBE算法的思路是,對于一個周期p,先在上表中找到周期為p的項。我們假設一個變量off = start % p,這樣我們在此步找到的組合內部off則一定相同。如果最后重合部分還大于參數min_rep,那么我們就成功的找到了一組答案了。而對于重合的部分,我們也可以根據上表在O(1)的時間內計算出來。

CPMiner:Complex Patterns

這一步的做法和上一步的SBE算法十分相似。

不過在上一步中我們要求off相同才能放在一組,而在這一步中我們要求off必須不同才能在一組,偽代碼如下


Procedure of CPMiner(p, SegListp, w.r.t period p)
    for each segment Si ∈ SegListp; do
        Node.Head = Si;
        Node.Tail = all segment Sj ∈ SegList with j > i;
        Node.start = Si.start;
        Node.end = Si.start + (Si.rep - 1) * p;
        CP(Node, p); 
Subprocedure of CP_DFS(Node, p)
    if(|Node.Head| == p) then return ;
    for each segment Si ∈ Node.Tail do
        Valid = True;
        for each setment Sj ∈ Node.Head do
            if((Si.start - Sj.start) % p == 0) then
                Valid = false; break;
            if(Valid == false) then continue;
            newC.start = Si.start;
            newC.end = Min{Node.end, Si.start + (Si.rep - 1) * p};  //take care
            rep = ?(newC.end - newC.start) / p? + 1;        //take care
            if(rep >= min_rep)
                newC.Head = Node.Head ∪ Si;
                newC.Tail = all Sk ∈ Node.Tail with k > i;
                PatternOutput(newC, p, rep)
                CP_DFS(newC, p);
            else if(Node.end - Node.start + 1 < p * min_rep) break; 
Subprocedure of PatternOutput(Node, p, rep)
    Shift = Node.end % p        //take care not Node.start!
    for i = 1 to p do Pattern[i] = *;
    for each segment Si ∈ Node.Head do
        Pattern[(Si.start - Shift) % p] = Si.EvtSet;
    Output(Pattern, rep, p, Node.end - (rep - 1) * p); 


APMiner:Asynchronous Pattern

就像我們在定義5中說的那樣,一個異步周期模式被定義為有一組序列互不重合。因此我們還需使用深度優先搜索來枚舉所有的組合方式?,F在假設我們把所有的片段按照開始的時間排序,一個單模式的片段如果重復次數大于global_rep,那么它本身就是一個合法答案,但是每次枚舉過程中,我們總要盡力的把新的事件加入到已有的事件序列中。同時,如果新的片段距離的開始位置距離已有片段的距離小于max_dis,那么我們也可以把它加入進去。但是一旦上述條件不符合的話,我們就可以跳出搜索了,因為我們是按照開始的時間順序有小到大排序的,這樣可以達到剪枝的效果。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢