韓格格,黃艷紅,姜娜娜,徐曉慶
(寧夏氣象信息中心,寧夏銀川,750002)
Apriori是數(shù)據(jù)挖掘經(jīng)典算法之一,但是也具有一定局限性。Apriori算法每次生成頻繁集都要重復掃描一次數(shù)據(jù)庫,因此時間成本較大。王偉等[1]提出一種B_Apriori算法,該算法只需對數(shù)據(jù)庫進行一次掃描,然后通過邏輯運算的方式,計算出每一項的次數(shù),最終得到頻繁項集。李亮等[2]針對經(jīng)典Apriori算法的性能存在的問題,提出T-Apriori算法,該算法也只需要掃描一次數(shù)據(jù)庫,將數(shù)據(jù)轉化為布爾值矩陣,通過計算找出頻繁項集。這些改進后的算法與Apriori算法相比,雖然達到一定縮減時間的目的,但只是減少了數(shù)據(jù)庫掃描的次數(shù),并沒有縮小數(shù)據(jù)庫的規(guī)模。本文提出一種基于布爾矩陣的壓縮矩陣頻繁項集挖掘算法,將矩陣進行多次壓縮,對壓縮后矩陣的行向量進行邏輯運算,計算出每一項出現(xiàn)的次數(shù),最終得到頻繁項集,可以同時達到縮減掃描數(shù)據(jù)庫次數(shù)和縮小數(shù)據(jù)庫規(guī)模的目的。
基于關聯(lián)規(guī)則的氣象觀測數(shù)據(jù)質量控制算法包括以下三個步驟,即數(shù)據(jù)離散化處理、產(chǎn)生關聯(lián)規(guī)則、進行規(guī)則匹配[3]。
關聯(lián)規(guī)則的挖掘需要離散型數(shù)據(jù), 臺站得到的氣象觀測數(shù)據(jù)都是連續(xù)的,因此首先要對得到的基礎數(shù)據(jù)做離散化處理。將基礎數(shù)據(jù)中的各個氣象要素按照現(xiàn)行標準,進行等級劃分。以溫度為例,將數(shù)據(jù)按照以下等級劃分:大寒(-10 ~-14.9℃)、小寒 (-5 ~-9.9℃ )、輕寒 (-4.9 ~0℃ )、微寒 (0 ~4.9℃ )、涼 (5 ~9.9℃ )、溫涼 (10 ~11.9℃ )、微溫涼(12 ~13.9℃ )、溫和 (14 ~15.9℃ )、微濕和 (16 ~17.9℃ )、溫暖 (18 ~19.9℃ )、暖 (20 ~21.9℃ )、熱 (22 ~24.9℃ )等。
3.1.1 定義及性質
定義:Apriori算法是一種用迭代思想來挖掘出頻繁項集的算法,通過”k-1項頻繁項集"得到”k-項候選項集",進而得到“k-項頻繁項集”。首先,找出頻繁”1-項集"的集合L1,通過L1找出頻繁”2-項集"的集合L2,依次尋找L3、L4… Lk-1,直到不能找出頻繁”k-項集"為止。
支持度(support):support(A=>B) = P(A ∪ B),表示要素A和要素B同時出現(xiàn)的概率。
性質1 若項集Lk是頻繁項,那么Lk除空集外的所有子集也都是頻繁的;
推論1 若項集Lk是非頻繁項,那么所有包含Lk的項集都是非頻繁項集,因此包含Lk的項集可以直接刪除[4]。
3.1.2 算法流程
步驟1:設定一個最小支持度,將項集中所有不小于最小支持度的項,作為頻繁1-項集 L1;步驟2:通過L1自身連接生成候選項集C2;步驟3:根據(jù)上述性質1和推論1,將候選項集C2進行剪枝處理;步驟4:生成2-項頻繁項集L2;步驟5:重復步驟2~步驟4,直到不能找出頻繁”k-項集”為止。
3.1.3 產(chǎn)生關聯(lián)規(guī)則
通過以上步驟,將得到的所有滿足最小支持度的頻繁項集作為關聯(lián)規(guī)則,形成關聯(lián)規(guī)則庫。
不難看出,Apriori算法每一次尋找Lk的過程都要掃描數(shù)據(jù)庫D,挖掘頻繁項集存在時間效率低下的局限性,因此本文提出壓縮矩陣的頻繁項集挖掘算法。根據(jù)頻繁項集的性質,通過對矩陣壓縮來縮小數(shù)據(jù)庫規(guī)模,進而對壓縮后矩陣的行向量作邏輯“與”運算,加快計算的速度,提高效率,即本文提出的MC_Apriori算法。
3.2.1 布爾矩陣定義及性質
定義: 將數(shù)據(jù)庫D按以下規(guī)則轉化為矩陣M,項作為行,事務作為列,如果第j個項集在第i個事務中存在,則矩陣M的第i行、第j列的值dij=1,如果不存在,則dij=0。若數(shù)據(jù)庫 D 中含有n個事務(T1,T2…Tn), m個項(I1,I2…Im),則M可以表示為:
性質2:如果布爾矩陣M中某一項dnm與其他項進行“邏輯與”運算時,結果都是非頻繁項集,則可以將此列從布爾矩陣 M中刪除。
性質3:如果布爾矩陣中某一行的項數(shù)之和小于k,尋找頻繁k-項集時,則可以將此行從布爾矩陣 M中刪除。
3.2.2 MC_Apriori算法流程
步驟1: 將數(shù)據(jù)庫D轉化為布爾矩陣M;
步驟2:對布爾矩陣M中的列向量進行運算,與設定的最小支持度比較,得到1-項頻繁集L1;
步驟3:尋找頻繁1-項集時,如果項Ii是非頻繁的,則可以將此列從布爾矩陣 M中刪除,生成壓縮矩陣M1,得到頻繁1-項集;
步驟4:尋找頻繁k-項集時(k>=2),某一行的項數(shù)之和小于k,則可以將此行從布爾矩陣 M中刪除,生成壓縮矩陣Mk,計算得到頻繁k-項集;
步驟5:重復步驟4,直到不能產(chǎn)生頻繁k-項集為止。
將得到的所有滿足最小支持的頻繁項集作為關聯(lián)規(guī)則,用待檢測的氣象觀測數(shù)據(jù)中的每條記錄及其所有組合與關聯(lián)規(guī)則庫中的關聯(lián)規(guī)則進行匹配,直到遍歷完所有的規(guī)則為止,如果出現(xiàn)k條相匹配的規(guī)則,則認定當前觀測記錄為正常記錄,否則為異常記錄。
選取寧夏石炭井站2020年7月~8月的700條數(shù)據(jù)作為樣本數(shù)據(jù),選擇氣溫、10分鐘平均風速、本站氣壓、整點相對濕度四個要素為例進行實驗。經(jīng)過等級劃分預處理過的數(shù)據(jù)如圖1所示。
圖1 預處理之后數(shù)據(jù)
(1)產(chǎn)生關聯(lián)規(guī)則
用Apriori關聯(lián)規(guī)則算法和MC_Apriori算法計算頻繁項集,設置最小支持度閾值為0.05,獲得實驗數(shù)據(jù)集中的頻繁項集共85項,將這些頻繁項集作為關聯(lián)規(guī)則。獲得的部分關聯(lián)規(guī)則如圖2。
圖2 部分關聯(lián)規(guī)則
(2)改進前算法和改進后算法的時效對比
將Apriori關聯(lián)規(guī)則算法和MC_Apriori算法處理數(shù)據(jù)產(chǎn)生頻繁項集的時間進行對比。
對比結果表明:最小支持度小于0.35時,改進后的算法在時間效率上明顯優(yōu)于改進前的算法。
在700條樣本觀測數(shù)據(jù)中,植入30條異常數(shù)據(jù)進行測試。以氣溫為例,在原始氣溫值的基礎上將每條氣溫值增加10攝氏度作為異常數(shù)據(jù)。設置質量控制參數(shù)k=8,如果滿足匹配8條關聯(lián)規(guī)則庫中的規(guī)則時判定為正常數(shù)據(jù),否則判定為異常數(shù)據(jù)。
檢測結果為:30條異常數(shù)據(jù)中檢測出28條,存在2條異常數(shù)據(jù)被誤檢,找出錯誤數(shù)據(jù)率達到93.3%。其余670條數(shù)據(jù)中檢測出正確數(shù)據(jù)為662條,存在8條數(shù)據(jù)被誤檢,誤檢率為1%。
本文提出基于關聯(lián)規(guī)則的氣象觀測數(shù)據(jù)質量控制算法的模型,分析了Apriori算法存在的不足,提出了一種改進的MC_Apriori算法,對事務數(shù)據(jù)庫對應的布爾矩陣進行行、列壓縮縮減數(shù)據(jù)庫規(guī)模,然后利用按位與運算提高頻繁項集統(tǒng)計的速度,克服了傳統(tǒng)Apriori算法重復掃描數(shù)據(jù)庫的缺陷,提高了算法的執(zhí)行效率。同時對Apriori算法與MC_Apriori算法進行了時間性能比較,仿真結果表明在一定的支持度范圍內(nèi),MC_Apriori算法比Apriori算法更具時效性。最后,植入異常數(shù)據(jù),與規(guī)則庫中的關聯(lián)規(guī)則進行規(guī)則匹配,找出錯誤數(shù)據(jù)率達93.3%。