張婷暄,鄧久寧,汪潔,孫懷宇
(沈陽(yáng)化工大學(xué)化學(xué)工程學(xué)院,遼寧 沈陽(yáng) 110142)
流化床干燥過(guò)程是一個(gè)復(fù)雜的過(guò)程,原因之一是流化床內(nèi)部是動(dòng)態(tài)流動(dòng)、傳熱和傳質(zhì)的過(guò)程,而不是一個(gè)穩(wěn)態(tài)的過(guò)程。正是由于過(guò)程的復(fù)雜性,單純從機(jī)理出發(fā)的模擬難于解決實(shí)際流程中的問(wèn)題。基于大數(shù)據(jù)分析的模型建立及人流化床干燥過(guò)程是一個(gè)復(fù)雜的過(guò)程,原因之一是流化床內(nèi)部是動(dòng)態(tài)流動(dòng)、傳熱和傳質(zhì)的過(guò)程,而不是一個(gè)穩(wěn)態(tài)的過(guò)程。正是由于過(guò)程的復(fù)雜性,單純從機(jī)理出發(fā)的模擬難于解決實(shí)際流程中的問(wèn)題。工智能是一種有效的方式。對(duì)于傳統(tǒng)化工的流程工業(yè)領(lǐng)域來(lái)說(shuō),人工智能與其融合度較低,仍然存在較大的發(fā)展空間[1]。
PVC 流化床干燥器是生產(chǎn)中重要的一個(gè)干燥設(shè)備。濕物料以流體的形式被輸送到流化床干燥其中,在流化床干燥器內(nèi)部進(jìn)行干燥操作。由于測(cè)溫點(diǎn)只存在于固定的幾個(gè)位置,所以如果在產(chǎn)品干燥結(jié)束后發(fā)現(xiàn)產(chǎn)品含水量不合格,那就會(huì)增加成本。這時(shí)如果有可以實(shí)時(shí)監(jiān)控產(chǎn)品含水量的設(shè)備,那就會(huì)在產(chǎn)品干燥結(jié)束前發(fā)現(xiàn)不合格的產(chǎn)品,從而進(jìn)行繼續(xù)干燥,這樣可以節(jié)省很多時(shí)間和成本。
本文試通過(guò)于實(shí)際生產(chǎn)數(shù)據(jù)的分析,得到較準(zhǔn)確的數(shù)據(jù)驅(qū)動(dòng)模型。主要解決了下述問(wèn)題:現(xiàn)場(chǎng)得到的數(shù)據(jù)中存在一些意外及缺失數(shù)據(jù),影響數(shù)據(jù)分析的進(jìn)行。本文通過(guò)使用KNN 的思想,采用python 3.0 的sklearn 庫(kù)中的KNNImputer 方法,對(duì)異常值進(jìn)行填充;由于物料在干燥器中的流動(dòng),使得不同位置的數(shù)據(jù)變化存在時(shí)間上的先后次序影響。本文通過(guò)計(jì)算不同測(cè)溫點(diǎn)和產(chǎn)品出口處的含水量的相關(guān)性系數(shù),來(lái)確定最佳的時(shí)間間隔,從而消除時(shí)間的影響;實(shí)際的測(cè)量點(diǎn)較多,文章通過(guò)主成分分析法(PCA)進(jìn)行降維,簡(jiǎn)化了數(shù)據(jù)的特征,并在此基礎(chǔ)上進(jìn)行了分類模型的構(gòu)建。
本文通過(guò)數(shù)據(jù)預(yù)處理,找出每個(gè)測(cè)溫點(diǎn)到產(chǎn)品出口的時(shí)間長(zhǎng)度,構(gòu)建同一物料在不同時(shí)間不同測(cè)溫點(diǎn)的數(shù)據(jù)表格,隨后將主成分分析法(PCA)和K 近鄰分類算法(KNN)相結(jié)合,構(gòu)造實(shí)時(shí)監(jiān)測(cè)的分類模型。
常見(jiàn)的缺失值填充的方法有以下幾種方法:固定值填充、均值填充、眾數(shù)填充、中位數(shù)填充、上下數(shù)據(jù)填充、插值法填充等。這些常見(jiàn)的填補(bǔ)異常值的方法,雖然可以對(duì)大部分?jǐn)?shù)據(jù)集進(jìn)行填充,但是對(duì)于個(gè)別數(shù)據(jù)波動(dòng)較大的數(shù)據(jù)集來(lái)說(shuō),這些填充進(jìn)去的數(shù)據(jù)不會(huì)很精確[3-4]。而通過(guò)KNN 算法填充時(shí)根據(jù)鄰近的多個(gè)“鄰居”來(lái)計(jì)算所需填充的異常值,會(huì)讓計(jì)算得到的填充值更為貼近鄰近的數(shù)據(jù),讓得到的數(shù)據(jù)相對(duì)于上述方式得到的數(shù)據(jù)更加精準(zhǔn),所以本文采用 KNN 算法來(lái)對(duì)異常值進(jìn)行填充。KNNImputer 方法的思想是找到數(shù)據(jù)空間中距離最近的K 個(gè)樣本,然后通過(guò)這K 個(gè)樣本來(lái)估計(jì)缺失數(shù)據(jù)點(diǎn)的值。缺失值可以用K 個(gè)相鄰樣本點(diǎn)的均值、中位數(shù)、眾數(shù)或者常數(shù)進(jìn)行填充。KNNImputer 預(yù)測(cè)的步驟是選擇其他不存在缺失值的列,同時(shí)去除需要預(yù)測(cè)缺失值的行和列,然后計(jì)算歐氏距離找到K 個(gè)近鄰點(diǎn)。如果是離散的缺失值,則使用KNN分類器,投票選出K 個(gè)鄰居中最多的類別進(jìn)行填補(bǔ);如果是連續(xù)的變量,則用KNN 回歸器,使用K 個(gè)鄰居的平均值進(jìn)行填補(bǔ)[7]。
主成分分析法(PCA)是一種用于探索高維數(shù)據(jù)的技術(shù)。PCA 通常用于高維數(shù)據(jù)集的探索與可視化。還可以用于數(shù)據(jù)壓縮,數(shù)據(jù)預(yù)處理等。通過(guò)正交變換將一組可能存在相關(guān)性的變量轉(zhuǎn)換為一組線性不相關(guān)的變量,轉(zhuǎn)換后的這組變量叫主成分。PCA 的基本思想如下:將具有一定相關(guān)性的多個(gè)原始變量,通過(guò)組合變換,得到一組互相無(wú)關(guān)的綜合變量。從中選取幾個(gè)較少的能夠在很大程度上反映原始變量信息的綜合變量,就是主成分,新的低維數(shù)據(jù)集會(huì)盡可能地保留原始數(shù)據(jù)的變量,可以將高維數(shù)據(jù)集映射到低維空間的同時(shí),盡可能地保留更多變量。主成分之間是互不相關(guān)的,且是原始變量的線性組合[1]。
K 近鄰算法的核心思想是:如果一個(gè)實(shí)例在特征空間中的K 個(gè)最相似(即特征空間中最近鄰)的實(shí)例中的大多數(shù)屬于某一個(gè)類別,則該實(shí)例也屬于這個(gè)類別。所選擇的鄰居都是已經(jīng)正確分類的實(shí)例。
該算法假定所有的實(shí)例對(duì)應(yīng)于N 維歐式空間中的點(diǎn)。通過(guò)計(jì)算一個(gè)點(diǎn)與其他所有點(diǎn)之間的距離,取出與該點(diǎn)最近的K 個(gè)點(diǎn),然后統(tǒng)計(jì)這K 個(gè)點(diǎn)里面所屬分類比例最大的,則這個(gè)點(diǎn)屬于該分類[1-2]。該算法涉及3 個(gè)主要因素:實(shí)例集、距離或相似的衡量、K 的大小。
KNN 算法的實(shí)現(xiàn)就是取決于,未知樣本和訓(xùn)練樣本的“距離”。而計(jì)算“距離”可以利用歐式距離算法,如式(1):

