袁方紅,許武軍,2,趙海森
(1. 東華大學 信息科學與技術學院,上海 201620; 2. 數字化紡織服裝技術教育部工程研究中心,上海 201620)
基于嶺回歸的氣體預警穿戴系統的靈敏度校正
袁方紅1,許武軍1,2,趙海森1
(1. 東華大學 信息科學與技術學院,上海 201620; 2. 數字化紡織服裝技術教育部工程研究中心,上海 201620)
在氣體預警穿戴系統中,使用電化學氣體傳感器來采集環境中CO氣體的濃度。由于電化學氣體傳感器的靈敏度隨著溫度有著非常顯著的變化,為了提高傳感器的檢測精度,采用一種基于嶺回歸算法對電化學氣體傳感器進行靈敏度校正。開發算法的軟件工具采用Python語言進行編程,根據傳感器和溫度關系的已有關系樣本對其進行擬合,并對擬合結果進行交叉性驗證分析。通過分析對比可知,基于嶺回歸算法的電化學氣體傳感器靈敏度曲線擬合效果好于普通的最小二乘法擬合。
氣體預警穿戴系統;電化學氣體傳感器;靈敏度校正;嶺回歸;Python
電化學氣體傳感器是把測量對象氣體在電極處氧化或還原而測電流,得出對象氣體濃度的探測器。且其具有體積小、結構簡單、選擇性及響應快等特點,被廣泛運用于氣體泄漏等環境監測中。但由于氣體傳感器對溫度有一定的敏感度, 當工作環境溫度發生變化時, 致使傳感器的零點和靈敏度發生變化,從而造成輸出值隨環境溫度變化,導致測量出現附加誤差[1]。在實際監測環境中,被檢測的氣體大部分為有毒氣體,微小的誤差便可能造成巨大的損失,因此根據溫度變化對傳感器的靈敏度進行校正十分必要。
對電化學氣體傳感器進行靈敏度校正,可以采用硬件和軟件校正。但由于硬件電路校正調試困難、精度低、適用性差等缺點,通常采用軟件進行校正。軟件校正可采用最小二乘法、回歸算法、神經網絡等方法。通過BP神經網絡對氣體和溫度傳感器進行有效的數據融合,在特定濃度范圍內消除溫度對氣體傳感器交叉敏感的影響,從而改善了氣體預警裝置的檢測精度[2]。考慮氣體傳感器所在的硬件平臺及處理器的運算能力,本文將采用嶺回歸方法進行校正。這種方法相對于簡單的最小二乘法一元線性擬合提高了校正精度,并且比一些人工智能算法降低了對處理器運算能力的要求,能更好地運用于實際工程中去。
1.1穿戴式氣體預警系統
穿戴式毒害氣體預警系統由本地服務器、氣體預警裝置和無線路由組成[3]。其中氣體預警裝置包括系統平臺(微控制器、無線連接和電源管理),傳感模塊(EC氣體傳感模塊和溫濕度傳感模塊)和執行模塊(視覺告警模塊、聽覺告警模塊、觸覺告警模塊和氣體交換模塊)。本地服務器和氣體預警裝置通過AP連接,氣體預警裝置將采集的氣體濃度轉換為電流信號,并經過信號放大、模數轉換以及氣體濃度換算,將換算數據發送到上位機中[3]。
其中系統平臺的微控制器采用TI公司的FRAM系列MSP430單片機MSP430FR5739[3]??紤]到運算能力不足,本文將MSP430向PI Zero進行遷移,以解決實時計算能力的問題。
樹莓派PI Zero, 使用Broadcom BCM2835 1 GHz處理器,擁有512 MB RAM, 支持micro SD存儲槽、mini-HDMI接口,1 080 p/60 fps輸出和microUSB接口傳輸數據及充電,并擁有40針的GPIO。電化學傳感器采用CO1000 Micro3。
氣體預警裝置框圖如圖1所示。

