◆張 婷
(湖北省消防總隊 湖北 430061)
基于 Apriori關聯規則算法的消防大數據分析方法研究
◆張 婷
(湖北省消防總隊 湖北 430061)
本文運用消防云大數據平臺,通過Hadoop的相關組件,構建了分布式大數據采集分析框架,研究建立Apriori關聯規則算法對已輸入保存的大規模消防火災數據進行計算分析,力圖找出火災發生因素之間的關聯關系。
Apriori關聯規則;算法;大數據;消防
隨著我國經濟的發展,城鎮化建設加快步伐以及消防力量的有限,給消防部隊防火和滅火提出新的挑戰。隨著消防信息化建設水平的不斷提高,我國消防數據以驚人的速度增加,對于這些消防火災的大數據,如何加以采集、存儲與分析利用,結合大數據的計算技術找出火災發生的關鍵因素之間的某些關聯規則與客觀規律為我所用,成為急迫的當務之急。
MapReduce把對大規模數據集的操作,分發給一個主節點管理下的各個分節點共同完成,然后通過整合各個節點的中間結果,得到最終結果。
MapReduce分布式計算框架模型中,通過JobTracker通過任務調度,將Apriori關聯規則算法計算分配給每一個TaskTracker,TaskTracker將進行模型Apriori關聯規則算法計算火災數據,其計算結果通過調用的方式進行匯總,提高處理效率。
Apriori關聯規則算法判定條件:支持度(Support)和置信度(Confidence)
設I={i1,i2,…,im}是一個項目集合,事物數據庫D={t1,t2,…,tn}是由一系列具有唯一標識TID的事物組成,每個事物ti(I = 1, 2, … , n)都對應I上的一個子集。
例如在火災記錄中,I是全部火災因素的集合,D是火災出現的因素,每個元組ti是一次火災的因素集合,它便是I的一個子集。
如果一個項目集A?I,則它在D上的支持度是包含A事物集在D中所占的百分比。關聯規則是形如X?Y的邏輯蘊含式,其中X?I,Y?I,且X∩Y=?。如果事務數據庫D中有s%的事務包含X∪Y,則稱關聯規則X?Y的支持度為s%。
若還是有上定義在I和D形如X?Y關聯規則,它的置信度是指包含X和Y的事物數與包含X的事物數之比,給定全局項目集I和數據庫D ,D中所有滿足指定的最小支持度(MinSupport)的項目集,即大于或等于MinSupport的I的非空子集,稱為頻繁項目集(頻集)。在頻繁項目集中挑選出所有不被其他元素包含的頻繁項目集稱為最大頻繁項目集(最大頻集)。
在I上滿足最小支持度和最小置信度(MinConfidence)的關聯規則稱為強關聯規則。
假設考慮項集{A,B,C,D,E},這些項集任意的排列組合將會產生25=32項集組合,而每個項組合都是一個產生規則的可能候選項集。
由此可見在產生如此大量的規則,而這些規則大部分可能并不是都為我們所需要的,所以在產生的規則中我們需要篩選出那些支持度、置信度較高的強相關規則[3]。
首先,將循環數據集,將其中所有的1階項集全部找出來,根據預先設定的最小支持度閥值找出1階項集中的頻繁項集,記為I1。然后通過上步的1階頻繁項集計算2階候選集C2,同樣篩選出滿足條件的2階頻繁項集,記為I2;重復上面的步驟,直到根據 IK-1所產生的候選 CK中的所有項集支持度都小于最小支持度,即不再有頻繁項集產生為止。
不斷重復迭代的過程中,關于生成候選項集與置信度判斷涉及到“連接”與“剪枝”兩個部分。我們先看看 Apriori算法的重要性質:一個項集是頻繁的,它的所有非空子集都必須是頻繁項集。
連接是指由lK生成CK-1候選集的過程,lK自身與自身連接,連接的條件是兩個K項集合前k-1項相同,第K項不同。lK自身連接的目的是通過已知的頻繁項集構成長度更大的項集,這樣項集為頻繁項集的概率更大,從而減少了計算量。
在連接下,還是會產生非頻繁的候選項集,剪枝指的就是剔除這些非頻繁的候選項集。對任意候選頻繁項集 CK,如果其有k-1項子集不是頻繁的,則可以剔除此候選項集。
推導強規則方法:
對于每個頻繁子集(除了項集 )I,找出項集所有的非空真子集;
對于I的每一個子集s,形成一個規則s ? I-s;
對于每一個規則R,計算它的置信度conf(R) =sup(I)/sup(s) ;如果conf(R)≥min_conf,則選取R為強規則。
在省級消防云上,利用云的管理工具開設三個計算空間,分別在三個節點空間上安裝 JAVA并配置環境變量,使用:java version "1.8.0_141",安裝Hadoop 2.7.3。
配置集群文件- etc/hadoop/core-site.xml, etc/hadoop/hdfs-s ite.xml, etc/hadoop/yarn-site.xml and etc/ hadoop/mapred-site.xml,etc/hadoop/slaves.
啟動 Hadoop,查找進程,主節點 yuh1有 ResourceManager、NameNode、SecondaryNameNode;其他節點中 NodeManager、DataNode進程,Hadoop大數據環境搭建成功。
將2中的Apriori中算法過程,結合MapReduce模型:
String terms[]=value.tostring() .split(“,”)
對于第一次計算輸入map的key為火災標識,value為火災因素,以逗號隔開的形式。輸出以火災因素為新的標識 key,整數1為value,輸出的結果再經過reduce計算,輸出結果key為火災因素標識,value為求和數據,其中拋棄小于最小支持度數據,結果再經過計算,得出火災因素關聯關系。
從某省消防云大數據平臺的火警實時受理及出警系統中抽取近3年(2013年1月-2017年6月)火災數據構成分析計算的大數據實例集。由于數據涉及保密,選取常見的火災因素抽象成數字 1,2,3,4,5;火災類型名稱抽象成T100,T200,T300,T400;最小的支持度定義如0.5。
第一次掃描,因素1,出現次數為2次,2為3次,3為3次,4為1次,5為3次,表示為C1: {1}:2, {2}:3, {3}:3, {4}:1, {5}:3 ,其支持度分別是0.5、0.75、0.75、0.25、0.75,去掉支持度<0.5的,變成F1: {1}:2, {2}:3, {3}:3, {5}:3
得到數據,作為第二次計算的輸入數據因素 1,2同時出現為1次,1,3同時出現為2次,1,5同時出現為1次,2,3同時出現2次,2,5同時出現為3次,3,5同時出現為2次,表示C2: {1,2}:1,{1,3}:2, {1,5}:1, {2,3}:2, {2,5}:3, {3,5}:2,得到支持度為0.5、0.75、0.75、0.75,去掉支持度<0.5的得到F2: {1,3}:2, {2,3}:2, {2,5}:3,{3,5}:2
在這里要用到 Apriori算法的性質:K+1項頻繁集的任意 K項頻繁集必須是頻繁的,也就是說如果K+1項頻繁集中如果有一項K項頻繁集不頻繁,那么K+1項頻繁集也是不頻繁的。
進行第三此掃描同時出現2,3,5為2次表示為C3: {2, 3, 5}:2,其支持度為0,5,
得到最后的關聯規則。
為2時,同時出現3的支持度為0.5,置信度為0.6666667;
為3時,同時出現2的支持度為0.5,置信度為0.6666667;
為3時,同時出現5的支持度為0.5,置信度為0.6666667;
為5時,同時出現3的支持度為0.5,置信度為0.6666667;
為2時,同時出現5的支持度為0.75,置信度為1;
為5時,同時出現2的支持度為0.75,置信度為1
為2時,同時出現3和5的支持度為0.5,置信度為0.6666667;
為3和5時,同時出現2的支持度為0.5,置信度為1;
為3時,同時出現2和5的支持度為0.5,置信度為0.6666667;
為2和5時,同時出現3的支持度為0.5,置信度為0.6666667;
為5時,同時出現2和3的支持度為0.5,置信度為0.6666667;
為2和3時,同時出現5的支持度為0.5,置信度為1。
定義最小置信度定義為0.8,分析結果如下:
同時發生2,5的概率為0.75,發生2的時候發生5的概率為1。
同時發生2,5的概率為0.75,發生5的時候發生2的概率為1。
同時發生2,3,5的概率為0.5,發生{3,5}的時候發生2的概率為1。
同時發生2,3,5的概率為0.5,發生{2,3}的時候發生5的概率為1。
造成火災的原因比較,涉及因素多,例如氣象、建筑結構、人員素質等等,若將這些因素也列入 Apriori關聯規則算法的項目集合中,還需要更加豐富的專業知識,并通過大量數據學習訓練,調整 Apriori項目集合,更好地找到因素之間的關聯規則。因此,下一步的研究工作將集中在優化算法模型,提高算法效率。
[1]楚志勇,侯遵澤.基于 Dijkstra算法的鄉鎮消防站選址問題[J].中國安全生產科學,2011.
[2]嚴珍珍,邢立寧,陳英武.蟻群算法求解消防站的選址問題[J].科學技術與工程,2011.
[3]朱海.基于關聯規則 Apriori算法的作業風險預警研究[D].吉林:吉林大學,2014.