劉美辰, 薛河儒, 劉江平, 代榮榮, 胡鵬偉, 黃 清, 姜新華
內(nèi)蒙古農(nóng)業(yè)大學(xué)計(jì)算機(jī)與信息工程學(xué)院, 內(nèi)蒙古 呼和浩特 010000
牛奶作為天然乳液, 包含著很多人體需要的營(yíng)養(yǎng)元素。 近些年, 對(duì)牛奶中蛋白質(zhì)的含量檢測(cè)日益得到社會(huì)的重視。 最常見(jiàn)的乳品檢測(cè)方法為化學(xué)分析法, 雖然準(zhǔn)確度高, 但檢驗(yàn)過(guò)程復(fù)雜且成本大。 高光譜利用400~1 000 nm內(nèi)的光譜波段對(duì)牛奶進(jìn)行檢測(cè), 不僅操作簡(jiǎn)單、 預(yù)測(cè)快速無(wú)損, 而且效果好。
國(guó)內(nèi)外很多學(xué)者對(duì)牛奶中的營(yíng)養(yǎng)元素光譜檢測(cè)做了研究。 Laverroux等使用液相色譜結(jié)合熒光法對(duì)牛奶中的維生素B2進(jìn)行分析, 展示了在濃度區(qū)間內(nèi)對(duì)營(yíng)養(yǎng)元素預(yù)測(cè)的一種新方法[1]; 范睿等基于近紅外光譜, 建立主成分回歸模型對(duì)牛奶中的摻假蛋白質(zhì)檢測(cè)[2]; Lin等基于近紅外光譜檢測(cè)蛋白質(zhì), 通過(guò)運(yùn)用支持向量機(jī)(support vector machine, SVM)和BP神經(jīng)網(wǎng)絡(luò)(back-propagation artificial neural network, BP-ANN)以及偏最小二乘法(partial least-regression, PLS)建模, 結(jié)合多種預(yù)處理方法, 最終得分最高的模型DOSC-KPLS的R2達(dá)到了0.974[3]。 使用高光譜對(duì)牛奶進(jìn)行分析的研究也有報(bào)道, 近年, Munir等將光譜處理的奶粉圖像空間屬性與化學(xué)屬性相結(jié)合, 使用PLS建立回歸模型實(shí)時(shí)顯示質(zhì)量, 證明高光譜技術(shù)可以用于乳制品檢測(cè)[4]。 趙紫竹等為了對(duì)牛奶中脂肪含量進(jìn)行檢測(cè)使用了NPLS算法[5]; 張倩倩等采用主成分回歸和最小二乘支持向量機(jī)兩個(gè)方法對(duì)牛奶中的蛋白質(zhì)進(jìn)行定量分析。 目前基于高光譜技術(shù)的牛奶定量分析中, 由于牛奶成分復(fù)雜, 原始光譜數(shù)據(jù)中變量間的相關(guān)性低, 模型的預(yù)測(cè)精度仍需要提高, 分析方法也需要提升。
綜上, 針對(duì)牛奶分析精度和方法的需求, 實(shí)驗(yàn)以五種蛋白質(zhì)含量不同的牛奶為研究樣本, 測(cè)量其400~1 000 nm范圍的高光譜反射數(shù)據(jù), 結(jié)合蛋白質(zhì)含量數(shù)據(jù), 建立SSA-SVM模型, 通過(guò)綜合考察多種預(yù)處理和特征波長(zhǎng)提取方法對(duì)建模的作用。 并采用常應(yīng)用于牛奶分析中的偏最小二乘法回歸(PLS)算法、 具有強(qiáng)非線性擬合能力的支持向量機(jī)回歸(SVM)算法以及兩個(gè)基于SVM的優(yōu)化算法GA-SVM和PSO-SVM作為對(duì)比, 找出測(cè)量牛奶蛋白質(zhì)含量的最優(yōu)方法, 為牛奶營(yíng)養(yǎng)元素含量的定量檢驗(yàn)提供參考。
所用的樣品是從市面上購(gòu)買(mǎi)的五種蛋白質(zhì)含量不同的牛奶, 蛋白質(zhì)含量分別為3.0, 3.2, 3.3, 3.4和3.6 g·(100 mL)-1。 培養(yǎng)皿的直徑為90 mm高度為8 mm。 分別取不同批次的五種牛奶置于培養(yǎng)皿中, 用玻璃棒攪拌。 共250個(gè)樣本, 其中訓(xùn)練集175個(gè), 測(cè)試集75個(gè)。
利用圖1所示HyperSpec VNIR高光譜儀采集樣本的牛奶反射光譜。 光譜掃描范圍在400~1 000 nm區(qū)間內(nèi) , 光譜的波段數(shù)為125個(gè), 平均間隔為0.8 nm, 曝光時(shí)間選擇10 ms, 像元混合次數(shù)為6次, 分辨率為4.8 nm, 采集的光譜圖像像素為777×1 004。 采集條件: 室溫(23~25 ℃) , 牛奶樣本置于光譜儀探頭垂直下方的吸光黑色絨布上, 于暗室中測(cè)量。 鹵素?zé)糁翗颖?0 cm的距離垂直照射, 掃描探頭到樣本的垂直距離為15 cm。 測(cè)量前, 對(duì)光譜圖像標(biāo)定, 分別采集白板和全黑的標(biāo)定圖像進(jìn)行校正以消除因光源和暗電流存在導(dǎo)致的噪聲[6]。
圖1 高光譜儀
圖2(a)為高光譜儀采集圖像后經(jīng)ENVI導(dǎo)出的牛奶樣本原始高光譜曲線。
圖2 原始光譜和預(yù)處理光譜
因測(cè)量時(shí)室內(nèi)光線、 角度、 溫度等因素可能對(duì)光譜數(shù)據(jù)造成誤差, 光譜的噪聲很大, 所以需對(duì)低質(zhì)量的數(shù)據(jù)進(jìn)行優(yōu)化, 減小對(duì)目標(biāo)結(jié)果的影響。 采取的預(yù)處理方法有: 歸一化(normalization, N)、 標(biāo)準(zhǔn)化(standardization)和多元散射校正(multiplicative scatter correction, MSC)。
1.4.1 競(jìng)爭(zhēng)性自適應(yīng)重加權(quán)算法采樣算法
通過(guò)競(jìng)爭(zhēng)性自適應(yīng)重加權(quán)算法(competitive adaptive reweighted sampling, CARS)選取特征波段, 算法基于蒙特卡洛采樣結(jié)合偏最小二乘法(PLS), 由衰減指數(shù)法(EDF)來(lái)決定波長(zhǎng)個(gè)數(shù)[7], 通過(guò)自適應(yīng)重加權(quán)采樣(adaptive reweighted sampling, ARS)保留波長(zhǎng)回歸系數(shù)的權(quán)重值大的集合, 創(chuàng)建PLS模型, 引入交叉驗(yàn)證, 不斷優(yōu)化計(jì)算均方根誤差(root mean squard error, RMSE), 選擇RMSE最小的子集, 即模型精度最高的特征波長(zhǎng)組合[8]。
1.4.2 基于優(yōu)化算法的SVM參數(shù)優(yōu)化
SVM作為一個(gè)經(jīng)典的預(yù)測(cè)算法具有著較強(qiáng)的非線性擬合能力和魯棒性, 并且因預(yù)測(cè)精度高和復(fù)雜度低的優(yōu)勢(shì)常被應(yīng)用于牛奶定量分析的研究中, 但據(jù)預(yù)測(cè)結(jié)果表明其對(duì)于參數(shù)選取的敏感度高, 若選取不當(dāng)會(huì)使性能降低[9]。 故需要選取合適的優(yōu)化算法對(duì)SVM優(yōu)化提高計(jì)算精度。 目前已有的對(duì)其改進(jìn)的優(yōu)化算法均可實(shí)現(xiàn)參數(shù)選取的要求, 但由于大多欠缺于局部性能, 所以計(jì)算精度仍需改進(jìn)。
1.4.3 基于GA的SVM參數(shù)優(yōu)化
遺傳算法(genetic algorithm, GA)是一種常被應(yīng)用于預(yù)測(cè)模型的全局優(yōu)化算法。 其原理是通過(guò)生物作用機(jī)制, 對(duì)當(dāng)前研究的種群進(jìn)行篩選, 逐步選出適應(yīng)度最高的個(gè)體[10]。 實(shí)驗(yàn)最大迭代次數(shù)和設(shè)置為200, 基因位置為參數(shù)值, 將參數(shù)帶入SVM模型中, 對(duì)牛奶數(shù)據(jù)進(jìn)行訓(xùn)練并計(jì)算個(gè)體的適應(yīng)度值, 如達(dá)最大迭代次數(shù), 則停止搜索。 輸出全局最優(yōu)的參數(shù)值, 實(shí)現(xiàn)對(duì)SVM的參數(shù)優(yōu)化。
1.4.4 基于PSO的SVM參數(shù)優(yōu)化
粒子群算法(particle swarm optimization, PSO)的原理是利用種群中的各粒子通過(guò)學(xué)習(xí)不斷調(diào)整位置和速度來(lái)實(shí)現(xiàn)優(yōu)化[11]。 實(shí)驗(yàn)最大迭代次數(shù)為200, SVM參數(shù)取值范圍一定, 利用SVM對(duì)牛奶數(shù)據(jù)做出預(yù)測(cè), 計(jì)算粒子的適應(yīng)度值并更新其速度和位置, 當(dāng)達(dá)到最大迭代次數(shù)時(shí), 跳出循環(huán), 輸出全局的最佳參數(shù)并訓(xùn)練SVM模型, 實(shí)現(xiàn)PSO對(duì)SVM的參數(shù)優(yōu)化。
1.4.5 基于SSA的SVM參數(shù)優(yōu)化
麻雀搜索算法(sparrow search algorithm, SSA)是通過(guò)麻雀的捕食、 追隨、 偵查三種行為為啟發(fā)而創(chuàng)建[12]。 算法將麻雀種群分為發(fā)現(xiàn)者和跟隨者, 麻雀屬性為位置, 對(duì)應(yīng)優(yōu)化的解, 適應(yīng)度值對(duì)應(yīng)覓食位置。 其中發(fā)現(xiàn)者發(fā)現(xiàn)者和跟隨者的位置是動(dòng)態(tài)變化的, 凡是發(fā)現(xiàn)者會(huì)選擇最好的位置覓食。
追隨者會(huì)在發(fā)現(xiàn)者周?chē)捠郴蚺c發(fā)現(xiàn)者爭(zhēng)奪食物, 當(dāng)追隨者發(fā)現(xiàn)更好覓食位置則更新發(fā)現(xiàn)者的解, 否則不變。 一旦發(fā)現(xiàn)危險(xiǎn), 邊緣麻雀會(huì)遷移到安全區(qū)躲避危險(xiǎn), 同時(shí)就處于最佳位置的麻雀會(huì)在周?chē)恢米邉?dòng)。 SSA基于以上步驟循環(huán)搜索最優(yōu)解。 其對(duì)支持向量機(jī)算法進(jìn)行優(yōu)化的主要思路為用麻雀位置表示SVM的參數(shù)c和g, 通過(guò)對(duì)全局的適應(yīng)度值排序, 求最優(yōu)值和最優(yōu)位置, 得知最優(yōu)參數(shù)[13]。
SSA優(yōu)化SVM的流程圖見(jiàn)圖3。
圖3 SSA優(yōu)化SVM參數(shù)流程圖
主要步驟如下:
(1) 參數(shù)初始化。 對(duì)麻雀種群初始化, 最大迭代參數(shù)itermax, 麻雀總數(shù)、 發(fā)現(xiàn)者和跟隨者比例以及參數(shù)c和g的取值范圍。
(2) 適應(yīng)度設(shè)置。 適應(yīng)度函數(shù)設(shè)置為SVM訓(xùn)練后的MSE誤差
fitness=argmin(MSEpridect)
(1)
對(duì)全局的適應(yīng)度值排序, 求最優(yōu)值和最優(yōu)位置。
(3) 更新發(fā)現(xiàn)者位置。
(2)
式(2)中, 迭代次數(shù)為t時(shí), 第i只麻雀的j維位置信息,α為(0, 1]的隨機(jī)數(shù), itermax為最大迭代次數(shù),R2是[0, 1]中的一個(gè)隨機(jī)數(shù), 代表安全值,ST為警戒閾值,Q為一個(gè)標(biāo)準(zhǔn)正態(tài)分布隨機(jī)數(shù)。ST為警戒閾值。
(4) 更新追隨者位置。
(3)
式(3)中,xworst為最壞位置,xb則為最好的位置。A+=AT(AAT)-1, 其中,A為一個(gè)大小為1×D的矩陣, 當(dāng)i>n/2時(shí), 其值會(huì)收斂于0, 第i只獲取食物少的麻雀需要更新位置獲取食物。 當(dāng)i≤n/2時(shí), 值收斂于最優(yōu)位置。
(5) 更新偵查者位置。
(4)
式(4)中,xbest代表最優(yōu)位置,fg表示全局的最優(yōu)位置上的麻雀的最佳適應(yīng)度值,fw為最壞位置上麻雀的適應(yīng)度值,K是區(qū)間[-1, 1]內(nèi)的一個(gè)隨機(jī)值,ε為一個(gè)為了防止分母為0的極小數(shù)。
(6) 計(jì)算各適應(yīng)度值。 對(duì)麻雀的位置更新, 直到最大迭代次數(shù)。
(7) 如滿足最優(yōu)解, 則輸出最優(yōu)解c和g。 否則。 繼續(xù)執(zhí)行步驟(2)—(6)。
1.4.6 評(píng)價(jià)指標(biāo)
預(yù)測(cè)模型的好壞依據(jù)以下幾個(gè)參數(shù)評(píng)估: 決定系數(shù)(determination coefficients,R2)、 均方根誤差 (root mean squared error, RMSE)、 耗時(shí)。 RMSE越小則表明預(yù)測(cè)的數(shù)據(jù)與原始數(shù)據(jù)重合度越高、R2越趨近于1回歸效果越好。
三類(lèi)預(yù)處理的PLS模型精度如表1所示。 選用多元散射校正(MSC)預(yù)處理的模型的擬合程度最高, 預(yù)處理后的光譜曲線如圖2(b)所示, 可以看出經(jīng)過(guò)MSC處理后, 可以有效的消除一些由散射、 光程突變、 乳液不均勻帶來(lái)的影響, 消除了牛奶光譜數(shù)據(jù)的噪聲干擾。 從而提高了光譜的靈敏度和實(shí)用性。
表1 預(yù)處理模型精度對(duì)比
連續(xù)投影算法(successive projections algorithm, SPA)在食品檢測(cè)分析中常被用于特征選擇, 能從眾多波段中選出冗余信息少的波段, 從而使共線性問(wèn)題達(dá)到最小化, 減小模型變量, 提高運(yùn)算效率[14]。 以經(jīng)過(guò)MSC處理后的牛奶光譜值為輸入變量, 通過(guò)反復(fù)迭代投影值, 對(duì)最終得到的特征變量進(jìn)行回歸分析, 以均方根誤差RMSE最小的集合為特征波段集合。 選出的特征波段有17個(gè)。
圖4 不同特征波長(zhǎng)個(gè)數(shù)對(duì)應(yīng)的RMSE分布曲線
圖5為采用CARS提取牛奶的全部波長(zhǎng)變量進(jìn)行特征提取后的運(yùn)算結(jié)果圖。 設(shè)置蒙特卡羅采樣次數(shù)為20[15]。 圖5(a)顯示隨著采樣次數(shù)增加, 由于衰減指數(shù)EDF的作用, 開(kāi)始在CARS的光譜粗選階段中會(huì)用較大的學(xué)習(xí)率, 選擇的波長(zhǎng)數(shù)量快速下降, 到較優(yōu)解的時(shí)候逐漸降低學(xué)習(xí)率來(lái)訓(xùn)練模型, 即CARS的精選階段。 結(jié)果顯示選取的變量數(shù)在前7次中下降很快, 之后下降速度減慢至平穩(wěn)。 同時(shí), 隨著采樣次數(shù)的增加, 部分無(wú)關(guān)波段被剔除導(dǎo)致RMSECV值整體呈現(xiàn)下降趨勢(shì), 圖5(b)可知開(kāi)始迭代時(shí), 由于牛奶數(shù)據(jù)中大量和蛋白質(zhì)無(wú)關(guān)的波段被消除, 故RMSECV值快速減小, 當(dāng)采樣次數(shù)到第7次時(shí)均方根誤差達(dá)到最低值, 后由于部分重要信息被剔除, RMSECV值又整體呈上升趨勢(shì)。 故當(dāng)?shù)螖?shù)為7時(shí)所選擇的波長(zhǎng)集合為最優(yōu)集合。 7次采樣得到27個(gè)特征波長(zhǎng)。
圖5 CARS特征變量選擇
懲罰參數(shù)c和核函數(shù)g是支持向量機(jī)中兩個(gè)重要參數(shù), 影響著預(yù)測(cè)模型的精度; 因此, 選取最優(yōu)的c和g是SVM優(yōu)化的關(guān)鍵[16], 也是本工作提出用SSA算法優(yōu)化SVM的初心。 經(jīng)反復(fù)調(diào)試, 麻雀算法的參數(shù)設(shè)置為: 麻雀數(shù)量N=20, 最大迭代次數(shù)Max_iteration=200; SVM的懲罰參數(shù)c和核函數(shù)g取值范圍均為[2-5, 25]。 最終得到的最佳參數(shù)為:c=3.482 5,g=0.031 2。 也就是說(shuō), 用此最佳的c和g值, SSA-SVM模型的精度最高。
為了考察SSA-SVM模型的預(yù)測(cè)性能, 選取PLS和用遺傳算法(GA)、 粒子群算法(PSO)優(yōu)化的SVM模型比較。 將CARS和SPA分別選取出的27和17個(gè)特征波段作為幾個(gè)模型的輸入變量; GA-SVM的最佳參數(shù)為c=7.221 8,g=0.043 5, PSO-SVM的最佳參數(shù)為c=17.187 2,g=0.051 2。 將最佳參數(shù)代入模型, 預(yù)測(cè)牛奶的蛋白質(zhì)含量, 通過(guò)對(duì)比各個(gè)模型的精度和耗時(shí), 選取出最優(yōu)的牛奶蛋白質(zhì)預(yù)測(cè)模型。
對(duì)比蛋白質(zhì)含量預(yù)測(cè)精度: 全波段數(shù)據(jù)作為輸入變量時(shí), SSA-SVM算法較PLS算法準(zhǔn)確率提高了5.83%, 較SVM算法準(zhǔn)確率提高6.03%, 較GA-SVM算法和PSO-SVM算法準(zhǔn)確率分別提高了2.68%和5.2%。 表明SSA-SVM為牛奶蛋白質(zhì)最佳的預(yù)測(cè)模型, 可以有效的預(yù)測(cè)牛奶中蛋白質(zhì)含量。 從圖6可以看出SSA-SVM算法的適應(yīng)度值隨適應(yīng)度迭代次數(shù)增加逐漸趨近最優(yōu)值, 到達(dá)最低點(diǎn)后保持穩(wěn)定。
圖6 適應(yīng)度曲線
表2顯示將全部125個(gè)波段、 CARS提取的27個(gè)特征波段和SPA提取的17個(gè)特征波段分別作為輸入變量時(shí), 利用五種不同的預(yù)測(cè)模型對(duì)牛奶蛋白質(zhì)預(yù)測(cè)的精度對(duì)比。 當(dāng)全波段作為輸入時(shí), SSA-SVM模型對(duì)蛋白質(zhì)含量預(yù)測(cè)可以滿足預(yù)測(cè)要求,R2=0.988 9, RMSE=0.009 2, 耗時(shí)6.056 9 s。 SVM、 PLS兩種經(jīng)典回歸模型耗時(shí)雖短, 但準(zhǔn)確率較低。 GA-SVM和PSO-SVM雖然精度較傳統(tǒng)SVM得到提高, 但仍低于本文提出的SSA-SVM模型, 并且耗時(shí)過(guò)長(zhǎng)。 由表2可以更直觀的看出不同模型針對(duì)牛奶數(shù)據(jù)的預(yù)測(cè)效果。 預(yù)測(cè)效果排序?yàn)? SSA-SVM>GA-SVM>PSO-SVM>PLS>SVM。 且在特征波段選擇時(shí), CARS的效果好于SPA, 當(dāng)以SSA-SVM為預(yù)測(cè)模型時(shí), CARS選擇的波段作為輸入變量準(zhǔn)確度比SPA選擇波段高0.12%, 比全波段高1.07%。
表2 各模型精度對(duì)比
結(jié)果表明, SSA算法較于GA、 PSO算法對(duì)SVM的優(yōu)化更具有優(yōu)勢(shì), 不容易陷入局部最優(yōu), 有效提高了牛奶蛋白質(zhì)預(yù)測(cè)的準(zhǔn)確率, 且迭代時(shí)間得到明顯縮短。 PLS和SVM算法雖耗時(shí)短, 但預(yù)測(cè)準(zhǔn)確率低, 在牛奶蛋白質(zhì)預(yù)測(cè)中不具有優(yōu)勢(shì)。
表2可知: CARS-SSA-SVM的預(yù)測(cè)效果最好,R2=0.999 6, RMSE=0.001 1, 耗時(shí)為4.112 1 s。 預(yù)測(cè)結(jié)果如圖7所示。
圖7 CARS-SSA-SVM驗(yàn)證結(jié)果
以五種蛋白質(zhì)濃度不同的牛奶作為實(shí)驗(yàn)對(duì)象建立SVM, PLS, GA-SVM, PSO-SVM和SSA-SVM五種不同的模型, 研究了利用牛奶的高光譜反射率對(duì)蛋白質(zhì)含量進(jìn)行預(yù)測(cè), 結(jié)論如下:
(1) MSC算法可以有效的對(duì)原始牛奶光譜數(shù)據(jù)預(yù)處理, 降低了噪聲干擾, 消除了光譜差異, 增強(qiáng)了光譜和數(shù)據(jù)的相關(guān)性, 有效降低了牛奶蛋白質(zhì)預(yù)測(cè)模型的誤差, 提高了準(zhǔn)確率。
(2) 使用CARS和SPA算法對(duì)牛奶數(shù)據(jù)進(jìn)行特征提取, CARS算法較SPA算法更能增強(qiáng)了光譜和蛋白質(zhì)含量之間的相關(guān)性, 消除了冗余信息, 大大降低了模型輸入變量多導(dǎo)致的復(fù)雜性, 同時(shí)模型的預(yù)測(cè)效率也得到了有效的提高。
(3) 采用SVM, PLS, GA-SVM, PSO-SVM和SSA-SVM五種回歸算法對(duì)比實(shí)驗(yàn)。 其中利用SSA-SVM算法選擇最佳參數(shù)的模型具有較高的精度。 在CARS的特征波長(zhǎng)作為輸入變量時(shí), 驗(yàn)證集R2=0.999 6, RMSE=0.001 1, 相較于另外四個(gè)模型, 穩(wěn)定性和準(zhǔn)確性得到明顯提高, 滿足了預(yù)測(cè)要求。
(4) SSA-SVM牛奶營(yíng)養(yǎng)含量分析方法精度高、 實(shí)驗(yàn)過(guò)程簡(jiǎn)便、 耗時(shí)小。 是牛奶中蛋白質(zhì)含量預(yù)測(cè)的新方法。 下一步目標(biāo)是有關(guān)牛奶營(yíng)養(yǎng)元素的含量建立更加理想化的預(yù)測(cè)模型, 對(duì)有效波長(zhǎng)的選擇進(jìn)行更深入的研究分析。