1)獲取工廠實(shí)際數(shù)據(jù),整理數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。
2)數(shù)據(jù)清洗。數(shù)據(jù)清洗是一項(xiàng)復(fù)雜且繁瑣的工作,同時(shí)也是整個(gè)數(shù)據(jù)分析過(guò)程中最為重要的環(huán)節(jié)。實(shí)際的工作中確實(shí)如此,數(shù)據(jù)清洗的目的有兩個(gè),第一是通過(guò)清洗讓數(shù)據(jù)可用。第二是讓數(shù)據(jù)變得更適合進(jìn)行后續(xù)的分析工作[5]。本文通過(guò)箱線圖四分位方法計(jì)算得到異常值,并通過(guò)KNN 算法計(jì)算得到的數(shù)據(jù)對(duì)異常值進(jìn)行替換,從而完成數(shù)據(jù)清洗的工作。
3)通過(guò)python3.0 的內(nèi)置函數(shù)計(jì)算相關(guān)系數(shù),通過(guò)相關(guān)性系數(shù)的大小來(lái)尋找時(shí)間步長(zhǎng)。由于工廠操作人員給出整個(gè)流程時(shí)間不超過(guò)120 min,所以通過(guò)循環(huán),從時(shí)間間隔為0 到120 進(jìn)行循環(huán)計(jì)算,找出相關(guān)性最高的對(duì)應(yīng)的時(shí)間長(zhǎng)度,此時(shí)的時(shí)間長(zhǎng)度就是最佳的時(shí)間間隔。隨后再在經(jīng)過(guò)預(yù)處理的數(shù)據(jù)文件上減去時(shí)間步長(zhǎng),將數(shù)據(jù)處理成為同一流股物料在不同測(cè)溫點(diǎn)時(shí)對(duì)應(yīng)的數(shù)據(jù)。
4)由于實(shí)際數(shù)據(jù)的特征有10 個(gè),和一個(gè)干燥后的產(chǎn)品的含水量。所以本文通過(guò)主成分分析法(PCA)對(duì)數(shù)據(jù)進(jìn)行操作。通過(guò)python3.0 的sklearn庫(kù)來(lái)調(diào)用PCA 方法,并做出降維時(shí)保留90%的數(shù)據(jù)信息的限制。通過(guò)PCA,既可以減少數(shù)據(jù)的特征值的個(gè)數(shù),又可以極大的保留最大程度地?cái)?shù)據(jù)信息,不會(huì)因?yàn)榻稻S,使數(shù)據(jù)信息丟失很多。
5)經(jīng)過(guò)PCA 降維后的數(shù)據(jù),通過(guò)調(diào)用sklearn庫(kù)的train_test_split 方法將他們劃分訓(xùn)練集與測(cè)試集,用來(lái)訓(xùn)練KNN 分類模型。其中訓(xùn)練集占比80%,測(cè)試集占比20%。
6)劃分好訓(xùn)練集與測(cè)試集后,將訓(xùn)練集給KNN模型進(jìn)行訓(xùn)練,通過(guò)對(duì)訓(xùn)練集的訓(xùn)練,構(gòu)造KNN模型。
7)通過(guò)測(cè)試集來(lái)驗(yàn)證訓(xùn)練的KNN 模型的準(zhǔn)確率。
通過(guò)Anaconda3.0 自帶的Jupyter Notebook 中的python3.0 進(jìn)行實(shí)驗(yàn)。
數(shù)據(jù)是由工廠現(xiàn)場(chǎng)的數(shù)據(jù)文件獲得的。由于溫度對(duì)于含水量的影響是最大的,本次分析主要對(duì)溫度測(cè)量值進(jìn)行分析。其中測(cè)溫點(diǎn)有 10 個(gè)。而AIA2203.PV 為產(chǎn)品的含水量。樣本包括了1 440 個(gè)時(shí)間點(diǎn)的數(shù)據(jù)。
1)判斷數(shù)據(jù)中的異常值
通過(guò)箱線圖四分位方法計(jì)算,此方法可用于識(shí)別一組數(shù)據(jù)中的異常值。具體方法如下:

