趙 燕
(山西機電職業技術學院 基礎部,山西 長治 046011)
以2017年全國大學生數學建模競賽C題為背景,主要解決三個問題:
問題一:賽題給出五種物質在不同濃度下的紅(R)、綠(G)、藍(B)、色調(H)和飽和度(S)五種顏色讀數,確定顏色讀數和物質濃度間的關系,并給出一些準則評價這五組數據的優劣。
問題二:賽題給出二氧化硫在不同濃度下的顏色讀數,建立二氧化硫顏色讀數和物質濃度的數學模型,并給出模型的誤差分析。
問題三:探討數據量和顏色維度對模型的影響。
人的眼睛對紅、綠和藍三種可見光最為敏感。R、G、B三色按不同比例混合可以生成大多數光。同樣絕大多數光也可以分解成RGB三種光,這是三基色原理[1]。
根據數據做出RGBHS顏色值隨濃度變化的散點圖,若呈現明顯線性關系,則選擇線性回歸模型;否則將RGB值化為灰度值。灰度是用[0,255]的數值來顯示圖像,0顯黑色,255顯白色。RGB值可轉化成灰度顯色,用灰度和濃度建立模型。
對于數據優劣的評價使用層次分析法:根據數據量的多少、數據精度、異常數據的個數三個準則來綜合評價進而得出數據的優劣程度。
二氧化硫顏色讀數與濃度模型的研究方法同問題一。建立并計算出模型的均方根誤差。
從模型的精準度和經濟成本角度分析數據量多少對模型的影響;以組胺為例,對比不同維度下的線性回歸模型的統計量,討論維度對模型的影響。
2.1.1 五種物質顏色讀數與濃度的關系
2.1.1.1 組胺顏色讀數與濃度的關系
根據組胺的10組顏色讀數繪制出五種顏色讀數隨著濃度變化的散點圖,發現都呈線性。設B為x1,G 為 x2,R 為 x3,H 為 x4,S 為 x5,濃度為 y,用MATLAB的stepwise逐步回歸命令,尋找RGBHS中對濃度影響顯著的量。結果顯示引入模型、移除模型。用MATLAB的regress建立線性關系:

檢驗結果顯示:R2近似為1,P小于0.05,系數置信區間不包含零點,模型合理。
2.1.1.2 溴酸鉀顏色讀數與濃度的關系
根據溴酸鉀的10組顏色讀數繪制出五種顏色讀數隨著濃度變化的散點圖,發現呈線性。用stepwise逐步回歸命令顯示 x1、x4、x5引入模型,x2、x3移除模型。因此,判斷濃度隨顏色變化的關系為多元線性關系:

模型檢驗:R2=0.99近似為 1,P小于 0.05,S2=20.5077系數的置信區間均不包含零點,模型合理。
2.1.1.3 工業堿顏色讀數與濃度的關系
根據工業堿的7組顏色讀數繪制出五種顏色讀數隨著濃度變化的散點圖,發現不再呈現線性,考慮RGB值轉化為灰度見表1。RGB值化為灰度的計算公式[2]:x=0.299R+0.587G+0.114B

表1 工業堿的灰度與濃度
先建立灰度x與濃度y的線性模型y=14.5198-0.0611x。但擬合度 R2=0.4389<0.5,說明模型不合理。再用rcoplot繪制殘差圖發現第7個數據有異常。剔除后,用regress計算得濃度隨顏色變化的關系:

模型檢驗:R2=0.90 近似為 1,P=0.0026<0.05,系數置信區間不包含零點,模型合理。
2.1.1.4 硫酸鋁鉀顏色讀數與濃度的關系
根據硫酸鋁鉀的37組顏色讀數繪制出五種顏色讀數隨著濃度變化的散點圖,發現RGB基本呈現線性,HS不是線性關系,則建立RGB與濃度的多元線性模型:y=7.7733+0.0366x1-0.1022x2+0.0049x3擬合度R2不高。根據殘差圖剔除第34、35組數據后再擬合,發現R2的值并沒有提高。最后考慮RGB化為灰度見表2。

表2 硫酸鋁鉀的灰度與濃度
繪制灰度隨濃度變化的散點圖,發現不是單調遞減,而是呈現弧形遞減。因此,用MATLAB的nlinfit命令建立濃度隨灰度變化的雙曲模型[3]

檢驗結果顯示:擬合程度R2=0.95接近與1,系數置信區間不包含零點,均表示擬合效果較好;另外觀察擬合效果圖1顯示擬合效果較好,雙曲模型成立。

圖1 硫酸鋁鉀雙曲模型檢驗的擬合圖
2.1.1.5 奶中尿素顏色讀數與濃度的關系
根據奶中尿素的15組顏色讀數繪制出五種顏色讀數隨著濃度變化的散點圖,發現呈線性。考慮建立線性模型,先用stepwise逐步回歸命令顯示x2、x3、x4、x5引入模型,x1移除模型。因此,用 regress命令計算模型:y=20794+453x2-555x3-346x4+94x5檢驗結果:R2近似為1,表明模型基本可用,但是估計誤差方差S2=91839較大,有待改進。根據繪制殘差圖[4]排除第5個異常數據再計算濃度隨顏色變化的關系:模型檢驗:R2近似為 1,估計誤差方差S2=44298較前有所降低,表明改進后模型更好。

2.1.2 五種物質顏色讀數優劣
準則1:數據的數量:實驗數據的組數n越大說明數據越優。
準則2:數據的精度:用MATLAB的rgb2hsv命令將RBG值算出的值,利用公式:

計算誤差,誤差越小說明數據越優。
準則3:異常數據個數:建立模型時剔除的異常數據越少,說明數據越優。
用層次分析法確定數據的數量,數據的精度,異常數據個數的權重為(0.4,0.3,0.3),根據實驗數據并歸一化,結合權重得到最終排名見表3。

表3 數據優劣的排名
因此,得到數據優劣的程度為:溴酸鉀>組胺>硫酸鋁鉀>工業堿>奶中尿素。
2.2.1 問題二的模型建立
根據二氧化硫的25組顏色讀數繪制出五種顏色讀數隨著濃度變化的散點圖,發現不再呈現線性關系。因此考慮灰度與濃度的關系,RGB值轉化為灰度見表4。

表4 二氧化硫的灰度與濃度
繪制灰度隨濃度變化的散點圖見圖2。用nlinfit計算灰度隨濃度變化的模型:


圖2 二氧化硫濃度隨灰度變化的散點圖

圖3 二氧化硫模型檢驗的擬合圖
2.2.2 模型的檢驗
根據模型計算出濃度預測值,給出預測值和真實值對比表見表5。

表5 預測值和真實值對比表
對比顯示濃度預測值與真實值相差不多。灰度為120.42時,濃度的預測值與真實值的偏差最大。再利用MATLAB的nlintool功能對模型進行檢驗。
圖中顯示灰度為120.42的數據點在預測區間的邊緣,說明了(120.42,50)是異常點,剔除后用nlinfit計算得改進后的模型:

圖4 二氧化硫預測結果輸出圖

改進后的模型擬合度為R2較原來的模型有所提高,且均方根誤差為7.045較原來的模型有所減少。說明改進后的模型更好,擬合效果見圖3。
2.3.1 數據數量對模型的影響
數據樣本數量應該適中就好,并且數據在整體中的分布要盡可能均勻,才能正確反應整體,建立的模型才更精準。
2.3.2 維度對模型的影響
以組胺為例進行不同維度的多元線性回歸,發現不是維度越高越好,維度升高必導致模型復雜度升高。要結合數據選擇對濃度影響顯著的顏色讀數建立模型,方可提高模型精度。