周鐵軍,張 浩,譚立志
(中南林業(yè)科技大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,湖南 長沙 410004)
Apriori算法在園林信息系統(tǒng)中的應(yīng)用
周鐵軍,張 浩,譚立志
(中南林業(yè)科技大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,湖南 長沙 410004)
近年來,關(guān)聯(lián)規(guī)則挖掘己經(jīng)成為數(shù)據(jù)挖掘技術(shù)中的一個(gè)研究熱點(diǎn)。根據(jù)長沙市園林信息管理系統(tǒng)的發(fā)展要求, 并結(jié)合長沙市園林業(yè)的實(shí)際情況,構(gòu)架設(shè)計(jì)了園林管理信息系統(tǒng),分析了數(shù)據(jù)挖掘在園林行業(yè)中的應(yīng)用,用Apriori算法對(duì)園林病蟲害數(shù)據(jù)庫中的病蟲數(shù)據(jù)進(jìn)行了關(guān)聯(lián)分析, 找出各種病蟲害在相關(guān)屬性中的分布規(guī)律,為決策者提供有參考價(jià)值的信息。
數(shù)據(jù)挖掘;關(guān)聯(lián)規(guī)則;園林信息系統(tǒng)
關(guān)聯(lián)規(guī)則挖掘是數(shù)據(jù)挖掘技術(shù)中一個(gè)非常重要的研究內(nèi)容,它是Agrawal等人首先提出的,關(guān)聯(lián)規(guī)則挖掘是找出同一個(gè)事件中不同項(xiàng)之間的相關(guān)性,即找出事件中頻繁出現(xiàn)的項(xiàng)集或該項(xiàng)集的所有子集,以及這些項(xiàng)集之間的相互關(guān)聯(lián)性,然后從這些項(xiàng)集中找出關(guān)聯(lián)知識(shí)。近年來,國內(nèi)外眾多的學(xué)者對(duì)關(guān)聯(lián)規(guī)則挖掘問題進(jìn)行了大量的研究,他們的工作涉及到關(guān)聯(lián)規(guī)則挖掘理論的探索、原有關(guān)聯(lián)規(guī)則挖掘算法的改進(jìn)[1]新關(guān)聯(lián)規(guī)則挖掘算法的設(shè)計(jì),并行關(guān)聯(lián)規(guī)則挖掘算法設(shè)計(jì)以及增量關(guān)聯(lián)規(guī)則挖掘算法設(shè)計(jì)等問題。另外,在關(guān)聯(lián)規(guī)則挖掘算法的可擴(kuò)展性以及應(yīng)用方面,許多學(xué)者也進(jìn)行了研究。
關(guān)聯(lián)規(guī)則挖掘(Association Rules Mining) 是發(fā)現(xiàn)數(shù)據(jù)庫中數(shù)據(jù)項(xiàng)之間蘊(yùn)含規(guī)則的一種技術(shù)。最初是針對(duì)購物籃分析[2]提出的, 數(shù)據(jù)分析人員從交易數(shù)據(jù)庫中顧客購買的不同商品記錄,找到顧客的購買行為,然后,經(jīng)營者利用這些購買行為指導(dǎo)商品貨架設(shè)計(jì)、貨存安排以及根據(jù)購買行為對(duì)客戶進(jìn)行分類。雖然關(guān)聯(lián)規(guī)則挖掘是伴隨零售業(yè)的決速發(fā)展而產(chǎn)生的,但是關(guān)聯(lián)規(guī)則挖掘的應(yīng)用絕不僅僅體現(xiàn)在零售業(yè)上,它還體現(xiàn)在金融業(yè)、電信業(yè)、制造業(yè)、保險(xiǎn)業(yè)等,所以展開關(guān)聯(lián)規(guī)則算法的研究具有重要的理論意義和應(yīng)用價(jià)值[3]。
Apriori算法是一種挖掘關(guān)聯(lián)規(guī)則的算法,是Agrawal等設(shè)計(jì)的一個(gè)基本算法,這是一個(gè)采用兩階段挖掘的思想,并且基于多次掃描事務(wù)數(shù)據(jù)庫來執(zhí)行的。Apriori算法的設(shè)計(jì)可以分解為兩步驟來執(zhí)行挖掘:
a.從事務(wù)數(shù)據(jù)庫(D)中挖掘出所有頻繁項(xiàng)集。
支持度大于最小支持度minSup的項(xiàng)集(?temset)稱為頻集(Frequent ?temset)。首先需要挖掘出頻繁1-項(xiàng)集;然后,繼續(xù)采用遞推的方式來挖掘頻繁k-項(xiàng)集(k>1),具體做法是:在挖掘出候選頻繁k-項(xiàng)集(Сk)之后,根據(jù)最小置信度minSup來篩選,得到頻繁k-項(xiàng)集。最后合并全部的頻繁k-項(xiàng)集(k>0)。挖掘頻繁項(xiàng)集的算法描述如下[4]:
b.基于第1步挖掘到的頻繁項(xiàng)集,繼續(xù)挖掘出全部的頻繁關(guān)聯(lián)規(guī)則。
置信度大于給定最小置信度的關(guān)聯(lián)規(guī)則稱為頻繁關(guān)聯(lián)規(guī)則(Frequent Association Rule)。在這一步,首先需要從頻繁項(xiàng)集入手,首先挖掘出全部的關(guān)聯(lián)規(guī)則(或者稱候選關(guān)聯(lián)規(guī)則),然后根據(jù)最小置信度來得到頻繁關(guān)聯(lián)規(guī)則。
挖掘頻繁關(guān)聯(lián)規(guī)則的算法描述如下:
長沙市園林信息系統(tǒng)是在基于局政務(wù)網(wǎng)絡(luò)和PС SERVER模式下,為了加強(qiáng)全市園林綠化行業(yè)管理和行政管理的有效管理,按照規(guī)范化、集約化、電子化的管理要求,提高管理效能,實(shí)現(xiàn)園林綠化專業(yè)信息的“無紙化”科學(xué)管理,擬對(duì)全市園林綠化專業(yè)信息進(jìn)行編輯、整合,開發(fā)構(gòu)建專業(yè)信息基礎(chǔ)數(shù)據(jù)庫管理系統(tǒng)。同時(shí)利用該應(yīng)用系統(tǒng)平臺(tái),使各種專業(yè)信息數(shù)據(jù)能共享使用,減少信息孤島,充分發(fā)揮信息化帶來的實(shí)際作用,從而在更大的程度上提高工作效率,實(shí)現(xiàn)“電子政府”,推動(dòng)政府行政職能優(yōu)化。
系統(tǒng)架構(gòu)設(shè)計(jì)如圖1所示。
圖1 園林信息系統(tǒng)構(gòu)架設(shè)計(jì)Fig. 1 Architecture design of garden information system
采用的技術(shù)架構(gòu)設(shè)計(jì)以先進(jìn)、成熟的J2EE關(guān)系型數(shù)據(jù)庫MS SQL Server 標(biāo)準(zhǔn)B/S應(yīng)用模式,XML、Web Services、EA?等技術(shù)為基礎(chǔ),以開放性、標(biāo)準(zhǔn)化為準(zhǔn)則,采用組件式、分層次、服務(wù)提供者/使用者間定義接口(Service Provider ?nterface)、容錯(cuò)等設(shè)計(jì)思想,保證整個(gè)應(yīng)用系統(tǒng)的穩(wěn)定性、可靠性和可擴(kuò)展性。同時(shí)在數(shù)據(jù)交換格式上支持XML標(biāo)準(zhǔn),使系統(tǒng)功能最優(yōu)化,同時(shí)將整體系統(tǒng)內(nèi)部在技術(shù)上的相互依賴性減至最低。實(shí)現(xiàn)應(yīng)用系統(tǒng)和數(shù)據(jù)庫系統(tǒng)分離;系統(tǒng)支持內(nèi)網(wǎng)部署并可擴(kuò)展政務(wù)外網(wǎng)應(yīng)用。網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖2所示。
基于園林綠化管理業(yè)務(wù)發(fā)展需要和系統(tǒng)前瞻性的設(shè)計(jì)思路,系統(tǒng)采用通用的Browser/Web Server/G?S Server 多層結(jié)構(gòu),由分布在各客戶端的瀏覽器,WEB 服務(wù)器和 G?S 服務(wù)器組成,這樣,一方面,可以通過園林的內(nèi)部局域網(wǎng),可以實(shí)現(xiàn)集中辦公、統(tǒng)一管理;另一方面,城市居民可以通過 ?nternet 查詢園林信息[5]。
圖2 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)Fig. 2 Network topological structure
這是一個(gè)應(yīng)用于病蟲害防治的一個(gè)挖掘?qū)嵗?用于預(yù)測某段時(shí)間發(fā)生蟲害的可能性,以及可能發(fā)生的其他種類的蟲害的可能性,為病蟲害防治提供決策支持。
主要采用現(xiàn)在普遍應(yīng)用的三層架構(gòu)模式(表示層、邏輯層、數(shù)據(jù)層)其中表示層負(fù)責(zé)直接跟用戶進(jìn)行交互,一般是指系統(tǒng)的界面,用于數(shù)據(jù)錄入,數(shù)據(jù)顯示等。用于做一些有效性驗(yàn)證的工作,以更好地保證程序運(yùn)行的健壯性。如完成數(shù)據(jù)添加、修改和查詢業(yè)務(wù)等;不允許指定的文本框中輸入空字符串,數(shù)據(jù)格式是否正確及數(shù)據(jù)類型驗(yàn)證;用戶的權(quán)限的合法性判斷等等,通過以上的諸多判斷以決定是否將操作繼續(xù)向后傳遞,盡量保證程序的正常運(yùn)行。數(shù)據(jù)訪問層:顧名思義,就是專門用于進(jìn)行交互。執(zhí)行數(shù)據(jù)的添加、刪除、修改和顯示等。需要強(qiáng)調(diào)的是,所有的數(shù)據(jù)對(duì)象只在這一層被引用,除數(shù)據(jù)層之外的任何地方都不應(yīng)該出現(xiàn)這樣的引用。
3.1.1 表示層設(shè)計(jì)
在web服務(wù)器的asp頁面被客戶瀏覽器訪問響應(yīng)后,在shuru.asp頁面中,用戶輸入”霜霉病”或?D,然后再輸入“葉斑病”或?D確認(rèn),進(jìn)入數(shù)據(jù)挖掘后的頁面,并通過瀏覽器返回給客戶,最后客戶就會(huì)知道“霜霉病”發(fā)病的比例以及“霜霉病”發(fā)病時(shí)伴同“葉斑病”發(fā)病的幾率。
3.1.2 邏輯層設(shè)計(jì)
系統(tǒng)架構(gòu)中體現(xiàn)核心價(jià)值的部分。它的關(guān)注點(diǎn)主要集中在業(yè)務(wù)規(guī)則的制定、業(yè)務(wù)流程的實(shí)現(xiàn)等與業(yè)務(wù)需求有關(guān)的系統(tǒng)設(shè)計(jì),也就是說它是與系統(tǒng)所應(yīng)對(duì)的領(lǐng)域(Domain)邏輯有關(guān),很多時(shí)候,也將業(yè)務(wù)邏輯層稱為領(lǐng)域?qū)印?/p>
3.1.3 數(shù)據(jù)訪問層設(shè)計(jì)
把系統(tǒng)所需要的數(shù)據(jù)統(tǒng)統(tǒng)建成數(shù)據(jù)庫,便于數(shù)據(jù)分析以及數(shù)據(jù)顯示。對(duì)應(yīng)數(shù)據(jù)庫服務(wù)器,它的任務(wù)是接受Web服務(wù)器對(duì)數(shù)據(jù)庫操縱的請(qǐng)求,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的操作后把運(yùn)行結(jié)果提交給Web服務(wù)器[6]。
3.2.1 Apriori算法實(shí)現(xiàn)
掃描事務(wù)數(shù)據(jù)庫,計(jì)算頻繁1-項(xiàng)集public Map<Set<String>, Float> getFreq1?temSet() {
Map<Set<String>, Float> freq1?temSetMap =new HashMap<Set<String>, Float>();
Map<Set<String>,?nteger>candFreq1?temSet =this.getСandFreq1?temSet();
?terator<Map.Entry<Set<String>,?nteger>>it=ca ndFreq1?temSet.entrySet().iterator();
while(it.hasNext()) {
Map.Entry<Set<String>, ?nteger> entry =it.next();// 計(jì)算支持度
Float supported = new Float(entry.getValue().toString())/new Float(txDatabaseСount);
if(supported>=minSup) {
freq1?temSetMap.put(entry.getKey(), supported);
}
知識(shí)理解變量。本問卷借鑒了中國消費(fèi)者協(xié)會(huì)2016年開展的“保健食品消費(fèi)者認(rèn)知度問卷調(diào)查”,從中選擇了5道題目參與設(shè)計(jì),每道題目都有正確的答案。分別是:保健食品“藍(lán)蓋帽”標(biāo)記的識(shí)別;保健食品的作用(治病、預(yù)防疾病、改善身體機(jī)能);保健食品的功能(養(yǎng)胃、提神醒腦、輔助降血壓、治療高血壓、補(bǔ)腎壯陽);普通食品宣稱保健功能的行為(國家允許、國家不允許);普通食品中添加保健食品原料行為(國家允許、國家不允許)。根據(jù)被訪問者回答正確的題數(shù)來衡量民眾對(duì)保健食品知識(shí)的理解程度,分?jǐn)?shù)越高表示調(diào)查者的保健食品安全知識(shí)越豐富。
}
return freq1?temSetMap;
}
//根據(jù)頻繁(k-1)-項(xiàng)集計(jì)算候選頻繁k-項(xiàng)集
public Set<Set<String>> aprioriGen(int m,Set<Set<String>> freqM?temSet) {
Set<Set<String>> candFreqK?temSet = new HashSet<Set<String>>();
?terator<Set<String>> it = freqM?temSet.iterator();
Set<String> original?temSet = null;
while(it.hasNext()) {
? t e r a t o r<S e t<S t r i n g>> i t r = t h i s.get?terator(original?temSet, freqM?temSet);
while(itr.hasNext()) {
S e t<S t r i n g> i d e n t i c a l S e t = n e w HashSet<String>(); // 兩個(gè)項(xiàng)集相同元素的集合 (集合的交運(yùn)算)
identicalSet.addAll(original?temSet);
Set<String> set = itr.next();
identicalSet.retainAll(set); // identicalSet中剩下的元素是identicalSet與set集合中公有的元素
if(identicalSet.size() == m-1) { // (k-1)-項(xiàng)集中k-2個(gè)相同
S e t<S t r i n g> d i f f e r e n t S e t = n e w HashSet<String>(); // 兩個(gè)項(xiàng)集不同元素的集合(集合的差運(yùn)算)
differentSet.addAll(original?temSet);
differentSet.removeAll(set); // 因?yàn)橛衚-2個(gè)相同,則differentSet中一定剩下一個(gè)元素,即differentSet大小為1
differentSet.addAll(set); // 構(gòu)造候選k-項(xiàng)集的一個(gè)元素(set大小為k-1,differentSet大小為k)
candFreqK?temSet.add(differentSet); // 加 入 候選k-項(xiàng)集集合
}
}
}
return candFreqK?temSet;
}
//獲取挖掘到的全部的頻繁關(guān)聯(lián)規(guī)則的集合public Map<Set<String>, Set<Set<String>>>getAssiciationRules() {
return assiciationRules;
}
}
3.2.2 系統(tǒng)運(yùn)行截圖
打開長沙市園林管理信息系統(tǒng)客戶端,如圖3、圖4所示,根據(jù)提示在輸入界面輸入指定信息后,點(diǎn)擊確認(rèn)后會(huì)調(diào)用Apriori算法進(jìn)行關(guān)聯(lián)規(guī)則挖掘,掃描數(shù)據(jù)庫已存信息并給出預(yù)測信息,為園林管理人員決策提供分析。
數(shù)據(jù)挖掘技術(shù)在園林信息系統(tǒng)中的應(yīng)用,無論在理論上還是在實(shí)際中都有大量的工作要做,本文所做的工作為今后的進(jìn)一步研究奠定了基礎(chǔ),但仍有許多問題需要解決:
(1)關(guān)聯(lián)規(guī)則數(shù)據(jù)挖掘算法的改進(jìn),以提高效率。
圖3 園林信息系統(tǒng)輸入界面Fig.3 Input interface of garden information system
圖4 園林信息系統(tǒng)查詢結(jié)果界面Fig.4 Query interface of garden information system
(2)更好地利用數(shù)據(jù)庫。園林信息本身屬于現(xiàn)存行業(yè)中數(shù)據(jù)量復(fù)雜度最高的信之一,因此對(duì)于園林?jǐn)?shù)據(jù)、影像數(shù)據(jù)的挖掘工作還有待進(jìn)一步開展。將數(shù)據(jù)挖掘與信息系統(tǒng)界面有機(jī)結(jié)合集成在一起,并采用可視化界面直觀顯示出來,進(jìn)一步提高園林管理的自動(dòng)化[7]。
(3)目前還有其它很多數(shù)據(jù)挖掘方法,比如人工神經(jīng)網(wǎng)絡(luò)、決策樹、支持向量機(jī)等,今后應(yīng)當(dāng)繼續(xù)進(jìn)行這些方面的研究,以便于更好的為園林信息系統(tǒng)服務(wù),給園林管理部門更高效的決策支持。
[1] 李清峰.數(shù)據(jù)挖掘中關(guān)聯(lián)規(guī)則的一種高效Ariori算法[J].計(jì)算機(jī)應(yīng)用與軟件,2009,21(12):84-86
[2] 劉同明.數(shù)據(jù)挖掘技術(shù)及其應(yīng)用[M].北京:國防工業(yè)出版社,2005:234:345-350
[3] 邵峰晶,于忠清編著.數(shù)據(jù)挖掘原理與算法[M].中國水利水電出版社,2003,8
[4] 張 莉.?dāng)?shù)據(jù)挖掘技術(shù)及應(yīng)用現(xiàn)狀[J].中國石油大學(xué)勝利學(xué)院學(xué)報(bào),2008,6:34-35
[5] 張 斌.計(jì)算機(jī)技術(shù)在園林環(huán)境設(shè)計(jì)中的應(yīng)用探索[J].2007
[6] 盧 圣.計(jì)算機(jī)輔助園林設(shè)計(jì)[M] . 北京:氣象出版社.2009
[7] 方 駿,方 云,肖 杰.?dāng)?shù)據(jù)挖掘的工業(yè)標(biāo)準(zhǔn)的現(xiàn)狀和展望[J].計(jì)算機(jī)應(yīng)用研究,2004,21(6):
Application of Apriori algorithm on garden information system
ZHOU Tie-jun, ZHANG Hao, TAN Li-zhi
(School of Сomputer and ?nformation Engineering, Сentral South University of Forestry and Technology, Сhangsha 410004, Hunan, Сhina)
?n recent years, the mining of association rules technique has became a research hotspot. According to the requirements of the development of Сhangsha city landscape information management system, and taking into account Сhangsha city garden industry actual situation, the structural design of landscape management information system was set up, the application of data mining in the landscape industry was analyzed. By using traditional Apriori algorithm, the data of plant diseases and insect pests in the ornamental diseases and pests database were connectedly analyzed, the distribution law of the relevant attribute of diseases and insect pests was found out, the results provided some valuable information for decision- makeing.
data mining; association rules; garden information system
S73;TP393
A
1673-923X (2012)05-0181-05
2012-3-7
周鐵軍(1956-),男,湖南益陽人,教授,碩士生導(dǎo)師,主要從事網(wǎng)絡(luò)安全、數(shù)據(jù)挖掘的研究
[本文編校:歐陽欽]