劉永富,陳永生
(同濟大學 電子與信息工程學院,上海 200331)
當今社會飛速發展,城市軌道交通已經成為都市生活密不可分的部分。作為一種安全、可靠、清潔、快捷的公共交通運輸方式,其為解決我國人口密集的大城市日益嚴重的交通擁擠問題的重要手段之一。至2010年底,上海已經投入運營 12條線。其中新投入的 6、7、8、9、11號線均采用基于通信的信號系統(CBTC),如此便會產生大量的日志數據。為了使維護人員能從維修層面,根據日志中所記載錯誤,快速對系統故障定位,繼而對設備進行相關修理,本文利用數據挖掘技術對日志進行關聯分析并根據關聯法則,增加錯誤診斷準確性,以防微杜漸,避免釀成事故。
日志分析系統的總體結構設計思路:以日志資源庫為基石,以分析平臺為運行支撐,以關聯分析功能為中心,建立系統架構,并在此系統架構的支持下開發軟件。
關于關聯算法的設計,選擇目前比較成熟的Apriori算法并加以改進。
Apriori算法是一種挖掘布爾關聯規則頻繁項集的算法。它利用頻繁項集性質,用逐層搜索的迭代方法來找出所有的頻繁項集。首先,找出頻繁1-項集的集合,該集合記作L1。L1用于找頻繁2-項集的集合 L2,而L2用于找L3,如此下去,直到不能找到頻繁k-項集為止。在第 k次循環中,先產生候選 k項集的集合 Ck,Ck的項集是用來產生頻繁項集的候選集。Ck中的每個元素在數據庫中根據支持度計數進行驗證,決定是否加入Lk[1-2]。
設有初始項目集 L, 包含 Zk(k=1~t),Zk=(z1,z2,z3,……),標志 TID(1~t),設 min_sup=a%,(即出現次數不少于 b次,b=a%×t)。設置 K為項目的元素數 (舉例見表1),算法如下:
(1)重建事務集數據庫:搜索包含 z1(單個item)的出現次數,生成u1; 搜索包含z2的出現次數,生成 u2; 以此類推,生成 un。
(2)在U中去掉出現次數少于b的項,簡化數據庫(存在臨時表中)。
(3)計算 u1∪u2,如交集中項數少于 b則舍去,大于b則儲存為新的集合。 同理計算 u1∪u3,u1∪u4,…,u1∪un,u2∪u3,…,un-1∪un。 新生成的頻繁 2項集合表示為 Ln。
(4)計算 L1∪L2。看 L2中第一個 item是否存在于 L1中:若存在,忽略;若不存在,則將此item與L1組成三項集,如交集中項數少于b則舍去,大于b則儲存,并儲存與之相應的項目集。同理類似處理 L1∪L3,L1∪L4,……L1∪Ln,L2∪L3……Ln-1∪Ln。 整理結 果 ,去 掉重復 的 項 目集,得到頻繁三項集。
(5)重復上述步驟,得到頻繁k項集。
在求解頻繁k+1項集的時候,若其不在長度為k的頻繁項集之間時,則必然不在長度為k+1-頻繁項集之中,而任意一個k-項集的支持度與規模小于它的事務無關,故可以直接舍去,從而減少掃描的數據量。因此可以在遍歷事務集時先遍歷長度為k的頻繁項集,若存在,再遍歷事務表。在隨后的過程中,及時刪除其中不可能出現在候選項集中的記錄,即字段長度不大于將要生成的k-頻繁項集k值,而且也不被包含在頻繁項集中的記錄。
改進算法通過先遍歷長度為k的頻繁項集,減少訪問事務表中的無效記錄,從而使訪問次數減少而提高了運行效率。
(1)初始事務表 ,取 min_sup=50%(=2),初始項目集表如表1所示。(2)項目集 Z5={1,2,3,4,5}經過變換,如表 2 所示。項目4去掉。表2中為新得到的頻繁一項集,將這些數據插入到臨時表Temp中。

表1 初始項目集表

表2 Z5={1,2,3,4,5}經過變換

表3 二項集