式中:Q3—上四分位數(shù);
Q1—下四分位數(shù);
K—代表系數(shù),可以取值1.5。
在最大值最小值之間的值就是可接受范圍內(nèi)的數(shù)值,這兩個(gè)值之外的數(shù)認(rèn)為是異常值[6]。
2)異常值填充
這里選擇用KNN 算法對(duì)異常的數(shù)據(jù)進(jìn)行填充,使用Sklearn 中的KNNImputer 方法[8]對(duì)缺失值進(jìn)行填充,這個(gè)基于KNN 算法的新方法使得我們現(xiàn)在可以更便捷地處理缺失值,并且與直接用均值、中位數(shù)相比更為可靠。利用“近朱者赤”的KNN 算法原理,這種插補(bǔ)方法借助其他特征的分布來(lái)對(duì)目標(biāo)特征進(jìn)行缺失值填充。

表1 各工位異常值個(gè)數(shù)表
由于流化床干燥過(guò)程屬于過(guò)程工藝,所以是持續(xù)作業(yè)。也正是由于流動(dòng),所以測(cè)溫點(diǎn)每次讀取的數(shù)據(jù),都不是同一物料對(duì)應(yīng)的溫度,這就導(dǎo)致在同一時(shí)刻讀取的產(chǎn)品含水量和產(chǎn)品在干燥時(shí)的溫度并不是對(duì)應(yīng)的。為了解決這個(gè)問(wèn)題,就要找到某一微元物料在不同測(cè)溫點(diǎn)距離到產(chǎn)品干燥結(jié)束時(shí)的時(shí)間間隔。在考慮時(shí)間間隔后,這時(shí)每條的數(shù)據(jù)才是同一微元物料在不同測(cè)溫點(diǎn)的數(shù)據(jù)信息,也才與最終的含水量相關(guān)[9-10]。
通過(guò)工廠現(xiàn)場(chǎng)的數(shù)據(jù)得知,整個(gè)干燥流程不超過(guò)2 h,所以采用了逐步計(jì)算不同測(cè)溫點(diǎn)在不同時(shí)間長(zhǎng)度下(2 h 內(nèi))的相關(guān)性系數(shù),尋找相關(guān)性最大時(shí)對(duì)應(yīng)的時(shí)間差,以此來(lái)判斷不同測(cè)溫點(diǎn)距離產(chǎn)品出口的時(shí)間間隔。通過(guò)自定義函數(shù)里采用循環(huán)來(lái)執(zhí)行此計(jì)算過(guò)程。最后得到的時(shí)間差如表2。