圖1 穿戴式毒害氣體預警系統氣體預警裝置框圖
1.2嶺回歸算法介紹
隨著互聯網人工智能的發展,機器學習已經成為當今科技領域的熱門內容,被用來處理生活中不斷爆發的數據問題。而嶺回歸[4]便屬于機器學習中的一種常見算法。嶺回歸是一種專用于共線性數據分析的有偏估計回歸方法,實質上是一種改良的最小二乘估計法,通過放棄最小二乘法的無偏性,以損失部分信息、降低精度為代價獲得回歸系數更為符合實際、更可靠的回歸方法,對病態數據的擬合要強于最小二乘法[4]。
嶺回歸是線性回歸的一種補充。對于線性回歸來說,假設x為輸入矩陣,y為輸出矩陣,回歸系數矩陣為ω,目標就是要找出使誤差最小的ω。其平方誤差為:
(1)
用矩陣可表示為:(y-xω)T(y-xω),對ω求導,解出:
(2)

嶺回歸就是在矩陣xTx上加一個λI,從而使矩陣非奇異,進而對xTx+λI求逆。其中I是一個單位方陣[4]。因此回歸系數變為:
(3)
嶺回歸最先用于處理特征多于樣本的情況,現在也用于在估計中加入偏差,從而得到更好的估計[4]。
1.3軟件平臺簡介
系統硬件平臺為PI Zero,PI Zero搭載Linux系統,支持Python語言。且由于Python語法清晰,易于操作文本文件,且使用廣泛,因此選擇Python作為實現算法的編程語言。
Python是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。Python的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字以及其他語言的一些標點符號,它具有更有特色的語法結構[5]。
其中Scipy和Numpy等許多科學函數都實現了向量和矩陣操作,也可運用matplotlib繪制2D、3D曲線圖形。MATLAB等高級程序語言雖然也可以進行矩陣操作并構造機器學習應用,但MATLAB的軟件費用過高,雖然也有比較適合MATLAB的第三方插件,但是沒有一個有影響力的大型開源項目[4]。
Java和C 也擁有數學矩陣庫,但是這些語言的編寫效率較低,完成一個簡單的工作就要花費大量時間。
2.1利用嶺回歸法的一般步驟
(1)收集數據;
(2)準備數據;
(3)分析數據:可視化并觀察數據;
(4)訓練算法:采用嶺回歸算法構建不同的模型;
(5)測試算法:使用交叉驗證來測試不同的模型;
(6)使用算法。
2.2電化學氣體傳感器及其靈敏度隨溫度變化曲線
根據CO1000 Micro3使用手冊可得知,電化學氣體傳感器的靈敏度隨溫度變化的曲線如圖2。

圖2 CO1000 Micro3 靈敏度和溫度的關系
根據圖2,對傳感器進行數據讀取標定(平均值)。如表1所示。將樣本數據制作成文本文件,并命名為Sensitivity.txt文件。
其中x為輸入矩陣,為溫度值;輸出矩陣為y,是靈敏度。x是一個14×2的矩陣,因為計算靈敏度系數需要輸入矩陣的初始狀態,所以需要定義溫度的初始值,這個值可以是任意常數,由前文公式可知,設定初始值不會對結果造成太大影響。
第一列的初始值不能為相同值,若第一列為相同數值,在對角權重矩陣的求逆過程中會出現問題,導致xTx成為非奇異矩陣,無法求逆,違背了嶺回歸算法的初衷。
2.3算法流程
算法流程如圖3所示。

表1 傳感器靈敏度與溫度的關系

圖3 算法流程圖
將數據導入函數。
(1)定義文件讀取函數:
def loadDataSet(fileName):
(2)定義曲線擬合函數:
def standRegres(x,yArr):
(3)創建對角權重矩陣:
def lwlr(testPoint,x,y,k=1.0):
(4)遍歷數據集:for循環遍歷
輸入的參數k控制衰減的速度。在權重矩陣計算完之后,可以得到對回歸系數的一個估計。
(5)定義計算回歸系數函數:
def ridgeRegres(xMat,yMat,la=0.2):
(6)定義測試λ函數:
def lwlrTest(testArr,xArr,yArr,k=1.0):
由于增加了λI,在普通線性回歸產生計算錯誤時,嶺回歸仍然能繼續工作。
(7)創建訓練集和測試集:
def crossValidation(xArr,yArr,numVal=10):
(8)用訓練時的參數將測試數據標準化:
for k in range(30):
matTestX=mat(testX); matTrainX=mat(trainX)
meanTrain = mean(matTrainX,0)
varTrain = var(matTrainX,0)
matTestX= matTestX-meanTrain)/varTrain
在基于嶺回歸的局部加權回歸中若對縮減系數設置過小,將出現過擬合現象。由于本文數據較少,因此其系數不宜小于1。
另外,嶺回歸由于引入了λI,所以,λ的取值也將對擬合曲線的精確度產生影響。對50個不同的λ調用嶺回歸函數,得到了對應的回歸系數,如圖4所示。

