本發(fā)明屬于存儲器技術(shù)領(lǐng)域,具體涉及一種基于內(nèi)存的頻繁模式挖掘方法。
背景技術(shù):
隨著計算機(jī)科技的日益成熟,數(shù)據(jù)分析自20世紀(jì)確立以來有了極大的發(fā)展。數(shù)據(jù)分析能夠在海量數(shù)據(jù)中發(fā)現(xiàn)并提取出感興趣的項目,從而給決策機(jī)構(gòu)提供指導(dǎo)意見。機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘能夠揭示數(shù)據(jù)背后隱藏的信息,已成為是數(shù)據(jù)分析的關(guān)鍵技術(shù)。
在數(shù)據(jù)挖掘領(lǐng)域中,發(fā)現(xiàn)數(shù)據(jù)集中的頻繁項或頻繁模式是數(shù)據(jù)挖掘研究中的一個重要課題,它是相關(guān)性分析、序列模式、因果關(guān)系、顯露模式等許多重要數(shù)據(jù)挖掘任務(wù)的基礎(chǔ)。目前有諸如Apriori和FP-tree等技術(shù)來處理頻繁模式挖掘問題。
由于基于內(nèi)存的頻繁模式挖掘方法的條件是,被挖掘數(shù)據(jù)和數(shù)據(jù)元是保存在字節(jié)尋址寄存器上的,而DRAM要求需要持續(xù)供電來保持?jǐn)?shù)據(jù),因此,能效和持久性可能成為數(shù)據(jù)挖掘系統(tǒng)中的關(guān)鍵設(shè)計問題。為了解決該類問題,在基于內(nèi)存的數(shù)據(jù)分析中如相變存儲器(PCM)等非易失性存儲器(NVM)由于其出色的非易失性和能效性能,通常被認(rèn)為是DRAM的優(yōu)秀替代品。但使用NVM作為主存又存在以下的問題:一是對NVM的讀寫操作時間差異比較大,讀操作通常比寫操作所耗費(fèi)的時間和能量更多;二是NVM寫操作次數(shù)有限,不均勻的寫操作通常會加速整塊NVM失效。正是由于缺乏對NVM本質(zhì)特點的考慮,目前在NVM上進(jìn)行的數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)算法嚴(yán)重影響存儲系統(tǒng)的性能和壽命。
現(xiàn)有技術(shù)采用一種叫做FP-tree算法的技術(shù)方案,它是對Apriori算法的改進(jìn),將頻繁模式的關(guān)鍵信息壓縮為頻繁模式樹(FP-tree)的結(jié)構(gòu),以減少Apriori算法中開銷巨大的候補(bǔ)項,從而解決了Apriori算法的性能瓶頸。簡單地說,F(xiàn)P-tree算法是在不生成候選項的情況下,完成Apriori算法的功能。
J. Han, J. Pei, and Y. Yin. Mining frequent patterns without candidate generation. ACM SIGMOD International Conference on Management of Data (SIGMOD’00), 29(2):1–12, May 2000.(J. Han, J. Pei, and Y. Yin. “不產(chǎn)生候選項的頻繁模式挖掘”,數(shù)據(jù)管理國際會議, 29(2):1–12, 2000.05.)記載了FP-tree算法的步驟如下:
(1) 掃描整個事務(wù)數(shù)據(jù)庫D一次,獲得D中所包含的全部項的支持度計數(shù),排除支持度計數(shù)值小于閾值的項,剩余的項即為頻繁項,對頻繁項按其支持度計數(shù)降序排列得到一個列表L;
(2) 創(chuàng)建FP-tree的根節(jié)點T,以“null”標(biāo)記。再次掃描事務(wù)數(shù)據(jù)庫。對D中每個事務(wù),將其中的頻繁項選出并按L中的次序排序。設(shè)排序后的頻繁項表為[p|P],其中p是第一個頻繁項,而P是剩余的頻繁項。調(diào)用insert_tree([p|P],T)。insert_tree([p|P],T)過程執(zhí)行情況如下:如果T有子女N使N .item_name=p.item_name,則N的計數(shù)增加1;否則創(chuàng)建一個新結(jié)點N,將其計數(shù)設(shè)置為1,鏈接到它的父結(jié)點T。如果P非空,遞歸地調(diào)用insert_tree(P,N)。
經(jīng)過以上步驟,就建立好了一棵完整的FP-tree。最后根據(jù)建立好的FP-tree由下往上循序進(jìn)行挖掘,即可產(chǎn)生所需要的頻繁模式。簡言之可描述為利用事務(wù)數(shù)據(jù)庫中的信息構(gòu)造FP-tree,然后從FP-tree中挖掘頻繁模式。其核心思想是直接壓縮數(shù)據(jù)庫構(gòu)建一個頻繁模式樹,然后通過這棵樹生成關(guān)聯(lián)規(guī)則。
圖1給出了FP-tree的構(gòu)建過程示例。圖1(a)為數(shù)據(jù)庫,其中“交易ID”為每一條交易記錄的序號,“項目”為每一條交易記錄中的所有項,“排序后的項”為按照每個項出現(xiàn)次數(shù)降序排列后的項;首先建立一個標(biāo)簽為null的結(jié)點作為整個頻繁模式樹的根節(jié)點,掃描第一條交易記錄后,建立結(jié)點a,并令結(jié)點a的計數(shù)域的值為1,表明項目a出現(xiàn)1次,如圖1(b)所示;掃描第二條交易記錄后,依次建立結(jié)點b,c,d,其結(jié)點計數(shù)域的值均為1,表明項目b,c,d也分別出現(xiàn)1次,如圖1(c)所示;依次掃描完數(shù)據(jù)庫中所有交易記錄后,建立的完整的FP-tree如圖1(d)所示,其中各字母表示數(shù)據(jù)庫中的項,字母后的數(shù)字表示計數(shù)域中存儲的值,即為該項在數(shù)據(jù)庫中出現(xiàn)的次數(shù)。
但FP-tree算法存在的問題有:在構(gòu)建頻繁模式樹的過程中,每掃描一條事務(wù)中的一個項,都要對FP-tree進(jìn)行更新操作,即對FP-tree中對應(yīng)項的結(jié)點計數(shù)域進(jìn)行寫操作,這就導(dǎo)致了大量重復(fù)的寫操作,內(nèi)存開銷巨大;且越靠近根節(jié)點的寫操作越多,密集的大量寫操作會導(dǎo)致NVM的使用壽命減少。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)存在的問題,本發(fā)明所要解決的技術(shù)問題就是提供一種基于內(nèi)存的頻繁模式挖掘方法,它能減少在構(gòu)建頻繁模式樹過程中對NVM的寫操作,能避免密集的大量寫操作,達(dá)到延長NVM壽命的目的
本發(fā)明所要解決的技術(shù)問題是通過這樣的技術(shù)方案實現(xiàn)的,它包括以下步驟:
步驟1,構(gòu)建頻繁模式初始樹
1)、依次掃描數(shù)據(jù)庫中的每一條交易記錄,獲得數(shù)據(jù)庫中所包含的全部項的支持度計數(shù),排除支持度計數(shù)值小于閾值的項,剩余的項即為頻繁項,對頻繁項按其支持度計數(shù)降序排列得到一個列表L;
2)、創(chuàng)建頻繁模式樹的根結(jié)點T,以“null”標(biāo)記;
3)、再次掃描數(shù)據(jù)庫,將讀取的每條事務(wù)中的頻繁項選出并按L中的次序排序;排序后以null為根結(jié)點構(gòu)建一條頻繁模式樹的路徑,只對路徑上位于最末的結(jié)點的計數(shù)加1,路徑上的其他結(jié)點的計數(shù)保持不變;依次掃描完整個數(shù)據(jù)庫中所有事務(wù)后獲得頻繁模式初始樹;
步驟2,用深度優(yōu)先搜索算法對頻繁模式初始樹依次進(jìn)行遍歷,遍歷結(jié)點的計數(shù)器值為該結(jié)點本身的值加上其所有孩子結(jié)點的值。
本發(fā)明的頻繁模式樹中所有元素的計數(shù)域的值即為該元素在整個數(shù)據(jù)庫中出現(xiàn)的次數(shù),與現(xiàn)有技術(shù)的頻繁模式挖掘算法構(gòu)建的樹一樣。
與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)效果是:
本發(fā)明不再對當(dāng)前整條事務(wù)中的所有項的結(jié)點的計數(shù)域進(jìn)行更新操作,避免了在構(gòu)建頻繁模式樹過程中的大量重復(fù)的寫操作,減少對NVM的寫操作,能快速的構(gòu)建頻繁模式樹;且能減少對靠近根結(jié)點的結(jié)點計數(shù)域的大量密集的寫操作,延長了NVM壽命。
附圖說明
本發(fā)明的附圖說明如下:
圖1為背景技術(shù)中的頻繁模式樹的構(gòu)建示例圖;
圖2為本發(fā)明構(gòu)建頻繁模式初始樹的流程圖;
圖3為本發(fā)明的頻繁模式樹的構(gòu)建示例圖;
圖4為試驗中讀操作測試的對比圖;
圖5為試驗中寫操作測試的對比圖;
圖6為試驗中構(gòu)建樹時間測試的對比圖;
圖7為試驗中PCM壽命測試的對比圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明作進(jìn)一步說明:
本發(fā)明的輸入是數(shù)據(jù)庫和最小支持度閾值σ,輸出是FP-tree。
本發(fā)明包括以下步驟:
步驟1,構(gòu)建頻繁模式初始樹
1)、依次掃描數(shù)據(jù)庫中的每一條交易記錄,獲得數(shù)據(jù)庫中所包含的全部項的支持度計數(shù),排除支持度計數(shù)值小于閾值的項,剩余的項即為頻繁項,對頻繁項按其支持度計數(shù)降序排列得到一個列表L;
2)、創(chuàng)建頻繁模式樹的根結(jié)點T,以“null”標(biāo)記;
3)、再次掃描數(shù)據(jù)庫,將讀取的每條事務(wù)中的頻繁項選出并按L中的次序排序;排序后以null為根結(jié)點構(gòu)建一條頻繁模式樹的路徑,只對路徑上位于最末的結(jié)點的計數(shù)加1,路徑上的其他結(jié)點的計數(shù)保持不變;依次掃描完整個數(shù)據(jù)庫中所有事務(wù)后獲得頻繁模式初始樹。
圖2為本發(fā)明構(gòu)建頻繁模式初始樹的流程圖,其流程如下:
在步驟S21,將每個事務(wù)中未達(dá)到最小支持度的項刪去,對剩下的項按其出現(xiàn)次數(shù)降序排序;
在步驟S22,依次掃描數(shù)據(jù)庫中的事務(wù);
在步驟S23,依次掃描事務(wù)中的每一個項,從前到后沿樹從根結(jié)點往下遍歷;
在步驟S24,判斷當(dāng)前項是否為事務(wù)中最末尾的項,若是,執(zhí)行步驟S25;如不是,則執(zhí)行步驟S27;
在步驟S25,判斷樹中是否存在相應(yīng)結(jié)點,如存在,則執(zhí)行步驟S26;如不存在,則執(zhí)行步驟S29;
在步驟S26,遞增該項中計數(shù)域的值;然后轉(zhuǎn)至步驟S210;
在步驟S27,判斷樹中是否存在相應(yīng)結(jié)點,如存在,則返回步驟S23;如不存在,則執(zhí)行步驟S28;
在步驟S28,創(chuàng)建新結(jié)點,令其計數(shù)域的值為0;然后回步驟S23;
在步驟S29,創(chuàng)建新結(jié)點,令其計數(shù)域的值為1;然后轉(zhuǎn)至步驟S210;
在步驟S210,判斷所有事務(wù)是否掃描完畢,若未掃描完畢,則返回步驟S22;若掃描完畢,則執(zhí)行步驟S211
在步驟S211,程序結(jié)束;
步驟2,構(gòu)建完整的頻繁模式樹
用深度優(yōu)先搜索算法對頻繁模式初始樹依次進(jìn)行遍歷,遍歷結(jié)點的計數(shù)器值為該結(jié)點本身的值加上其所有孩子結(jié)點的值。
實施例
圖3為本發(fā)明構(gòu)建頻繁模式樹的一個實例,本實施例包括以下步驟:
步驟1,根據(jù)圖3(a)數(shù)據(jù)庫構(gòu)建頻繁模式初始樹,具體過程如下:
如圖3(b)所示,建立一個標(biāo)簽為null的結(jié)點作為整個頻繁模式樹的根節(jié)點;掃描第一條交易記錄后,建立結(jié)點a,令結(jié)點a的計數(shù)域值為1,表明項目a出現(xiàn)1次;
如圖3(c)所示,掃描第二條交易記錄后,構(gòu)建結(jié)點b、c、d,令b、c的count域值為0,d的count域值為1,表明項目d出現(xiàn)1次(此時為了減少構(gòu)建頻繁模式樹時產(chǎn)生冗余的寫,并不記錄b,c出現(xiàn)的次數(shù),僅記錄位于該條交易記錄末尾的項d出現(xiàn)的次數(shù),因為之后b,c出現(xiàn)的次數(shù)可根據(jù)其孩子結(jié)點的計數(shù)域的值得到);
如圖3(d)所示,依次掃描完整個數(shù)據(jù)庫所有交易記錄后所構(gòu)建出的初始樹;
步驟2,構(gòu)建完整的頻繁模式樹
如圖3(e)所示,用深度優(yōu)先搜索算法對頻繁模式初始樹依次進(jìn)行遍歷,遍歷結(jié)點的計數(shù)器值為該結(jié)點本身的值加上其所有孩子結(jié)點的值。例如c計數(shù)域的值為c原來的值0與d計數(shù)域的值5之和,最終得出c出現(xiàn)5次;f計數(shù)域的值為f的孩子結(jié)點e和g的值與f原來的值3之和,最終得出f出現(xiàn)6次。依次遍歷完頻繁模式樹之后,構(gòu)建出完整的頻繁模式樹。
實驗測試
選取不同類型的數(shù)據(jù)集進(jìn)行試驗,統(tǒng)計各個數(shù)據(jù)集的讀寫操作次數(shù)、總的構(gòu)建樹的時間和PCM壽命。這些數(shù)據(jù)集的名稱分別為T10I4D100K、T40I10D100K、chess、mushroom、pumsb*、connect、pumsb、accidents、C73D10、C20D10。
實驗結(jié)果參見圖4至圖7:
圖4中,縱坐標(biāo)代表讀的次數(shù),橫坐標(biāo)代表各個數(shù)據(jù)集,從圖4看出,本發(fā)明減少了大量的讀操作;
圖5中,縱坐標(biāo)代表寫的次數(shù),橫坐標(biāo)代表各個數(shù)據(jù)集,從圖5看出,本發(fā)明減少了大量的寫操作;
圖6中,縱坐標(biāo)代表總的構(gòu)建樹的時間,橫坐標(biāo)代表各個數(shù)據(jù)集,從圖6看出,本發(fā)明減少了構(gòu)建樹的時間;
圖7中,縱坐標(biāo)代表直到PCM被寫壞,能處理的總的交易數(shù)目,橫坐標(biāo)代表各個數(shù)據(jù)集,從圖7中看出,本發(fā)明最少可延長PCM的壽命為16.67%(發(fā)生在數(shù)據(jù)集T40I10D100K),最大可延長99.05%(發(fā)生在數(shù)據(jù)集connect),極大地延長了PCM的壽命。