
算法介紹
以時(shí)間順序挖掘周期性的模式(即周期性分析)是一種重要的數(shù)據(jù)挖掘方式,在以前的研究中我們假設(shè)每個(gè)時(shí)間點(diǎn)只發(fā)生一個(gè)事件,然而在這篇文章中我們研究一種更普遍的模式:即在每個(gè)時(shí)間點(diǎn)可以發(fā)生多個(gè)事件。
在這個(gè)算法中我們需要自己設(shè)置三個(gè)參數(shù):min_rep, max_dis, global_rep。分別代表“一個(gè)有效序列的最小重復(fù)次數(shù)”、“相鄰有效序列最大允許擾動(dòng)”、“有效序列總的要求重復(fù)次數(shù)”。其實(shí)在算法最后中我們會(huì)發(fā)現(xiàn),我們也可以設(shè)置另外一個(gè)參數(shù)Lmaxn,即允許的最大周期。
最后,這個(gè)算法原作者似乎認(rèn)為效果不錯(cuò),->.->
問題定義
在這個(gè)部分中,我們定義一些異步周期挖掘的問題。
E代表所有事件的集合,即一個(gè)事件的集合一定是E的一個(gè)非空子集。信息庫D是一系列的時(shí)間記錄,每一個(gè)記錄用一個(gè)數(shù)組來表示(tid, X),表示在tid時(shí)刻發(fā)生了集合X中的事件。同時(shí)D的這種表示方法我們定義為水平表達(dá)格式(horizontal format),具體請(qǐng)看下表。同時(shí)對(duì)于另一個(gè)事件集合Y,我們定義Y是被一個(gè)時(shí)間記錄所支持需滿足:Y?X。一個(gè)有k個(gè)事件的序列一般稱為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:一個(gè)以l為周期的模式是一個(gè)非空序列P=(p1,p2,…,pl),其中p1是一個(gè)事件序列,其他的或者是一個(gè)事件序列,或者是*,即可以理解為任何序列。
一個(gè)模式P若包含i個(gè)事件則被稱作i-模式(i-pattern)。特別的,我們稱1-模式為單模式(singular patterns),當(dāng)i>1時(shí)我們稱之為復(fù)雜模式(complax patterns),例如(A, *, *)是一個(gè)單模式而(A, B, *)是一個(gè)2-模式,也稱為復(fù)雜模式。如果一個(gè)模式不包含任何“*”我們就稱之為滿模式(full pattern),否則就稱之為部分模式(partial pattern)。
定義 2:設(shè)有周期為了的模式P=(p1,p2,…,pl)和一個(gè)包含l個(gè)事件的集合D’=(d1,d2,…,dl),我們定義P匹配D’當(dāng)且僅當(dāng)對(duì)于每個(gè)j(1<=j<=l),或者pj=*,或者pj?dj。D’也可以稱為P的一個(gè)匹配項(xiàng)。
比如現(xiàn)在有一個(gè)模式P=(A, B, *),那么*顯然可以和任何事件序列匹配,于是如果我們有D=(A, B, C)就是一個(gè)P的一個(gè)匹配項(xiàng)。
定義 3:為了方便,我們用一個(gè)4元組(P, l, rep, pos)來定義一個(gè)模式片段P,它的周期l,開始位置是pos,并重復(fù)rep次,一般我們假設(shè)這個(gè)rep要取最大值(maximum segment)。
定義 4:一個(gè)最大片段(maximum segment)是一個(gè)有效片段當(dāng)且僅當(dāng)其重復(fù)次數(shù)不小于參數(shù)min_rep。
我們?cè)俣x一下擾動(dòng)的概念:連個(gè)片段的擾動(dòng)就是第一個(gè)片段的尾部和第二個(gè)片段的開始的位置之間的距離。例如在下圖中,S1和S3之間的擾動(dòng)是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:假設(shè)一個(gè)時(shí)間的數(shù)據(jù)庫D和一個(gè)模式P,序列D是一系列不重合的有效序列,并且其中任意相鄰片段的擾動(dòng)小于一個(gè)預(yù)定的值,我們稱之為最大擾動(dòng)max_dis。一個(gè)序列被稱作是有效的當(dāng)且僅當(dāng)P的全部的重合的次數(shù)大于一個(gè)預(yù)定的參數(shù)global_rep。
對(duì)于Fig.1b,如果我們?cè)O(shè)min_rep = 2, global_rep = 6, max_dis = 8,那么我們將會(huì)得到兩個(gè)有效序列(S1, S2),和(S1, S3)。而我們的任務(wù)找到所有有效的周期序列,其周期在1~Lmax之間,其中Lmax由用戶給定。
算法預(yù)覽
在這個(gè)模塊中,我們從挖掘單模式的周期序列到復(fù)雜模式周期序列,展示一下在時(shí)間數(shù)據(jù)庫中異步周期序列挖掘的過程。首先一個(gè)稱為“SPMiner”被用來找所有的單模式周期序列,它的原理主要是潛在循環(huán)試探(Potential Cycle Detection)和基于哈希的表(Hash-Based Validation)。然后,兩個(gè)算法“MPMiner”和“CPMiner”被用來尋找有效的多重單模式(multievent 1-patterns)和復(fù)雜模式序列(complex patterns)。最后,所有的有效片段都可以組合在一起來檢測(cè)是否滿足要求,即最后的”APMiner”。詳細(xì)見下圖:
現(xiàn)在我們分步驟來講解每一步的具體方法及部分偽代碼
SPMiner:Segment Mining for Single Event Pattern
首先,我們?cè)谇懊嫣徇^一種叫做水平數(shù)據(jù)格式(horizontal database layout)的數(shù)據(jù)結(jié)構(gòu),現(xiàn)在我們要使用一種和其相對(duì)應(yīng)的垂直數(shù)據(jù)格式(vertical database format),具體請(qǐng)見下表,它可以大大提高我們的搜索效率。
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)測(cè)探所有在1~Lmax之間的可能周期,具體看偽代碼。
HBV算法(Hash-Based Validation)可以對(duì)于每個(gè)潛在的周期p和一個(gè)事件列表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));
最后我們會(huì)得到如下的結(jié)果
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 |
這里我們直接介紹推薦的SBE算法(Segment-Based Enumeration)。
SBE算法的思路是,對(duì)于一個(gè)周期p,先在上表中找到周期為p的項(xiàng)。我們假設(shè)一個(gè)變量off = start % p,這樣我們?cè)诖瞬秸业降慕M合內(nèi)部off則一定相同。如果最后重合部分還大于參數(shù)min_rep,那么我們就成功的找到了一組答案了。而對(duì)于重合的部分,我們也可以根據(jù)上表在O(1)的時(shí)間內(nèi)計(jì)算出來。
這一步的做法和上一步的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);
就像我們?cè)诙x5中說的那樣,一個(gè)異步周期模式被定義為有一組序列互不重合。因此我們還需使用深度優(yōu)先搜索來枚舉所有的組合方式?,F(xiàn)在假設(shè)我們把所有的片段按照開始的時(shí)間排序,一個(gè)單模式的片段如果重復(fù)次數(shù)大于global_rep,那么它本身就是一個(gè)合法答案,但是每次枚舉過程中,我們總要盡力的把新的事件加入到已有的事件序列中。同時(shí),如果新的片段距離的開始位置距離已有片段的距離小于max_dis,那么我們也可以把它加入進(jìn)去。但是一旦上述條件不符合的話,我們就可以跳出搜索了,因?yàn)槲覀兪前凑臻_始的時(shí)間順序有小到大排序的,這樣可以達(dá)到剪枝的效果。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03