李曼潔, 吳照, 徐斌辰, 于子博, 姚思雅
(1.上海安悅節能技術有限公司,上海 200038;2.同濟大學 控制科學與工程系,上海 201804;3.山東省煙臺第二中學,山東 煙臺 264000)
隨著國民經濟的不斷發展與人民需求的迅猛增加,工業,尤其是與人民生活相關的制造業蓬勃發展,但隨之而來的高能耗、高排放卻也成為了新的社會問題。為了進一步推進節能減排工作,2017年國家能源局發布了《能源發展“十三五”規劃》,實行能源消費總量和強度的雙重控制,不僅“到2020年把能源消費總量控制在50億噸標準煤以內”,還要“單位GDP能耗下降15%以上”。在節能減排的大形勢下,傳統制造型企業必須從傳統的粗放型方式向智能化生產、精細化管理轉變。
精細化能源管理需要將能耗與生產、天氣、人員等因素建立多維定量關系,幫助企業將能源情況與生產信息進行精確對標。目前精細化能源管理技術的研究雖然局限在極少數工業化起步早,工藝流程清晰,節能潛力大的行業,例如鋼鐵、冶金等,但研究的方法和結論值得汽車制造企業借鑒和學習。文獻[1, 2]介紹了鋼鐵企業在生產能耗預測、負荷預測中使用的模擬退火PSO-BP算法和在線Boosting回歸算法,達到良好的預測效果。文獻[3]探討了如何使用能耗預測模型實現企業的能源管理。
.XGBoost是陳天奇及其團隊于2014年3月27日發布的基于梯度提升算法的開源算法庫,XGBoost融合梯度提升、隨機森林等算法的優勢,創新性得提出了模型的離散意識和核外計算方法,不僅提升了算法模型對分散型數據庫的預測效果,也大大提高了模型訓練的速度[4]。近兩年內,XGBoost算法在世界各大機器學習競賽中展露頭角,成為最受歡迎的機器學習算法之一,使用XGBoost為基礎建立的模型也不斷增多。文獻[5-8]均使用XGBoost算法對用電負荷、區域用電量、超短期負荷作出預測。其中[5]探索了不同XGBoost模型參數對模型預測準確度的影響,文獻[6]介紹了XGBoost模型在Hadoop平臺上的實現,文獻[7,8]測試了XGBoost在超短期負荷預測上的能力。
XGBoost算法基于基本的樹提升方法,通過集成多個簡單的線性模型或邏輯模型建立復雜的非線性模型。對于一個有m維輸入、n個樣本點的集合了K個子模型的模型,如式(1)。
(1)
其中F代表了回歸樹集合所在的空間,每一個fk代表了一個擁有獨立結構與獨立葉權重的分類樹。為了防止模型的過擬合,XGBoost在損失函數中也加入了正則項,并對整體損失函數進行了簡化。XGBoost防止模型過擬合還使用了收縮方法(shrinkage)和列特征抽樣(column subsampling)。
在解決實際問題過程中,數據經常會出現極度分散和不平衡,主要有三種原因:一、真實數據中存在大量間斷、缺失;二、數據中存在大量零值;三、由于人為特征工程創造較多離散數據,例如進行了獨熱編碼。XGBoost相比于其他機器學習算法與其他Boosting算法,對于離散性的數據有非常好的學習效果,這得益于XGBoost通過設置默認值賦予了模型數據離散的意識。為了能讓模型意識到數據的離散分布,XGBoost在每一個樹的節點上設置了默認方向,并且把某一維度上缺失、零值或不曾出現的值都設定為“缺失值”,這樣經過多重學習,模型會習得出現“缺失值”時的默認方向。同時,由于這個過程是線性的,所以模型在學習離散性數據時并不會花費更多時間。
目前用于預測制造企業能耗的模型算法有很多,包括支持向量機[9]、神經網絡模型[10]等,這些模型屬于傳統型模型,其中支持向量機對于需要高維轉低維的數據有很好的預測效果,神經網絡模型靈活的結構能夠很好地反應輸入與輸出之間的非線性關系。但考慮到制造企業能耗數據的高離散度和大樣本量,這兩種算法無法達到滿意的效果,或需要復雜的調參才能達到滿意的效果。
本次研究使用上海某汽車制造廠油漆車間2016年11月至2018年4月的能耗及相關數據。數據采集頻率為每天,總計426個數據點,原始數據維度包括:天然氣用量、用電量、各車型產量、廠區平均環境溫度、平均環境濕度、最高氣溫與最低氣溫,后期通過進一步分析補充數據維度(詳見章節2.4)。為選擇最適合的預測算法,首先需要對數據分布進行探索,如圖1所示。



