楊 朝, 張平平, 汪國強, 杜寶祥
(1.黑龍江大學(xué) 電子工程學(xué)院, 哈爾濱 150080;2.蘇州慧聞納米科技有限公司 研發(fā)部,蘇州 215000)
在我國的工業(yè)領(lǐng)域,易燃或者有毒的氣體檢測技術(shù)一直是產(chǎn)品安全控制的重要技術(shù),如乙醇、甲烷、一氧化碳以及硫化氫等有害氣體的檢測。乙醇和甲烷氣體雖然沒有毒,但是濃度過高的時候會引起人頭暈、乏力,會對人的呼吸消化系統(tǒng)產(chǎn)生嚴重的危害,如果不及時進行處理,可導(dǎo)致人窒息死亡[1]。而一氧化碳和硫化氫氣體是有毒氣體,會對人的身體健康產(chǎn)生一系列的危害。如果在工業(yè)領(lǐng)域的生產(chǎn)過程中產(chǎn)生這樣的氣體,則會造成不可預(yù)測的后果。因此,有害氣體的識別和分類問題在相關(guān)領(lǐng)域顯得愈加重要。
針對氣體的分類問題,國內(nèi)外很多的學(xué)者都對此展開了深入的研究,如印度的Sunny等利用反向傳播神經(jīng)網(wǎng)絡(luò)和支持向量機對丙酮和丙醇兩種氣體進行分類,實驗表明支持向量機(Support vector machine,SVM)分類器表現(xiàn)良好,該研究為兩種氣體的分類提供了希望,但是在多種氣體的分類中的效果未知[2]。Habib等利用決策樹和神經(jīng)網(wǎng)絡(luò)兩種算法對氨氣、乙醛、丙酮、乙烯、乙醇和甲苯6種氣體進行分類,能夠減輕傳感器漂移對氣體的正確分類和識別的影響,但是實驗的準確率還有待提高[3]。在國內(nèi)的研究中,Xu等提出了一種基于極端隨機樹的混合氣體檢測算法,提高了分類準確率和時間效率,但是僅基于兩種混合氣體進行的實驗,沒有在多種氣體混合的氣體中進行實驗[4]。宋海聲等基于PCA-BP神經(jīng)網(wǎng)絡(luò)對甲醛和甲醇的識別研究表明,PCA方法有效降低了數(shù)據(jù)的維數(shù),能夠提高甲醛和甲醇識別分類的準確率[5]。宋婷婷等采用粒子群算法對最小二乘支持向量機模型中的相關(guān)參數(shù)進行迭代優(yōu)化,構(gòu)建PSO-LSSVM模型對混合氣體的成分進行定性分析,對乙烯、甲烷和一氧化碳混合氣體的公共數(shù)據(jù)集進行實驗,識別的準確率較高[6]。由此可以看出,隨著機器學(xué)習(xí)和深度學(xué)習(xí)的發(fā)展,越來越多的學(xué)者嘗試借鑒機器學(xué)習(xí)分類算法的思想,從單一氣體或者混合氣體中提取特征,然后訓(xùn)練分類器實現(xiàn)對氣體的分類。
在前人研究和總結(jié)的基礎(chǔ)上,本文對8陣列傳感器和24陣列傳感器采集到的乙醇、甲烷、一氧化碳以及硫化氫的混合氣體進行分類。首先,提取不同傳感器對目標氣體的響應(yīng)值,利用PCA算法找出數(shù)據(jù)中的主要成分,用主要成分去描述數(shù)據(jù),從而達到對提取的數(shù)據(jù)特征降維的效果;然后,將主要成分作為SVM的輸入向量,構(gòu)造PCA-SVM模型,并且與SVM、參數(shù)優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)以及PCA-BP神經(jīng)網(wǎng)絡(luò)模型進行對比。實驗結(jié)果表明,PCA-SVM模型不僅能夠?qū)⒉煌瑵舛鹊耐粴怏w很好地分類,而且在不同濃度的4種混合氣體中分類具有較高的準確度,能夠解決氣體分類的實際問題。
數(shù)據(jù)采集系統(tǒng)可以分為兩部分:第一部分是模擬信號處理部分,主要包括氣體傳輸系統(tǒng)和氣體傳感器部分,氣體經(jīng)過氣體傳輸系統(tǒng)隨之進入氣體傳感器的室內(nèi),氣體傳感器陣列對進入的氣體會產(chǎn)生一系列的化學(xué)反應(yīng)并將氣體濃度以電信號輸出[7];第二部分是數(shù)字信號處理部分,主要包括信號預(yù)處理、特征提取以及模式識別部分,氣體傳感器陣列產(chǎn)生的電信號進入數(shù)字信號處理部分進行后續(xù)的處理[8]。先將模擬信號產(chǎn)生的數(shù)據(jù)進行濾波,去除一些無用的信息,再進行特征提取,將提取出來的信息送入模式識別單元中分析得出結(jié)果。數(shù)據(jù)采集系統(tǒng)的結(jié)構(gòu)如圖1所示。
圖1 數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)圖
對不同濃度的甲烷、一氧化碳和硫化氫氣體進行了分析。其中包括用8陣列傳感器采集的甲烷氣體(1 000、3 000、6 000和9 000 ppm)、一氧化碳氣體(50、100、150、200和250 ppm)和乙醇氣體(20、50、100和200 ppm),以及用24陣列傳感器采集的甲烷氣體(1 000、2 000、3 000、5 000和8 000 ppm)、一氧化碳(100、150、200、250和300 ppm)和硫化氫(0.2、0.5、0.8、1.0和1.5 ppm)。同一濃度的相同氣體是在相同的溫度和濕度條件下獲得的,不同種氣體的不同濃度都是在不同的溫度和濕度條件下獲取的。把每一個傳感器采集的數(shù)據(jù)以及溫度濕度等作為數(shù)據(jù)的特征,故用8陣列傳感器采集的氣體都含有13個特征值,把一種濃度的氣體作為一類,那么把8陣列傳感器采集的氣體分為13類。同樣,24陣列傳感器采集的氣體都有27個特征值,將24陣傳感器采集的氣體分為18類。
采用PCA對所采集的氣體特征進行主成分分析,選取主要的成分,其主要是利用降維的思想,把多個指標轉(zhuǎn)換為少數(shù)的幾個綜合指標,將降維后的數(shù)據(jù)作為SVM的數(shù)據(jù)輸入,從而進行數(shù)據(jù)分類。
主成分分析技術(shù)(PCA)主要是將數(shù)據(jù)的維數(shù)降低,把多個指標轉(zhuǎn)換為少數(shù)的幾個綜合指標,在簡化數(shù)據(jù)集上有廣泛的應(yīng)用,它是一個線性變換,是將原始的數(shù)據(jù)變換到一個新的坐標系統(tǒng)中,使得任何數(shù)據(jù)投影的第一大方差在第一個坐標上(稱為第一主成分),第二大方差在第二個坐標上(稱第二主成分),以此類推。主成分分析主要應(yīng)用在減少數(shù)據(jù)集的維數(shù),同時,保持對方差貢獻最大的特征,保留數(shù)據(jù)主要的方面,最終的目標是用較少維數(shù)的主要特征來描述數(shù)據(jù)集[9-10]。
PCA的主要原理是將原始的數(shù)據(jù)樣本投影到一個新的空間,將原來的樣本數(shù)據(jù)空間經(jīng)過數(shù)據(jù)變換矩陣變到新空間坐標下,新空間坐標由原始數(shù)據(jù)樣本中不同維度之間協(xié)方差矩陣中幾個最大特征值對應(yīng)的前幾個特征向量組成,較小的特征值對應(yīng)的特征向量將作為非主要成分被去掉,就可以達到提取一些主要特征來代表數(shù)據(jù),降低數(shù)據(jù)復(fù)雜度的目的[11]。
PCA算法流程主要分為以下幾個步驟:
步驟1:通過n次采樣得到的m維數(shù)據(jù)構(gòu)成矩陣X∈Rn×m,具體形式如式(1)所示:
(1)
(2)
步驟3:計算其樣本數(shù)據(jù)維度之間的相關(guān)度,使用協(xié)方差矩陣C,如式(3)所示:
(3)
步驟4:計算協(xié)方差矩陣C特征值和特征向量,并按照特征值從大到小排列,如式(4)所示:
(4)
步驟5:根據(jù)降維的要求,比如降到k維,取前k個向量組成降維矩陣P,如式(5)所示:
P=(P1,P2,…,Pk)T,P∈Rk×n
(5)
步驟6:通過變換矩陣P對原樣本X進行坐標變換,從而達到數(shù)據(jù)降維和提取特征的目的,如式(6)所示:
Y=X·P,Y∈Rk×m
(6)
PCA重建誤差的計算:
在投影完成之后,要對投影的誤差進行重建,通過式(7)和式(8)來計算降維之后的信息損失:
(7)
(8)
將Error1與Error2比率記作η,通過式(9)計算:
(9)
通過η來衡量數(shù)據(jù)降維之后的信息損失,根據(jù)η的大小來選擇數(shù)據(jù)合適的k值。
支持向量機(SVM)是在20世紀90年代由Cortes和Vapnik開發(fā)的一種監(jiān)督機器學(xué)習(xí)技術(shù),它把樣本空間映射到高維特征空間,構(gòu)造最優(yōu)分類超平面的高維空間。傳統(tǒng)的支持向量機是用來實現(xiàn)二分類,SVM是在尋找和分類線平行而且接近兩類樣本的最優(yōu)分類線,從而達到對輸入的數(shù)據(jù)進行二分類的目的[12]。
給定一個樣本(xi,yi),i=1,2,3,…,n,xi是輸入向量,而且滿足xi∈Rd,yi是樣本的標簽,而且滿足yi∈{1,-1},其中φ(x)能夠?qū)⑤斎胂蛄縳從輸入空間映射到d維特征空間的函數(shù),那么特征空間中的分類超平面就可以定義,如式(10)所示:
wTφ(x)+b=0
(10)
式中:w=(w1;w2;…;wd)為法向量,決定了超平面的方向;b為位移項,決定了超平面與原點之間的距離。
支持向量機的思想是將建立好的超平面作為決策曲面,將兩個類之間的邊界進行最大化,這也是將分類問題轉(zhuǎn)化為帶懲罰項的最小化問題,可寫成如式(11)所示:
(11)
式中:w代表權(quán)向量;ξi是將分離誤差最小化的松弛變量;C代表對誤差容忍度的懲罰參數(shù),如果C的值越大,則代表分類的結(jié)果越好,但是泛化能力越低。
由于目標函數(shù)和約束條件構(gòu)成了不等式的約束問題,需要引入拉格朗日函數(shù)來推導(dǎo)這個不等式的解,如式(12)所示:
(12)
式中:L為拉格朗日系數(shù);αi≥0是拉格朗日乘子。
最優(yōu)分類面求解問題,根據(jù)式(12)對w和b求偏導(dǎo)數(shù),結(jié)合拉格朗日多項式,可以將其轉(zhuǎn)化為約束優(yōu)化的最大化的問題,約束函數(shù)如式(13)所示:
(13)
式中:Q為二次規(guī)劃函數(shù);K(xi,xj)為非線性映射的內(nèi)積核函數(shù),K(xi,xj)=φ(xi)·φ(xj)。
(14)
式中b*為分類閾值。
采用的核函數(shù)為高斯徑向基函數(shù)(Radial basis function, RBF)核,表達式如式(15)和式(16)所示:
(15)
(16)
式中σ是由(16)中的Gamma(γ)確定的自由參數(shù),γ的值越大,訓(xùn)練的結(jié)果越好,但泛化能力也越低。
不同的支持向量機可以由不同的核函數(shù)構(gòu)成,如線性核函數(shù)、徑向高斯核函數(shù)和多項式核函數(shù),之前的研究表明,徑向高斯核函數(shù)與其他函數(shù)相比較有明顯的優(yōu)勢,因此,選擇RBF作為SVM的函數(shù),SVM在結(jié)構(gòu)上與神經(jīng)網(wǎng)絡(luò)相似,SVM的結(jié)構(gòu)如圖2所示,隱藏層中的每一個節(jié)點對應(yīng)一個支持向量,并且輸出的是支持向量的線性組合[13]。對于在訓(xùn)練過程中多分類的問題,將某一類的樣本作為一類,其余的樣本作為另一類,如果樣本有k個類別,那么就構(gòu)建k個支持向量機,當(dāng)用SVM算法進行分類的時候,將未知樣本分類到函數(shù)值最大的類別中。
圖2 SVM的結(jié)構(gòu)圖
基于PCA算法和SVM模型原理,本文構(gòu)建了PCA-SVM模型應(yīng)用于氣體的多分類問題。雖然大多數(shù)支持向量機的輸入?yún)?shù)與氣體分類的過程相關(guān),但是氣體數(shù)據(jù)中的固有冗余影響氣體分類的速度和準確性,因此為了提高分類的速度和精度,采用PCA的方法通過減少與類別不相關(guān)的特征來降低數(shù)據(jù)的維度,為了降低氣體數(shù)據(jù)特征的維數(shù),PCA調(diào)用了線性變換,通過對數(shù)據(jù)進行線性組合求出協(xié)方差矩陣的最大k個特征值對應(yīng)的特征向量,原數(shù)據(jù)集有n個特征值,在盡量減少對原始數(shù)據(jù)影響的情況下進行降維處理,在k個特征值中選擇方差最大的p1為第一主成分,如果p1不足以代表原來n個特征值代表的信息,那么繼續(xù)選取第二主成分p2,如果p1和p2的累積貢獻量不能滿足需要,那么繼續(xù)選取,直到滿足實際的需要為止,而且p1,p2,…,pn互不相關(guān),因此可以構(gòu)造T個主成分,構(gòu)造公式為:
(17)
在支持向量機的訓(xùn)練和學(xué)習(xí)的過程中,支持向量機通過參數(shù)的優(yōu)化來提高識別精度,而且通過對幾種核函數(shù)的比較,選擇高斯RBF核作為核函數(shù),同時對RBF中的懲罰因子C和γ采用10倍交叉驗證技術(shù)來優(yōu)化,才能使SVM模型得到最準確的分類方法[14]。PCA-SVM的分類模型如圖3所示。
圖3 PCA-SVM分類模型
為了驗證所提出方法的有效性與可行性,與SVM、BP神經(jīng)網(wǎng)絡(luò)以及PCA-BP神經(jīng)網(wǎng)絡(luò)進行了氣體分類方法對比。
數(shù)據(jù)集采用的是某公司采集的氣體數(shù)據(jù)來驗證本文提出的模型的有效性,主要利用8陣列的傳感器和24陣列的傳感器來采集氣體的數(shù)據(jù),其中包括用8陣列傳感器采集的不同濃度的甲烷、乙醇和一氧化碳氣體,24陣列傳感器采集的不同濃度的甲烷、一氧化碳和硫化氫氣體。采集氣體的信息如表1所示。
采用兩個混合氣體的數(shù)據(jù)集來分別進行實驗,第一個數(shù)據(jù)集是8陣列傳感器采集的不同濃度的甲烷氣體(1 000、3 000、6 000和9 000 ppm)、一氧化碳氣體(50、100、150、200和250 ppm)和乙醇氣體(20、50、100和200 ppm)的混合氣體,隨機取樣本650個,共有13類樣本,每個樣本含有13個特征。第二個數(shù)據(jù)集是采用24陣列傳感器采集的不同濃度的甲烷氣體(1 000、2 000、3 000、5 000和8 000 ppm)、一氧化碳氣體(100、150、200、250和300 ppm)和硫化氫氣體(0.2、0.5、0.8、1.0和1.5 ppm)的混合氣體,隨機取樣本1 800個,共有18類樣本,每個樣本含有27個特征。利用SVM分類模型和PCA-SVM分類模型對氣體的原始數(shù)據(jù)進行分類對比,考慮到分類器是有監(jiān)督的,因此,從每個數(shù)據(jù)集中隨機抽取70%的樣本作為訓(xùn)練集,其余的30%的樣本作為測試集。
為了驗證本算法的有效性與優(yōu)越性,首先使用不降維且完整的第一個數(shù)據(jù)集的氣體數(shù)據(jù)作為特征參數(shù),將支持向量機與高斯RBF作為核函數(shù)的模型用于氣體分類,分類的準確率為95.897%。為了提高識別的準確度,在將氣體特征數(shù)據(jù)作為支持向量機的輸入數(shù)據(jù)之前,先利用PCA對數(shù)據(jù)進行降維,對數(shù)據(jù)進行降維最重要的就是選擇降低的維數(shù),需要選擇最合適的k值,那么就用數(shù)據(jù)重建誤差來衡量,k的值由1取到13。通過比較,當(dāng)k的值由1取到6時,數(shù)據(jù)重建誤差是逐漸減小的,當(dāng)k的值由6取到13時,重建誤差穩(wěn)定在0.439 9,所以把k=6作為最合適的k值,說明降維后的數(shù)據(jù)特征代表了原始樣本集中的大部分特征,在一定程度上消除了參數(shù)的冗余。部分k值對應(yīng)的誤差比率如表2所示。經(jīng)過PCA降維后的數(shù)據(jù)特征作為SVM模型的輸入,訓(xùn)練SVM模型后,基于PCA-SVM的氣體分類的準確率為98.974%。SVM分類準確率和PCA-SVM分類準確率分別如圖4和圖5所示,其中,橫坐標代表測試集的樣本編號,縱坐標代表測試集樣本的類別。紅色的點代表每個測試樣本的真實類別,藍色的點代表測試樣本預(yù)測的類別。如果藍色點落在紅色點上面,那么就代表這個樣本分類準確,如圖4綠色的框所示。如果藍色點沒有落在紅色點上,則代表樣本分類錯誤,如圖4紅色的框所示。通過統(tǒng)計正確的分類樣本數(shù),可以計算分類準確率。通過比較圖4和圖5可知,SVM錯分樣本數(shù)8個,計算的分類準確率為95.897%,PCA-SVM錯分樣本數(shù)2個,計算的分類準確率為98.974%,PCA-SVM模型相對于未降維的SVM模型,準確率提高了3.077%。
表2 不同k值對應(yīng)的誤差比率
圖4 SVM模型
接著利用SVM模型和PCA-SVM模型在第二個數(shù)據(jù)集上分別實驗,將SVM與高斯RBF作為核函數(shù)的模型用于氣體分類,準確率為98.704%,結(jié)果如圖6所示。利用PCA-SVM模型進行分類時,首先要選擇合適的k值,然后再進行分類,k的值由1取到27。通過比較,當(dāng)k的值由1取到14時,數(shù)據(jù)重建誤差是逐漸減小的,當(dāng)k的值由14取到27時,重建誤差穩(wěn)定在0.365 8,所以把k=14作為合適的k值。部分k值對應(yīng)的誤差比率如表3所示。PCA-SVM模型進行分類的結(jié)果如圖7所示,準確率為100%。通過比較圖6和圖7可知,SVM錯分樣本數(shù)7個,分類準確率為98.704%,PCA-SVM錯分樣本數(shù)0個,分類準確率為100%,PCA-SVM模型相對于未降維的SVM模型,準確率提高了1.296%。
表3 不同k值對應(yīng)的誤差比率
圖6 SVM模型
圖7 PCA-SVM模型
為了驗證本文提出的PCA-SVM模型的有效性與優(yōu)越性,不僅和利用RBF作為核函數(shù)的SVM作比較,而且還和BP神經(jīng)網(wǎng)絡(luò)模型以及PCA-BP神經(jīng)網(wǎng)絡(luò)模型進行了比較,如今BP神經(jīng)網(wǎng)絡(luò)是被廣泛應(yīng)用的模型之一。BP神經(jīng)網(wǎng)絡(luò)包含輸入層、隱藏層以及輸出層。神經(jīng)網(wǎng)絡(luò)各層的層數(shù)和結(jié)點數(shù)是由輸入氣體的特征個數(shù)和數(shù)據(jù)量的大小決定的。BP神經(jīng)網(wǎng)絡(luò)算法的實現(xiàn)過程需要信號的正向傳播和誤差的反向傳播,正向傳播時,輸入樣本從輸入層進入,逐次經(jīng)過隱層,最后到達輸出層。如果實際輸出值與期望輸出的值相差太大,則將誤差進行反向傳播,誤差的反向傳播是將誤差逐層經(jīng)過隱層,并且將誤差分給每一層的所有單元,從而獲得每一層的誤差信號去修正各單元的權(quán)值[15]。
將BP神經(jīng)網(wǎng)絡(luò)模型和PCA-BP神經(jīng)網(wǎng)絡(luò)模型分別在兩個數(shù)據(jù)集上進行實驗,通過不斷調(diào)整優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的參數(shù),得到的分類結(jié)果如表4所示。由表可知,在含有13個氣體特征的第一個數(shù)據(jù)集和在含有27個特征的第二個數(shù)據(jù)集上應(yīng)用BP神經(jīng)網(wǎng)絡(luò)模型和PCA-BP神經(jīng)網(wǎng)絡(luò)模型,從準確度方面考慮,在第一個數(shù)據(jù)集上,分類準確率提高了3.077%,在第二個數(shù)據(jù)集上,分類準確率提高了2.889%。從性能方面考慮,用均方誤差來衡量,由圖8可知,BP神經(jīng)網(wǎng)絡(luò)的最小均方誤差為0.014 9。由圖9可知,PCA-BP神經(jīng)網(wǎng)絡(luò)的最小均方誤差為0.009 4,無論是從分類的準確率的角度比較,還是從神經(jīng)網(wǎng)絡(luò)模型的性能的角度比較,PCA-BP神經(jīng)網(wǎng)絡(luò)模型都優(yōu)于BP神經(jīng)網(wǎng)絡(luò)模型。通過以上的結(jié)論可知,PCA無論是應(yīng)用在SVM模型上還是應(yīng)用在BP神經(jīng)網(wǎng)絡(luò)上都能提高分類的準確率。
表4 BP神經(jīng)網(wǎng)絡(luò)與PCA-BP神經(jīng)網(wǎng)絡(luò)模型的對比
圖8 BP神經(jīng)網(wǎng)絡(luò)的MSE
圖9 PCA-BP神經(jīng)網(wǎng)絡(luò)的MSE
由表5可以看出,PCA-SVM分類模型的分類準確率更高,在第一個數(shù)據(jù)集上準確率能達到98.974%,在第二個數(shù)據(jù)集上準確率能達到100%,分類結(jié)果優(yōu)于SVM模型、BP神經(jīng)網(wǎng)絡(luò)模型以及PCA-BP神經(jīng)網(wǎng)絡(luò)模型,因此,PCA-SVM分類模型能夠解決8陣列傳感器和24陣列傳感器采集到的混合氣體進行分類的實際需求。
表5 不同分類模型分類準確率比較
采用PCA-SVM模型對混合氣體進行分類。在原有氣體特征的基礎(chǔ)上利用PCA對數(shù)據(jù)降維,將降維后的氣體特征作為SVM的輸入從而進行分類,并且與不對數(shù)據(jù)降維的支持向量機、BP神經(jīng)網(wǎng)絡(luò)模型和PCA-BP神經(jīng)網(wǎng)絡(luò)模型進行對比,經(jīng)過實驗驗證,利用主成分分析對輸入數(shù)據(jù)進行降維,提高了支持向量機算法的分類準確率,能夠滿足8陣列傳感器和24陣列傳感器采集到的混合氣體進行分類的實際需求。隨著大數(shù)據(jù)的快速發(fā)展,將支持向量機與主成分分析相結(jié)合,能夠減少數(shù)據(jù)的冗余,提高模型的分類效率,廣泛地應(yīng)用于多種混合氣體分類的研究。