夏杰, 徐繼偉, 荊瑞俊
(西北工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院, 陜西 西安 710072)
工業(yè)污染預(yù)測能夠及時(shí)預(yù)測工業(yè)污染物的變化,污染監(jiān)督部門根據(jù)預(yù)測結(jié)果對工業(yè)污染源和企業(yè)進(jìn)行監(jiān)管,有效防止污染事故的發(fā)生。污染預(yù)測方法根據(jù)工業(yè)污染源的污染因子排放量和現(xiàn)有狀態(tài)變化,對污染因子的變化趨勢進(jìn)行建模,從而準(zhǔn)確預(yù)測污染物的變化趨勢。目前,較為經(jīng)典和常用的污染預(yù)測方法包括人工神經(jīng)網(wǎng)絡(luò)預(yù)測法、灰色系統(tǒng)理論模型和支持向量機(jī)預(yù)測方法等。
人工神經(jīng)網(wǎng)絡(luò)可以很好地表示工業(yè)污染中的非線性關(guān)系,但缺乏對預(yù)測結(jié)果的檢驗(yàn),可能導(dǎo)致局部逼近而整體系統(tǒng)缺乏完備性,推廣應(yīng)用相對較少[1]?;疑碚撓到y(tǒng)模型形式簡單,能反應(yīng)事物的發(fā)展趨勢,但是對變化幅度較大的數(shù)據(jù)進(jìn)行預(yù)測時(shí),預(yù)測效果較差。支持向量機(jī)具有直觀的幾何形式、很好的數(shù)學(xué)模型和良好的泛化能力,它解決了模型選擇與過學(xué)習(xí)、欠學(xué)習(xí)和非線性問題,也避免了局部最優(yōu)解,解決了維數(shù)災(zāi)難的問題,人為設(shè)定參數(shù)較少[2],已經(jīng)成為預(yù)測應(yīng)用領(lǐng)域的研究熱點(diǎn)。
支持向量機(jī)是一種建立在統(tǒng)計(jì)學(xué)習(xí)理論上的新機(jī)器學(xué)習(xí)方法,它在處理小樣本分類、非線性分類和高維模式識別方面具有很多獨(dú)特的優(yōu)點(diǎn)。支持向量機(jī)的基本原理是通過某種事先選擇的非線性映射,將輸入向量映射到一個(gè)高維空間,在這個(gè)空間中構(gòu)造最優(yōu)超平面,將盡可能多的2類數(shù)據(jù)點(diǎn)正確地分開,同時(shí)使分開的2類數(shù)據(jù)點(diǎn)距離分類面最遠(yuǎn)[3]。
圖1 支持向量機(jī)空間映射圖
增量學(xué)習(xí)的主要任務(wù)是在增量樣本加入時(shí),有效利用歷史訓(xùn)練結(jié)果,盡量避免樣本的重復(fù)訓(xùn)練,得到比較準(zhǔn)確的分類結(jié)果。支持向量機(jī)不斷將新數(shù)據(jù)加入到訓(xùn)練集,通過在線調(diào)整模型參數(shù),實(shí)現(xiàn)預(yù)測模型的不斷優(yōu)化,提高模型的適應(yīng)能力。如果新增樣本帶有原樣本集不包含的分類信息,則學(xué)習(xí)后的SV集必然發(fā)生變化,以體現(xiàn)新信息的加入。
傳統(tǒng)支持向量機(jī)增量學(xué)習(xí)問題描述如下[4]:
1) 前提條件:存在歷史數(shù)據(jù)集A,增量樣本集B,并假定這2個(gè)數(shù)據(jù)集滿足條件A∩B=φ,ψ1和SVA1分別為數(shù)據(jù)集A上的初始SVM分類器以及對應(yīng)的支持向量(SV)集。
2) 學(xué)習(xí)目標(biāo):尋找基于樣本集合A∪B上最終的SVM分類器ψ和對應(yīng)的支持向量(SV)集SVA。
目前,國內(nèi)外已提出多種支持向量機(jī)增量式算法[5-6]。Cauwenberghs給出了一種增量減量式算法,用于解決增加或刪除一個(gè)訓(xùn)練樣本對SVM和拉格朗日系數(shù)的影響問題,并通過實(shí)驗(yàn)證明了該方法的有效性。Ralaivola也給出了一種增量式算法,該方法基于高斯核的局部特性,只需對學(xué)習(xí)機(jī)器輸出影響最大的拉格朗日系數(shù)進(jìn)行更新,從而減少計(jì)算的復(fù)雜度。在各種支持向量機(jī)增量式算法中,比較有代表性的是曾文華等提出的支持向量機(jī)增量學(xué)習(xí)算法[7]。
1)KKT條件
設(shè)α=[α1,α2,…,αl]為對偶問題的最優(yōu)解,使每個(gè)樣本X都能夠滿足優(yōu)化問題的KKT條件如下:
αi=0?yif(Xi)≥1
0<αi (1) αi=C?yif(Xi)≤1 式中:支持向量為非零的αi。由函數(shù)f(X)=h,可知分類面為f(X)=0,分類間隔的邊界為f(X)=±1,支持向量為分類間隔的邊界上的樣本。 定理1 對樣本集進(jìn)行訓(xùn)練得到SVM分類器,α為Lagrange乘子。α=0對應(yīng)的樣本分布在分類器分類間隔之外,0≤α≤C對應(yīng)的樣本分布在分類間隔之上,α=C對應(yīng)的樣本分布在分類間隔之內(nèi),公式表示如下: αi=0?|f(Xi)|≥1 0<αi (2) αi=C?|f(Xi)|≤1 2)增量學(xué)習(xí)后支持向量變化分析 在分類問題中,支持向量最終確定分類函數(shù)的性質(zhì),也就是說,支持向量決定的分類函數(shù)與樣本集的最終分類函數(shù)一樣。根據(jù)這個(gè)原理,在分類問題的訓(xùn)練過程中,只需要找到支持向量的分類函數(shù)。在訓(xùn)練樣本集中,支持向量集所占的比例一般較小。 定理2f(X)為SVM分類決策函數(shù),{xi,yi}為新增樣本。滿足KKT 條件的新增樣本將不會改變支持向量集。違背KKT 條件的新增樣本將使支持向量集發(fā)生變化。違背KKT 條件的樣本分為3類: ① 位于分類間隔中,與本類在分類邊界同側(cè),被原分類器正確分類的樣本,滿足0≤yif(xi)<1; ② 位于分類間隔中,與本類在分類邊界異側(cè),被原分類器錯(cuò)誤分類的樣本, 滿足-1≤yif(xi)≤0; ③位于分類間隔外,與本類在分類間隔異側(cè),被原分類器錯(cuò)誤分類的樣本,滿足yif(Xi)<-1。 定理3 新增樣本違背KKT條件,則原樣本集中非支持向量可能轉(zhuǎn)化為支持向量。 傳統(tǒng)的SVM增量學(xué)習(xí)算法只是將歷史樣本集和增量樣本集混合起來進(jìn)行訓(xùn)練。曾文華等人提出新的訓(xùn)練算法,將違背KKT條件的樣本和SV集共同訓(xùn)練,以更好地體現(xiàn)出樣本的分布狀態(tài)對訓(xùn)練學(xué)習(xí)結(jié)果的影響。該算法首先分別對歷史樣本和新增樣本進(jìn)行訓(xùn)練得到分類器ψ1、ψ2和支持向量集SVA1、SVA2,然后在歷史樣本中找出違背ψ2的KKT條件的樣本,將其加入到SV1、SV2中一起訓(xùn)練,以得到最終的分類器。該算法分類精度提高和訓(xùn)練速度均得到了提高。 基于曾文華等人提出的支持向量機(jī)增量學(xué)習(xí)方法,本文提出一種改進(jìn)的支持向量機(jī)增量學(xué)習(xí)方法,通過改進(jìn)后的算法能對工業(yè)廢氣污染進(jìn)行準(zhǔn)確預(yù)測。改進(jìn)的增量算法是在原有增量算法的基礎(chǔ)上,根據(jù)KKT條件對新增的數(shù)據(jù)樣本進(jìn)行SVM分類。 改進(jìn)的支持向量機(jī)增量學(xué)習(xí)方法將違背KKT條件的新增樣本按以下方法進(jìn)行分類: 1)若新增樣本B為恰好都在分類面上的支持向量,則將新增樣本B歸為分類間隔上樣本。 2)若新增樣本B都在分類面的邊緣內(nèi),則將新增樣本B歸為分類間隔內(nèi)樣本。 3)如不符合上述2種分類情況,新增樣本B的每個(gè)數(shù)據(jù)樣本點(diǎn)的αi都按照定理1分為分類器分類間隔外、分類間隔內(nèi)和分類間隔上3種樣本,直到增量樣本B訓(xùn)練完為止。 假設(shè)新增樣本為Bi,I=1,2,…,n。改進(jìn)的支持向量機(jī)增量算法的算法步驟如下: 1) 首先檢驗(yàn)新增樣本B1是否違背SVM分類函數(shù)的KKT條件,如果沒有違背,則新增樣本根據(jù)KKT條件進(jìn)行SVM分類。 2) 如果新增樣本B1違背樣本SVM的KKT條件,則按照本文2.1節(jié)中給出的改進(jìn)增量算法對違背KKT條件的新增樣本分類方法進(jìn)行分類。 ① 判斷新增樣本B1是否為恰好都在分類面上的支持向量:如果是,則將新增樣本B1歸為分類間隔上樣本;否則按下一步進(jìn)行判斷。 ② 判斷新增樣本B1是否都在分類面的邊緣內(nèi)或原分類有誤:如果是,則將新增樣本B1歸為分類間隔內(nèi)樣本;否則按下一步進(jìn)行判斷。 ③ 根據(jù)公式(2),將新增樣本B1中每個(gè)數(shù)據(jù)樣本點(diǎn)的αi分為分類器分類間隔外、分類間隔內(nèi)和分類間隔上3種樣本,直到增量樣本B1訓(xùn)練完為止。 3) 加入增量訓(xùn)練樣本B2,將上次訓(xùn)練樣本得到的分類間隔內(nèi)樣本集加入到B2,得到一個(gè)新的增量樣本B,令B1=B。 4) 重復(fù)以上步驟,直到N個(gè)增量樣本B1~Bn都訓(xùn)練結(jié)束。 為驗(yàn)證改進(jìn)的支持向量機(jī)增量學(xué)習(xí)方法的有效性,利用Matlab工具和機(jī)器學(xué)習(xí)UCI數(shù)據(jù)庫進(jìn)行仿真實(shí)驗(yàn)。UCI數(shù)據(jù)集的說明指出了數(shù)據(jù)的屬性和類別,用戶可以用自己的數(shù)據(jù)挖掘方法將UCI數(shù)據(jù)集分類,將結(jié)果與數(shù)據(jù)說明的結(jié)果對比,從而證明自己算法的正確性。 在本節(jié)實(shí)驗(yàn)中,首先使用Matlab的dlmread讀取UCI數(shù)據(jù);然后,利用UCI數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行Matlab仿真實(shí)驗(yàn);最后,將改進(jìn)SVM增量學(xué)習(xí)方法與傳統(tǒng)SVM學(xué)習(xí)算法進(jìn)行了比較。在UCI數(shù)據(jù)庫選取的數(shù)據(jù)中,{xi,yi}為增量樣本集中的樣本數(shù)據(jù),yi為預(yù)測的目標(biāo)值,xi=(xi1,xi2,…,xi8)為8維輸入特征值,即影響預(yù)測目標(biāo)值的關(guān)鍵特征變量值。通過Matlab仿真,改進(jìn)SVM增量學(xué)習(xí)方法與傳統(tǒng)SVM學(xué)習(xí)算法對比,結(jié)果如表1所示。 表1 改進(jìn)SVM增量學(xué)習(xí)方法與傳統(tǒng)SVM學(xué)習(xí)算法對比 通過對比發(fā)現(xiàn),本文改進(jìn)后的SVM增量學(xué)習(xí)方法與傳統(tǒng)SVM學(xué)習(xí)算法相比,減少了訓(xùn)練時(shí)間,也提高了精度。 論文將某種有害氣體的濃度作為污染預(yù)測的目標(biāo)值,根據(jù)對污染源環(huán)境參數(shù)進(jìn)行分析處理,首先確定影響預(yù)測目標(biāo)值的主要特征變量,如氣壓,溫度,風(fēng)速,數(shù)據(jù)采集時(shí)間等,然后將這些關(guān)鍵特征變量作為預(yù)測模型的輸入值。假定{xi,yi}為增量樣本集B中的樣本數(shù)據(jù),yi為預(yù)測的目標(biāo)值,xi=(xi1,xi2,…,xin)為輸入特征值,即關(guān)鍵特征變量值。 基于上一節(jié)提出的改進(jìn)支持向量機(jī)增量學(xué)習(xí)方法的污染預(yù)測系統(tǒng)的實(shí)現(xiàn)流程如下: 1) 初始化預(yù)測模型。 2) 等待增量樣本集B。 3) 如果新增樣本符合SVM分類函數(shù)的KKT條件,則按定理1分類,即對樣本集B進(jìn)行訓(xùn)練得到SVM分類器。 4) 按照上節(jié)給出的方法,對違背SVM分類函數(shù)KKT條件的增量樣本集B進(jìn)行分類:a.如果新增樣本B為恰好都在分類面上的支持向量,則將新增樣本B歸為分類間隔上樣本;b.如果新增樣本B都在分類面的邊緣內(nèi)或其原分類有誤,則將新增樣本B歸為分類間隔內(nèi)樣本;c.根據(jù)公式(2),將新增樣本B中每個(gè)數(shù)據(jù)樣本點(diǎn)的αi分為分類器分類間隔外、分類間隔內(nèi)和分類間隔上樣本。 5) 將下一個(gè)新增訓(xùn)練樣本加入到上次訓(xùn)練樣本得到的分類間隔內(nèi)樣本集中,得到一個(gè)新的增量樣本B,返回流程2)。 經(jīng)過一段時(shí)間訓(xùn)練后,即可以得到該氣體的污染預(yù)測模型。輸入的特征向量值經(jīng)過模型的計(jì)算的到預(yù)測目標(biāo)值,然后將預(yù)測目標(biāo)的實(shí)際值,與相應(yīng)輸入一起作為新的訓(xùn)練樣本B,利用新樣本B對預(yù)測模型進(jìn)行調(diào)整,并計(jì)算該模型的預(yù)測精度。 實(shí)驗(yàn)使用的SO2數(shù)據(jù)集來源于NASA的氣象資料數(shù)據(jù)。將SO2濃度作為樣本集的預(yù)測目標(biāo)值,輸入9維預(yù)測模型的特征向量:每日的平均氣溫和氣溫差、平均氣壓和氣壓差、平均風(fēng)速以及相鄰兩日的平均氣溫差和氣壓差、數(shù)據(jù)的采集時(shí)間和每日的SO2濃度值。 在Matlab7.0環(huán)境下測試,SVM模型采用徑向基(RBF)核函數(shù)。RBF核函數(shù)均適用,具有較寬的收斂域,是較為理想的分類依據(jù)函數(shù)。 核函數(shù)的參數(shù)和誤差懲罰因子C是影響支持向量機(jī)性能的關(guān)鍵因素。本文實(shí)驗(yàn)中利用SVM模式識別與回歸的軟件包LIBSVM來確定參數(shù),使用支持向量機(jī)庫中的工具“grid.py”對參數(shù)進(jìn)行優(yōu)選,該工具是采用網(wǎng)格遍歷法,由gnuplot生成的搜索結(jié)果顯示出最小錯(cuò)誤率時(shí)的參數(shù)。 本文實(shí)驗(yàn)中SVM模型的RBF核函數(shù)參數(shù)取值如下:核寬度σ取值為 0.6,容量因子C取值為1,允許誤差ε取值為 0.01。建立好預(yù)測模型后,對7個(gè)月內(nèi)的SO2數(shù)據(jù)進(jìn)行預(yù)測。原算法和改進(jìn)后算法的仿真實(shí)驗(yàn)預(yù)測結(jié)果分別如圖2和圖3所示。 圖2 原算法預(yù)測結(jié)果 圖3 改進(jìn)后算法預(yù)測結(jié)果 在圖2中和圖3中,虛線為預(yù)測值,實(shí)線為實(shí)測值。通過仿真實(shí)驗(yàn)預(yù)測圖可以看出,改進(jìn)后的支持向量機(jī)增量算法的預(yù)測準(zhǔn)確度與原算法相比有較大提高,能較好地用于污染預(yù)測。 本文針對工業(yè)污染預(yù)測問題,采支持向量機(jī)與增量學(xué)習(xí)結(jié)合的方法進(jìn)行污染預(yù)測。對SVM增量學(xué)習(xí)方法進(jìn)行改進(jìn),通過仿真實(shí)驗(yàn)說明,改進(jìn)后的算法在精度和訓(xùn)練速度上均有所提高。將改進(jìn)后SVM增量學(xué)習(xí)方法用于有害氣體的濃度預(yù)測,通過實(shí)驗(yàn)仿真結(jié)果說明本文算法能夠用于污染預(yù)測,且預(yù)測較準(zhǔn)確。 參考文獻(xiàn): [1] Zhou Xiujie, Su Xiaohong, Yuan Meiying. Forecast of Air Pollution Index Based on BP Neuralnetwork[J]. Journal of Harbin Institute of Technology, 2004, 35(5):583-585 [2] 張學(xué)工. 關(guān)于統(tǒng)計(jì)學(xué)習(xí)理論與支持向量機(jī)[J]. 自動(dòng)化學(xué)報(bào), 2000, 26(1): 32-42 Zhang Xuegong. Introduction to Statistical Learning Theory And Support Verctor Machines[J]. Acta Automatica Sinica, 2000, 26(1):32-42 (in Chinese) [3] Chen Zhenyu, Li Jianping. Least Squares Support Vector Machine[C]∥International Conference on Computational Intelligence and Security, 2006(1):176-179 [4] 李凱, 黃厚寬. 支持向量機(jī)增量學(xué)習(xí)算法研究[J]. 北方交通大學(xué)學(xué)報(bào), 2003, 27(5): 34-37 Li Kai,Huang Houkuan. Research on Incremental Learning Algorithm of Support Vector Machine[J]. Journal of Northern Jiaotong University, 2003, 27(5): 34-37 (in Chinese) [5] Cauwenberghs G, Poggio T. Incremental and Decremental Support Vector Machine Learning[J]. Advances in Neural Information Processing Systems, 2001, 13 [6] Ralaivola L, Florence d′Alché-Buc. Incremental Support Vector Machine Learning: A Local Approach[J]. ICANN 2001: 322-330 [7] 曾文華,馬健. 一種新的支持向量機(jī)增量學(xué)習(xí)算法[J]. 廈門大學(xué)學(xué)報(bào), 2002,41(6): 687-691 Zeng Wenhua, Ma Jian. A Novel Approach to Incremental SVM Learning Algorithm[J]. Journal of Xiamen University, 2002,41(6): 687-691 (in Chinese)2 改進(jìn)的支持向量機(jī)增量學(xué)習(xí)方法
2.1 改進(jìn)的支持向量機(jī)增量學(xué)習(xí)的分類方法
2.2 改進(jìn)的支持向量機(jī)增量算法步驟
2.3 改進(jìn)的支持向量機(jī)增量算法實(shí)驗(yàn)
3 改進(jìn)SVM增量學(xué)習(xí)方法的污染預(yù)測仿真實(shí)驗(yàn)
4 結(jié) 論