一種基于有序復(fù)合樹結(jié)構(gòu)的數(shù)據(jù)流最大頻繁項(xiàng)集挖掘方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及人工智能、數(shù)據(jù)挖掘技術(shù)領(lǐng)域知識,具體為一種基于有序復(fù)合樹結(jié)構(gòu)的數(shù)據(jù)流最大頻繁項(xiàng)集挖掘方法。適用于金融數(shù)據(jù)時(shí)序挖掘、商業(yè)數(shù)據(jù)流關(guān)聯(lián)分析等眾多領(lǐng)域。
技術(shù)背景
[0002]隨著大數(shù)據(jù)時(shí)代的來臨,數(shù)據(jù)挖掘及其相關(guān)技術(shù)得到了越來越多的關(guān)注。數(shù)據(jù)挖掘是指以某種方式分析數(shù)據(jù)源,從中發(fā)現(xiàn)一些潛在的有用的信息,所以數(shù)據(jù)挖掘又稱作知識發(fā)現(xiàn),而關(guān)聯(lián)規(guī)則挖掘則是數(shù)據(jù)挖掘中的一個(gè)很重要的課題,顧名思義,它是從數(shù)據(jù)背后發(fā)現(xiàn)事物之間可能存在的關(guān)聯(lián)或者聯(lián)系。最經(jīng)典的例子莫過于啤酒和尿布的案例。隨著大型連鎖零售商店在零售市場上份額的增加,越來越多的超市或連鎖店都迫切希望發(fā)現(xiàn)其龐大的交易數(shù)據(jù)庫中隱含的相關(guān)銷售信息。不僅如此,當(dāng)人們對相關(guān)事務(wù)之間聯(lián)系的探宄越發(fā)深入之后,關(guān)聯(lián)規(guī)則挖掘的應(yīng)用范圍也變得越來越廣。諸如電商企業(yè)通過對消費(fèi)者一段時(shí)期內(nèi)的購物記錄分析,采用關(guān)聯(lián)規(guī)則挖掘找出事物之間隱含的聯(lián)系,從而分析消費(fèi)者可能的偏好;在金融領(lǐng)域,研宄人員對不同的金融數(shù)據(jù)流進(jìn)行關(guān)聯(lián)規(guī)則分析,預(yù)測未來的發(fā)展走勢。
[0003]這里需要注意關(guān)聯(lián)規(guī)則是單向的,是指某類項(xiàng)目或特征與另一類項(xiàng)目或特征間所存在的單向影響關(guān)系。一般相關(guān)系數(shù)對兩類特征或項(xiàng)目的描述都是對稱的,而且只能處理定序以上層次的數(shù)據(jù)。而實(shí)際經(jīng)濟(jì)生活中常會出現(xiàn)兩方面的關(guān)系并不對稱或者數(shù)據(jù)僅僅是定類層次的情況。此時(shí)用關(guān)聯(lián)規(guī)則來描述相當(dāng)有效,而且對經(jīng)濟(jì)決策也相當(dāng)有用。
[0004]關(guān)聯(lián)規(guī)則的挖掘,通常是指定支持度、置信度、增益這三個(gè)標(biāo)準(zhǔn)的最小值(支持度有時(shí)還限定最大值),三個(gè)標(biāo)準(zhǔn)的取值都大于臨界值的關(guān)聯(lián)規(guī)則就被列出。關(guān)聯(lián)規(guī)則挖掘的算法有很多,其基本思路一般是采用遞推算法,首先將滿足支持度要求的規(guī)則列出作為候選集(稱為頻繁項(xiàng)集),然后在候選集中產(chǎn)生滿足置信度或增益要求的規(guī)則。為了提高挖掘效率,人們又從幾個(gè)方面提高產(chǎn)生頻繁項(xiàng)集的效率,比如劃分原數(shù)據(jù),采用并行算法產(chǎn)生頻繁項(xiàng)集、對數(shù)據(jù)進(jìn)行抽樣以減少計(jì)算量等,從而產(chǎn)生了許多優(yōu)化的計(jì)算方法。由于最大頻繁項(xiàng)集中隱含了所有頻繁項(xiàng)集,因此對其挖掘具有更加重要的意義。
[0005]本發(fā)明針對目前存在的最大頻繁項(xiàng)集挖掘方法執(zhí)行效率偏低、內(nèi)存消耗過多等問題,提出一種基于有序復(fù)合樹結(jié)構(gòu)的數(shù)據(jù)流最大頻繁項(xiàng)集挖掘方法。通過該方法能夠科學(xué)合理有效快速得對各領(lǐng)域的數(shù)據(jù)流進(jìn)行關(guān)聯(lián)規(guī)則分析。
【發(fā)明內(nèi)容】
[0006]本發(fā)明要克服現(xiàn)有最大頻繁項(xiàng)集挖掘方法存在的不足,提供一種基于有序復(fù)合樹結(jié)構(gòu)的數(shù)據(jù)流最大頻繁項(xiàng)集挖掘方法,采用滑動窗口處理數(shù)據(jù)流,分割滑動窗口為若干個(gè)基本單位,更新獲取數(shù)據(jù)流片段信息,單遍掃描片段信息得到頻繁項(xiàng)集并存儲于頻繁項(xiàng)集列表內(nèi)。
[0007]本發(fā)明方法構(gòu)建的有序FP-tree,隨項(xiàng)集的插入,動態(tài)調(diào)整樹型結(jié)構(gòu),合并同一分支中支持度相等的鄰接結(jié)點(diǎn),壓縮生成有序復(fù)合FP-tree。該方法能夠高效、快速得對數(shù)據(jù)流進(jìn)行最大頻繁項(xiàng)集挖掘。
[0008]本發(fā)明提出的基于有序復(fù)合樹結(jié)構(gòu)的數(shù)據(jù)流最大頻繁項(xiàng)集挖掘方法,包括以下步驟:
[0009]I)頻繁項(xiàng)集列表的構(gòu)建:獲取基本滑動窗口中的數(shù)據(jù)流片段信息,設(shè)ε為允許偏差因子,S為最小支持度。為了減小誤差,在實(shí)際操作中取S-ε為最小支持度閾值,單遍掃描基本窗口中的項(xiàng)目數(shù)據(jù)集得到按支持度由高到低排序(當(dāng)支持度相等時(shí),按一定的文法順序排序,通常按字典順序)的一項(xiàng)集頭表及剔除非頻繁項(xiàng)目的頻繁項(xiàng)集列表。其中,頻繁項(xiàng)集列表的特征簡述如下:頻繁項(xiàng)集列表中的項(xiàng)集按項(xiàng)目的長度排序,長度相同時(shí),按首字母排序(首字母的順序遵循頭表中的排序);項(xiàng)目內(nèi)元素按支持度高低排序。
[0010]2)有序復(fù)合樹結(jié)構(gòu)的創(chuàng)建:新建有序FP-tree的根結(jié)點(diǎn)root,初始化為null,將頻繁項(xiàng)集列表中的項(xiàng)目依次插入該樹中。插入時(shí),遞歸調(diào)用insert_tree([i 11], T)方法,其中i指向當(dāng)前插入的項(xiàng)目,I為項(xiàng)集列表中剩余的項(xiàng)目集合,T為有序FP-tree,初始時(shí)T即為根結(jié)點(diǎn)root。生成有序FP-tree后,合并同一分支中支持度相等的鄰接結(jié)點(diǎn),壓縮生成有序復(fù)合FP-tree。
[0011]insert_tree([i 11], T)方法描述如下:按頻繁項(xiàng)集列表中項(xiàng)目順序依次插入該多叉樹。新項(xiàng)目中的元素插入時(shí),遇到結(jié)點(diǎn)不同時(shí),并不直接產(chǎn)生分支,而是繼續(xù)搜索當(dāng)前路徑,向下比較。比較的原則為:設(shè)當(dāng)前搜索到的結(jié)點(diǎn)為i,待插入結(jié)點(diǎn)j,若j與i不相同,且j在一項(xiàng)集頭表中的位置位于i的下方,則向i的子樹搜索,直至找到相同結(jié)點(diǎn)或搜索到的結(jié)點(diǎn)在頭表中的位置位于j的下方,停止,而后產(chǎn)生分支。
[0012]結(jié)點(diǎn)調(diào)整方式:在依次插入的過程中,對上一次插入的結(jié)點(diǎn)進(jìn)行調(diào)整,設(shè)同一路徑中兩結(jié)點(diǎn)為i,j。i是j的父結(jié)點(diǎn),若j的支持度大于i的支持度,則進(jìn)行調(diào)整,將i的父結(jié)點(diǎn)作為j的父結(jié)點(diǎn),i作為j的孩子結(jié)點(diǎn)。
[0013]3)最大頻繁項(xiàng)集的存儲:挖掘出最大頻繁項(xiàng)集,并存儲于MFP_tree[]中,對新到達(dá)基本窗口的項(xiàng)目或者離開的舊項(xiàng)目,采用增量更新方法進(jìn)行處理。
[0014]挖掘有序復(fù)合FP-tree中最大頻繁項(xiàng)集的方法為按支持度由低到高的順序搜索有序復(fù)合FP-tree中的每一層結(jié)點(diǎn),在同一層按照從左向右的順序。由于有序復(fù)合FP-tree的結(jié)構(gòu)特性,搜索到第一個(gè)支持度大于最小支持度的結(jié)點(diǎn)時(shí),即停止對該結(jié)點(diǎn)的前綴結(jié)點(diǎn)進(jìn)行最小支持度的比較,直接將該結(jié)點(diǎn)以及它的前綴結(jié)點(diǎn)存于MFP-tree[]中。
[0015]說明:對于某結(jié)點(diǎn)j,j有孩子結(jié)點(diǎn),且j的支持度大于或等于最小支持度,但其孩子結(jié)點(diǎn)支持度之和不等于j,則不將該計(jì)入父結(jié)點(diǎn)構(gòu)成的最大頻繁項(xiàng)集中。
[0016]增量更新方法:新項(xiàng)目到達(dá)基本窗口時(shí),根據(jù)步驟I)更新一項(xiàng)集頭表和頻繁項(xiàng)集列表,根據(jù)步驟2)更新有序復(fù)合FP-tree,同時(shí)更新MFP-tree[]中的最大頻繁項(xiàng)集。
[0017]本發(fā)明采用滑動窗口處理數(shù)據(jù)流,分割滑動窗口為若干個(gè)基本單位,更新獲取數(shù)據(jù)流片段信息,單遍掃描片段信息得到頻繁項(xiàng)集并存儲于頻繁項(xiàng)集列表內(nèi)。方法構(gòu)建的有序FP-tree,隨項(xiàng)集的插入,動態(tài)調(diào)整樹型結(jié)構(gòu),合并同一分支中支持度相等的鄰接結(jié)點(diǎn),壓縮生成有序復(fù)合FP-tree。該發(fā)明能夠很好的對海量數(shù)據(jù)流進(jìn)行快速得頻繁項(xiàng)集挖掘,并具有良好的魯棒性。
[0018]本發(fā)明的有益效果在于:
[0019]本發(fā)明大大提高了數(shù)據(jù)流頻繁項(xiàng)集的挖掘速度,僅消耗較小的內(nèi)存,具有良好的應(yīng)用價(jià)值。
【附圖說明】
[0020]圖1是本發(fā)明的基于滑動窗口的FP-tree結(jié)構(gòu)的示意圖。
[0021]圖2是本發(fā)明的基于滑動窗口的有序FP-tree結(jié)構(gòu)的示意圖。
[0022]圖3是本發(fā)明的有序復(fù)合FP-