表2 各個(gè)測(cè)溫點(diǎn)與產(chǎn)品含水量之間最佳時(shí)間差
通過(guò)調(diào)用sklearn 庫(kù)中的PCA 方法,對(duì)數(shù)據(jù)進(jìn)行降維。在降維時(shí),規(guī)定保留90%的數(shù)據(jù)信息,使數(shù)據(jù)在降維時(shí)較少的損失數(shù)據(jù)信息。其中,表3為降維后的主成分部分特征數(shù)據(jù);表4為主成分的方差貢獻(xiàn)率。

表3 降維后的主成分部分特征數(shù)據(jù)

表4 主成分的方差貢獻(xiàn)率
根據(jù)上表可知,經(jīng)過(guò)PCA 降維,降成了4 個(gè)維度,而這四個(gè)維度的數(shù)據(jù)信息包含了91.1%的原始數(shù)據(jù)信息。所以選擇這4 個(gè)主成分進(jìn)行構(gòu)建KNN分類模型。含水量合格情況計(jì)數(shù)表見(jiàn)表5。

表5 含水量合格情況計(jì)數(shù)表
通過(guò)調(diào)用sklearn 庫(kù)的train_test_split 方法來(lái)進(jìn)行訓(xùn)練集與測(cè)試集的劃分。把新構(gòu)建的數(shù)據(jù)集new_X 中經(jīng)過(guò)PCA 降維后得到的4 個(gè)主成分PC1,PC2,PC3,PC4 對(duì)應(yīng)的數(shù)據(jù)作為X,將新構(gòu)建的數(shù)據(jù)集new_X 中的產(chǎn)品是否合格對(duì)應(yīng)的數(shù)據(jù)作為Y。分別對(duì)X 和Y 進(jìn)行劃分為X_train,X_test,Y_train,Y_test。分別對(duì)應(yīng)X 與Y 的訓(xùn)練集與測(cè)試集。。
通過(guò)調(diào)用sklearn 庫(kù)中的KNN 方法,對(duì)劃分好的訓(xùn)練集X_train,Y_train 進(jìn)行訓(xùn)練,得到一個(gè)KNN分類模型。
根據(jù)式4 計(jì)算KNN 分類模型的預(yù)測(cè)準(zhǔn)確率為87.547%,可以認(rèn)為該訓(xùn)練模型擁有較好的分類準(zhǔn)確率,可以用于實(shí)時(shí)監(jiān)測(cè)產(chǎn)品的含水量。

本文在數(shù)據(jù)清洗時(shí),使用KNN 算法對(duì)異常值進(jìn)行填充,隨后將主成分分析法(PCA)和K 近鄰分類算法(KNN)相結(jié)合,構(gòu)造了一個(gè)基于低維度數(shù)據(jù)的同時(shí),保留了90%的數(shù)據(jù)信息的分類模型。可以極大地減少基于機(jī)理的化工建模計(jì)算中的復(fù)雜信息,大大地提高了計(jì)算效率。同時(shí),建立的分類模型的準(zhǔn)確率高達(dá)87.547%,是擁有不錯(cuò)的分類能力的一類模型。而且由于很多溫度點(diǎn)的變化時(shí)刻早于含水量的變化時(shí)刻,從而可能構(gòu)建在線的預(yù)測(cè)監(jiān)視系統(tǒng),及時(shí)對(duì)于生產(chǎn)條件進(jìn)行調(diào)整。本文還存在一些不足。例如在考慮測(cè)溫點(diǎn)距離產(chǎn)品出口的時(shí)間長(zhǎng)度時(shí),采用的是計(jì)算相關(guān)值來(lái)確定的時(shí)間,并未考慮到變化在時(shí)間軸上的發(fā)散。同時(shí),本文是基于數(shù)據(jù)驅(qū)動(dòng)進(jìn)行的分析,還沒(méi)有更多地應(yīng)用化工過(guò)程的機(jī)理進(jìn)行支持。在后續(xù)的研究中會(huì)考慮加入化工方面的機(jī)理建模,將兩者結(jié)合起來(lái),以期得到更好的模型。