拓端tecdat|電力消耗模型構(gòu)建、分析和預(yù)測
原文鏈接:http://tecdat.cn/?p=23392?
原文出處:拓端數(shù)據(jù)部落公眾號
作者:Minghong Xu
某制藥公司每年要花費大量的資金在電費上,由于電力公司的業(yè)務(wù)改革,該藥企可以在一年或月開始時向電力公司預(yù)購一定數(shù)量的電力,如果實際消耗大于該值,則每多消耗一度電要付比以前更多的電費,如果實際上沒有消耗這么多,也不會退還多余的電費,因此該公司打算預(yù)測未來的電力消耗以節(jié)省資金消耗。
解決方案
任務(wù)/目標(biāo)
根據(jù)制藥公司要求,運用多種數(shù)據(jù)源分析實現(xiàn)精準(zhǔn)電力消耗預(yù)測。
數(shù)據(jù)源準(zhǔn)備
為了預(yù)測電力的消耗,將電的主要使用分為生產(chǎn)車間的消耗,空調(diào)的電力消耗和其它消耗,其它消耗視為一個常量,在最后添加上去。
數(shù)據(jù)處理
在實際收到的數(shù)據(jù)中,有很多日期的某些電表的耗電量和某些車間的產(chǎn)量并沒有被記錄下來,因此使用拉格朗日插值法來補足中間的缺口。
特征轉(zhuǎn)換
把不能處理的特征做一些轉(zhuǎn)換,處理成算法容易處理的干凈特征舉例如下:
時間屬性。就時間屬性本身來說,對模型來說不具有任何意義,需要把日期轉(zhuǎn)變成到天,年、月、日、周偽變量。
電量屬性。由于收集的是單一電表的數(shù)據(jù)指標(biāo),所以合并相同類型的數(shù)據(jù),作為車間和空調(diào)的總耗電來參與模型建設(shè)。
產(chǎn)量屬性。由于車間生產(chǎn)了數(shù)種藥品,且不同藥品的每箱重量不同。有的工序的耗電量只和重量有關(guān),有的工序的耗電量之和箱數(shù)有關(guān),因此我們兩種計量方式都要用上。
構(gòu)造
劃分訓(xùn)練集和測試集
考慮到最終模型會預(yù)測將來的某時間段的耗電量,為了更真實的測試模型效果,以時間來切分訓(xùn)練集和測試集。具體做法如下:用軟件隨機(jī)劃分80%的數(shù)據(jù)作為訓(xùn)練集,剩下的20%作為測試集。
建模
一元線性回歸,在考慮一些工序的耗電時,容易發(fā)現(xiàn)機(jī)器的耗電量和產(chǎn)量是呈線性關(guān)系的,此時就使用一元線性回歸模型來擬合。(y=kx+b)
一元非線性回歸,在工廠里為了維持生產(chǎn)車間的恒溫,使用氣暖和空調(diào)來進(jìn)行調(diào)溫。氣暖消耗的是蒸汽,只有空調(diào)才會耗電。當(dāng)室內(nèi)溫度高于一定值時,空調(diào)才會開啟;室內(nèi)的溫度越高,空調(diào)的功率越大,因此空調(diào)耗電和氣溫是一元非線性關(guān)系。(y=f(x))
多元線性回歸,有的生產(chǎn)工序不僅僅和產(chǎn)品的重量有關(guān),還和產(chǎn)品的箱數(shù)有關(guān),此時就使用二元線性模型來擬合。(z=k1x+k2y+b)
模型優(yōu)化
1.上線之前的優(yōu)化:特征提取,樣本抽樣,參數(shù)調(diào)參。
2.上線之后的迭代,根據(jù)實際的A / B測試和業(yè)務(wù)人員的建議改進(jìn)模型
項目結(jié)果
在此案例中,分別用三種模型來計算耗電量的三個分量。
用一元非線性回歸,計算空調(diào)耗電量,其可視化圖形如下,其中這里的氣溫是日最高氣溫(關(guān)系式省略):

用一元線性回歸,計算出部分機(jī)器的耗電量和
產(chǎn)量的關(guān)系圖形如下(關(guān)系式省略):

?

?

這是三種機(jī)器的耗電量和產(chǎn)量的關(guān)系圖,可以看到當(dāng)產(chǎn)量為0時,機(jī)器待機(jī)時也有一定的耗電量。
用二元線性回歸模型,計算出最后一種機(jī)器和產(chǎn)品重量和箱數(shù)的關(guān)系:


上面是截面圖,下面是散點圖
可以看出,幾種耗電量的模型基本都可以較完美的擬合實際情況,置信度都有95%以上。這個模型主要有兩個用途,一是預(yù)測,就可以利用模型和計劃產(chǎn)量等因素來預(yù)測未來的耗電量,從而實現(xiàn)精確購電。二是異常檢測,如果有一天預(yù)測值和實際耗電量有較大偏差的時候,說明機(jī)器很可能出現(xiàn)了故障,要及時檢修。
預(yù)測模型僅僅是算法計算下的結(jié)果,在實際生活中,這樣的預(yù)測值僅僅只能作為參考,在實際生活中還有更多的因素影響結(jié)果,需要從多方面來考量。

最受歡迎的見解
1.在python中使用lstm和pytorch進(jìn)行時間序列預(yù)測
2.python中利用長短期記憶模型lstm進(jìn)行時間序列預(yù)測分析