圖1 電量及天然氣數據的分布情況
從圖 1中可以看出,汽車生產有生產日與非生產日區別,且生產計劃靈活多變,因此用電量與天然氣消耗量呈現極不平衡的數據結構。以用電量為例,電量數據分布在16 081至173 776 kWh間,平均值為120 732 kWh,由于75%的數據集中在11萬至16萬kWh間,因此處在2萬至4萬kWh的數據被判斷為“異常點”。天然氣使用量存在相似的情況,但波動范圍相對較小。
根據對樣本數據分布特性的分析,確定選用對分散數據較為友好的模型算法。傳統型算法中,支持向量機算法用在小樣本數據分析時有較好學習效果,但用在數據量較大樣本的分析時,模型訓練時間較長; BP神經網絡算法雖然具有強大的非線性映射能力,但由于它是一種局部搜索的優化方法,對初始網絡等設置參數的依賴性強,容易使損失函數收斂到局部極小點而不是全局極小點。伴隨深度學習的井噴式發展,出現很多新型深度神經網絡模型,這些算法對數據量的需求極大,因此也不適合本次研究。XGBoost與這些算法相比,有算法訓練時間短,對初始設置的參數依賴性較低,對不平衡的分散數據學習效果好等多方面優勢,因此本研究在比較不同算法計算結果后,最終選擇了XGBoost模型算法。在下一章節中,將以該XGBoost模型為基礎比較和分析各種數據特征工程對預測模型準確性的影響。
在數據建模過程中,數據和特征決定了機器學習效果的上限,而模型和算法只能促使結果逼近這一上限。因此在建立能耗預測模型時,除選擇算法外,對輸入數據的特征工程處理也至關重要。在實際能耗預測過程中,如出現預測準確度較低的情況,除分析算法性能缺點,還需考慮數據缺乏某些關鍵特征或某些特征關鍵信息等。在以往能耗預測研究中,很多研究者更多地將重心放在模型比較和優化上,而較少得關注原始數據的特征工程,本節將以XGBoost預測模型為基礎,介紹研究過程中,通過優化數據和特征,提高預測模型準確度的四種方法方法。
由于能源數據本身具有時間上的連續性,在進行數據特征工程時應考慮從日期數據中提取部分特征信息,如月份、星期,甚至上下午等。以汽車制造廠油漆車間為例,為保證整車噴漆質量穩定,油漆車間內烘房溫、濕度需全年嚴格控制在一定范圍內。由于夏季與冬季環境溫度相差巨大,而烘房又需大量室外新風,油漆車間通過調節天然氣燃燒量來控制溫度,因此天然氣消耗量在夏季與冬季有較大差別,因此提取月份信息能夠增強模型對季節信息的學習,進而提升模型預測準確性。
除了從時間數據中提取關鍵信息,部分產品代碼中也隱藏著可供提取的產品參數信息。
在提取關鍵時間信息后,可以使用獨熱編碼對信息進行進一步處理。獨熱編碼是許多機器學習任務中處理非連續數據的一種常用方法,例如本案例中,存在“星期”數據,如將“周一”、“周二”、“周三”等表示為數字再進行學習,模型的學習效率將大大提高。但由于這些數據間不存在必然序列,不能使用連續數據來表示,因此需要將一維非連續數據拓展為n維,使每個狀態都有獨立寄存位置。
在生產制造中,一些關鍵物理量信息,如長度、重量、面積等產品工藝信息,可增加到數據的特征工程中,以改進模型的數據輸入。在實際研究中,要根據產品加工特性選擇關鍵物理量信息。本次研究的油漆車間,主要工藝是給白車身增加多層防護及裝飾漆,因此選取各個車型的電泳理論噴涂面積作為關鍵物理量。這些關鍵物理量與產品可一一對應,利用理論噴涂面積能對不同車型的每日產量進行線性壓縮,再乘以一定的線性比例,最終完成產量信息與關鍵工藝信息的整合。
通過這種方式,可在不增加新維度情況下在已有特征中加入新信息,后期模型訓練中可利用這種方法捕捉到更多關鍵信息。
在建立能源預測模型時,選取的特征之間可能也存在一定相關性。在通常情況下,算法模型不會考慮各輸入數據維度間的非線性關系,而將各維度作為獨立輸入。因此,當生產不同產品間存在一定關系,如替代關系、零件與總成關系等,可考慮增加額外多項式特征補充這部分信息。在本研究中,考慮到不同車型間有相互替代關系,建立任意兩車型產量間相關關系,以補充產量數據多項式特征。
數據維度的多樣性和有效性是模型準確預測的重要保證,當特征工程處理后仍然無法有效提高預測準確度時,需重點考慮補充新的數據維度。從工藝過程入手,找尋模型仍未考慮、卻又影響能耗的關鍵數據。在本研究中,天然氣預測模型的準確率經過多次優化后達到瓶頸,誤差率仍不能滿足要求。通過對油漆車間天然氣消耗結構的進一步分析,發現模型訓練中缺少廢氣處理設備天然氣消耗的影響變量。考慮到該設備占天然氣整體消耗的30%,因此增加廢氣處理設備工作時長數據維度,經過比較和分析,預測準確率有顯著提升。
本次研究采用R2與RMSE評估模型預測效果,同時,由于該企業生產節拍在數據采集過程中不斷提升,導致總用電量和天然氣消耗量不斷增加,因此,另外定義平均誤差率k判斷模型的相對誤差百分比,如式(2)—式(4)。
(2)
(3)
(4)