表4 三項集
(3)從 Temp表中得到 K值為1的事務集,根據算法敘述生成二項集,如表3所示。
根據支持度值,將事務集1 2、1 5去掉,得到頻繁二項集,將這些數據插入到臨時表Temp中。
(4)求出頻繁三項集
從Temp表中得到K值為2的事務集,根據算法敘述生成三項集,如表4所示。
根據支持度值,將事務集1 2 3、1 3 5 去掉得到頻繁三項集,將這些數據插入到臨時表Temp中。
(5)使用類似的方法可以求出頻繁K項集。
Alcatel-Thales CBTC信號系統中實現聯鎖功能的設備稱為 PMI,完整 CBTC調試完成后 PMI將屬于 ZC(區域控制器)的一部分,仍然實現聯鎖功能。主要組成:計算機聯鎖模塊 (MEI),看門狗機架 (CDG),通信模塊(SCOM)和維護輔助系統(SAM)。
ZC-PMI聯鎖結構如圖1所示。

圖1 ZC-PMI聯鎖結構
PMI接收到ATS的進路請求/進路取消命令,排列/取消進路。PMI會按進路定義中的順序預留進路元素。如果收到的進路有區域重疊,PMI按接收的順序排列重疊區域的進路。一旦進路使用完畢,PMI就會逐段解鎖進路。PMI不會激活敵對進路(反向進路、交叉進路)。數據庫中含有一個敵對進路表,PMI通過檢查該表來確保從ATS“進路請求”命令中接收到的進路,不會與現有的已排列進路相沖突。PMI通過ATS的“道岔動作”或“進路請求”命令接收道岔動作請求。如果道岔已經移動,那么PMI就拒絕ATS的道岔動作請求。PMI會評估道岔動作規則從而決定請求的道岔是否可以動作。如果道岔是故障的,那么PMI會拒絕道岔動作請求[3]。
PMI采用2*2取1的工作方式,如此每天便會產生大量的日志記錄,其中包括正常工作信息以及出錯信息。現主要對報錯、警告信息進行相關分析研究。PMI日志格式如圖2所示。
(1)日期時間:該記錄產生時間;
(2)行號:該記錄唯一標識;

圖2 PMI日志格式
(3)信息類型:A(報警或意見)、C(故障診斷或指示器)、E(消息發送)、P(狀態圖轉變)等;
(4)錯誤關鍵字:表示該記錄具體錯誤,例如:TAZ、COMP、DISPO 等;
(5)報警參數:表示該記錄產生的具體位置[2]。
將系統重啟一次表示為一個事務,日志中會記錄該次重啟的原因。重啟可能有多個錯誤,這就有必要分析其關聯性,從而做到防微杜漸。
分析步驟如下:
(1)建立如表5所示的ItemDB表,用于存儲事務集;

表5 ItemDB表結構
(2)建立如表6所示的Temp表,用于存儲頻繁項目集;
(3)遍歷日志,根據錯誤關鍵字進行文字匹配,將所有錯誤存入到ItemDB中作為事務集;
(4)利用關聯規則對事務集進行分析,得出錯誤之間的關聯性;

表6 Temp表結構
(5)分析關聯性,得出終結。
該系統主要完成了對PMI日志的研究,同時利用關聯規則進行了相關分析。借于此,對地鐵維護、檢修人員有如下好處:(1)快速對系統故障定位,修理相關設備;(2)增加錯誤診斷準確性,減少沒有必要的排查;(3)若錯誤A與錯誤B關聯,則A發生的情況下,須預防B發生,做到防微杜漸,避免釀成事故。
[1]朱輝生.關聯規則挖掘的兩種改進算法[J].計算機應用與軟件,2006,23(8):117-119.
[2]毛國君,段立娟.數據挖掘原理與算法[M].北京:清華大學出版社,2005.
[3]曹錦磊.簡析地鐵PMI系統[EB/OL].2009-8.
[4]法國THALES集團.PMI維護與安裝技術文檔[Z].2010.
[5]Judith Bishop.C#3.0 Design Patterns[M].O′Reilly Media,Inc.2007.