圖4 回歸系數與λ的關系
由圖4可以看到,當λ很小時,回歸系數是與線性回歸一致的原始值;當λ很大時,其系數逐步縮減為0。在橫坐標上,當λ取中間部分的值時,可以得到較好的預測效果。為了定量地找出最佳的λ,還需對模型進行交叉驗證。
最小二乘法的回歸系數:
>>> regression.standRegres(a,b)
matrix([[ 28.09934246], [0.80421217]])
通過交叉驗證的嶺回歸系數:
>>> regression.crossValidation(a,b)
zui jia mo xing:
[[ 1.00676092 0.50575633]]
bu bian zhi: 32.0155989087
通過比較可以看出,嶺回歸的回歸系數相對于最小二乘法進行了縮減,提高了預測精度。
將嶺回歸算法與逐步加權回歸相結合,加入“懲罰項”來對回歸系數進行限制,并通過逐步加權回歸的引入,理論上會比最基本的最小二乘法線性回歸得到更精確的擬合效果。本文將嶺回歸的結果與最小二乘法進行比較,來觀察具體效果。
3.1最小二乘法效果圖
使用matplotlib函數,繪制圖形,如圖5所示。

圖5 最小二乘擬合效果圖
3.2基于嶺回歸的逐步加權回歸效果圖
基于嶺回歸的逐步加權回歸如圖6所示,所有數據點均位于擬合曲線上。

圖6 基于嶺回歸的逐步加權回歸效果圖
3.3分析
由圖5、圖6可知,最小二乘法接近于直線擬合,對曲線的擬合不盡理想,而基于嶺回歸的逐步加權則將原始數據充分擬合,使原始數據均位于擬合曲線上,取得了更好的擬合效果。
[1] 史雪飛,馮淑紅.DS1820芯片在電化學傳感器溫度補償中的應用[J] .工業計量, 2006, 16(2):29-31.
[2] 于浩,許武軍,袁方紅,等.基于神經網絡的氣體預警穿戴系統的溫度補償[J].微型機與應用,2016,35(15): 18-20,23.
[3] 曾凱.穿戴式作業現場毒害氣體預警系統[D].上海:東華大學,2015.
[4] HARRINGTON P.機器學習實戰[M].李銳,李鵬,曲亞東,等譯.北京:人民郵電出版社,2013.
[5] 自然學堂.Python基礎教程[EB/OL].[2017-04-01].http://www.ziqiangxuetang.com/python/python-intro.html.
Sensitivity correction in wearable gases alarm system based on ridge regression
Yuan Fanghong1, Xu Wujun1,2, Zhao Haisen1
(1. College of Information Science and Technology, Donghua University, Shanghai 201620, China;2. Engineering Research Center of Digitized Textile & Fashion Technology, Ministry of Education, Shanghai 201620, China)
The electrochemical gas sensor is used to get the concentration of CO in wearable gases alarm system. Science the sensitivity of electrochemical gas sensor changes much more when the environment temperature has changed, and it will have a bad effect on the accuracy of electrochemical gas sensor. So this paper presents a method which is based on ridge regression to regulate the sensitivity of electrochemical gas sensor. The software which we use is python. And we carry out linear fitting according to the relationship between the sensor and the temperature from the samples, and the fitting results are cross checked and analyzed. The results show that the sensitivity curve of the electrochemical gas sensor based on the ridge regression algorithm is better than that of the ordinary least squares fitting.
wearable gases alarm system; electrochemical gas sensors; sensitivity correction;ridge regression; Python
TP391
:A
10.19358/j.issn.1674- 7720.2017.17.023
袁方紅,許武軍,趙海森.基于嶺回歸的氣體預警穿戴系統的靈敏度校正[J].微型機與應用,2017,36(17):79-81,85.
2017-04-10)
袁方紅(1990-),女,碩士研究生,主要研究方向:控制工程。許武軍(1972-),通信作者,男,博士,副教授,碩士生導師,主要研究方向:穿戴電子與智能服裝,短距無線通信,嵌入式計算與機器視覺,衛星導航與組合定位。E-mail:wujun.hsu@gmail.com。趙海森(1993-),男,碩士研究生,主要研究方向:控制工程。