使用XGBoost算法建立能耗預測模型的流程如圖2所示。
預測效果如圖3所示。
分析(a)時重點分析用電情況的兩級,即1和2兩個區域,在區域1中可以看到,當實際用電量在短時間內出現激增時,測試集的預測值(紅點)能較好得追蹤用電趨勢的變化,雖相較于訓練集的預測值(黑點)仍有一定差距,但已達良好預測效果。在區域2中可以看到對非工作日用電預測,XGBoost模型也能很好得接近實際情況。

圖2 建模流程圖

(a) 用電預測模型效果

(b) 天然氣預測模型效果
在本文的第1章中詳細介紹和討論了4種能耗預測建模過程中使用的特征工程方法,包括從已有數據中提取關鍵信息、針對關鍵數據進行線性壓縮、創建多項式特征和增加補充維度。這一節將以2.1中建立的XGBoost能耗預測模型為基礎,展示在不同組合的特征工程方法下,模型預測效果提升的情況。
表1展示了不同組合的特征工程方法對模型預測結果的影響,如表1所示。
其中實驗1到4采用同一組數據集(2016年11月至2017年12月)和同樣的數據集劃分。但因為2016年11月至2017年12月缺乏詳細的廢氣處理設備運行時長數據,所以實驗5無法使用同樣的數據集進行學習和測試。在實際走訪中了解到,該廠油漆車間2018年1月至6月的真實生產情況與2017年7月至12月相比變動不大,因此可認為數據的特征保持穩定不變。實驗5最終采用2018年1月至6月的數據進行學習和測試,可近似認為實驗5的結果與實驗1至4有一定可比性。
從表 1的結果可以看出,這四種特征工程組合對于XGBoost能耗預測模型均有一定程度的提高,但提高的幅度有明顯的不同,提高程度最高的兩種方法為增加補充維度和提取日期中的信息,增加多項式特征與線性壓縮對模型有微弱的提升但不明顯。這也證實了提高模型效果最有效的方法是增加有效的新信息,無論是從已有的字符(如日期、產品編號)中提取還是從外界新增相關的數據。

表1 針對同一能耗預測模型使用不同特征工程方法的結果比較
本文以上海某汽車制造廠油漆車間的能源消耗數據為基礎,首次建立了基于XGBoost算法的能耗預測模型,能夠較準確的預測油漆車間每日能源消耗,驗證XGBoost算法對汽車生產能耗的良好預測能力。同時,進一步討論、分析、比較了研究過程中使用的四種特征工程技術,發現從已有的信息(如日期、產品編號)中提取新特征和從外界新增相關數據,對模型預測的準確度有較大提升,為汽車制造企業能耗預測中的數據處理提供了寶貴的經驗。