李湘軍,朱慧敏,譚笑,張瑞,薛晨,彭志強
(震兌工業智能科技有限公司,廣東 深圳 518101)
當前世界經濟形勢低迷,國際航運市場也不可避免地受到影響,如何降低航運的成本,提高利潤,成為國際航運市場普遍關心的話題,而降低主機燃油消耗則是其中關鍵的一環。與此同時,隨著生產力的發展,人民生活水平的提高,越來越多的國家開始關注環境問題,要求航運船舶降低碳排放量。這些均促使著航運公司追求更低的主機燃油消耗。
一方面,挖掘與主機燃油消耗相關的因素,進而建立主機的燃油消耗模型,是進一步實現更低主機燃油消耗的重要條件。另一方面,流量計價格昂貴,也給船運公司造成了一定的負擔,而當前基于實際航行數據進行油耗估計的研究卻很少。在此背景下,本文提出了基于機器學習方法的海里油耗估計模型,既為指導船舶更高效地利用燃油,也為船舶無流量計運行而依賴算法根據實際航行數據估計船舶燃油流量奠定了基礎。
首先,本文利用隨機森林算法從眾多的參數中選擇出了與主機燃油流量最相關的五個參數;其次,對輸入的五個特征維度進行了預處理;最后,為了驗證所選特征的有效性,本文從眾多船舶參數中隨機抽取五個特征與所選特征進行建模對比,多次實驗結果表明隨機森林所選特征取得了最高的準確度,證明了該方法的有效性。
為了增強模型的可解釋性,本文使用LASSO回歸建模對主機燃油消耗進行預測,實驗結果表明LASSO算法具有較好的預測結果和較強的可解釋性。
現實情況下,一個數據集中往往有成百上千個特征,如何在其中選擇對結果影響最大的那幾個特征,以此來縮減建立模型時的特征數是我們非常關心的問題[1-2]。因此,本文首先利用了隨機森林算法從眾多的船舶參數中進行了特征選擇,通過隨機森林來進行特征選取的主要優點在于,可以處理特征較多的數據集,并且使用隨機森林算法進行特征提取前,無需對數據進行標準化處理。
隨機森林是機器學習中的一種常用方法[3],是用隨機的方式生成由多個沒有關系的決策樹組成的森林。其中決策樹是一個樹結構[4],每個非葉節點表示一個根據特征屬性的劃分方法,每個分支代表這個特征屬性在某個值域上的輸出,而每個葉節點存放一個輸出結果。使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特征屬性,并按照其值選擇輸出分支,直到到達葉子節點,最終將葉子節點存放的類別作為決策結果。
獲得森林之后,當有一個新的輸入樣本進入時,森林中的每一棵決策樹將分別進行判斷樣本的所屬類別(對于分類算法),被選擇最多的類別即為最終的分類結果。另外,隨機森林還可以進行無監督學習聚類和異常點檢測。
在統計學[5]和機器學習[6]中,LASSO算法[7]是一種同時進行特征選擇和正則化的回歸分析方法,可以增強統計模型的預測準確性和可解釋性。LASSO算法揭示了很多估計量的重要性質,例如 LASSO系數估計值和軟閾值之間的聯系,當協變量共線時,LASSO系數估計值不一定唯一。
LASSO算法的特點是在擬合廣義線性模型的同時進行變量篩選和復雜度調整。例如,假設模型有100個系數,但其中只有10個系數是非零系數,這實際上是說“其他90個變量對預測目標值沒有用處”。LASSO回歸自動進行了“參數選擇”,未被選中的特征變量對整體的權重為0。基于上述特點,本文采用了LASSO算法進行燃油消耗模型構建。
本文應用算法流程如圖1所示。
根據兩艘船舶不同數據進行特征選擇,步驟如下:
(1)用N來表示訓練用例(樣本)的個數,M表示特征數目。
(2)輸入用于確定決策樹上一個節點的決策結果的特征數目m。

圖1 算法應用流程圖
(3)從N個訓練用例(樣本)中以有放回抽樣的方式,取樣N次,形成一個訓練集,并用未抽到的用例(樣本)作預測,評估其誤差。
(4)對于每一個節點,隨機選擇m個特征,決策樹上每個節點的決定都是基于這些特征確定的。根據這m個特征,計算其最佳的生成方式。
(5)每棵樹都會完整成長而不會剪枝,這有可能在建完一棵正常樹狀模型后會被采用。
本文采用sklearn開源模塊庫[8]集成算法模塊ensemble[9]中的隨機森林算法相關的函數進行實現,此過程共需要輸入3個超參數:①n_estimators:它表示建立的樹的數量。一般來說,樹的數量越多,性能越好,預測也越穩定,但這也會減慢計算速度。基于經驗,在實踐中選擇數百棵樹是比較好的選擇,故本次分析過程取值100。②n_jobs:超參數表示引擎允許使用處理器的數量。若值為1,則只能使用一個處理器。 值為-1則表示沒有限制。設置n_jobs可以加快模型計算速度,本次分析過程設置為-1。③oob_score:它是一種隨機森林交叉驗證方法,即是否采用袋外樣本來評估模型的好壞。默認是False。本文設置為True,因為袋外分數反應了一個模型擬合后的泛化能力。
在進入機器學習模型前通常需要對原始數據進行中心化處理和標準化處理。在實船數據中,各變量擁有不同的量綱和量綱單位,因此在后續決策模型訓練使用前,同樣需要對原始數據進行標準化處理,過程如公式(1)所示。

標準化是基于原始數據的均值(μ)和標準差進行數據的標準化。經過處理的數據符合標準正態分布,即均值為0,標準差為1。
在模型構建過程中,首先利用隨機森林根據參數重要性進行排序,選擇重要的參數進行LASSO回歸建模并確定其相關系數。最后針對不同船舶數據重復上述步驟直至獲得LASSO回歸函數。
利用隨機森林進行特征提取,最終選擇出了與燃油消耗相關性排名較高的5個特征,表1為兩船舶特征提取結果。

表1 特征提取結果
根據上述特征選擇結果,我們提取到了如表2所示的測試數據集。

表2 測試數據
測試集數據同樣需要進行數據標準化操作,需要注意的是在針對測試集進行標準化時應該與訓練數據集的轉化標準保持一致,如1號船舶測試集標準化過程應該按照1號船舶訓練集的各變量均值及方差進行轉化,1號船舶測試集速度變量標準化如式(2)所示:

式中:μtrain是訓練集中變量船速S的均值;是訓練集中變量船速S的方差。
經過上述標準化后,為了驗證我們選擇到的特征有效性,我們采用了SVM算法進行模型訓練。以1號船舶數據為例,首先我們進行了如表2所示的五個特征到海里油耗的預測,進一步地,我們從眾多的船舶參數,包括時間戳、對水速度、船艏向、舵角、水深、吃水、航速、風向、風速、緯度、經度、轉速、主機功率、1號電機功率、2號電機功率、3號電機功率、電機進口流量、電機出口流量、滑失率當中隨機抽取5個特征進行訓練(為了保證海里油耗是可以計算的,其中5個特征中必然有航速數據)。重復四次隨機選取特征,最后一次用隨機森林選擇到的五個特征進行訓練,偏差采用中位數絕對誤差,得到如表3所示的結果。如表中所示,第5次實驗取得了最高的準確度。因此,我們能夠看出隨機森林選擇到的特征是有效果的。

表3 特征驗證
為了增強模型的可解釋性,本文嘗試采用了LASSO回歸進行建模。經過LASSO回歸模型訓練,得到的1號船舶模型如公式(3)所示,2號船舶如公式(4)所示。

式中:S表示實際航速,P表示主機功率,R表示主機轉速,D表示吃水,W表示風速,Eff表示海里油耗。
為了驗證上述訓練模型的準確性,評價回歸模型程度優劣程度和所擬合的回歸方程效果,我們一方面采用了R2來衡量模型預測值的準確性。決定系數(Coefficient of Determination)是反映模型擬合優度的重要的統計量,為回歸平方和與總平方和之比[10]。R2數值大小反映了回歸貢獻的相對程度,其取值在0到1之間,且無單位,即在因變量Y的總變異中回歸關系所能解釋的百分比。另一方面,通過計算MSE(Mean Square Error)來衡量線性模型的準確性[11]。該統計參數是預測數據和原始數據對應點誤差的平方和的均值,計算公式如式(5):

式中:yi是真實數據,是擬合的數據,其中n為樣本的個數。
如表4所示為模型測試結果。如圖2和圖3所示為測試集目標參數真實值與模型預測值可視化對比,由于測試集數據較多,本次可視化過程只隨機選取測試集中200個目標參數,及其對應的模型預測值進行展示,以方便觀察。圖2與圖3分別代表了兩船舶模型測試結果,藍色虛線代表模型預測值,綠色實線代表目標參數真實值。觀察圖2和3所示的預測值和真實值對比結果和表4所示的R2和MSE值,可以看出模型能夠較好地通過篩選到的五個特征擬合海里油耗,這驗證了LASSO算法的有效性。同時,從公式(3)和(4)中,我們能夠看出模型具有很好的可解釋性。

表4 模型測試結果

圖2 號船舶預測值與真實值對比

圖3 號船舶預測值與真實值對比
本文基于隨機森林和LASSO算法構建了海里油耗模型,實驗結果表明我們的方法取得了較好的效果,可以通過所篩選到的五個船舶參數較為精確地估計主機海里油耗,從而為節省船舶航行時的海里油耗提供了依據,為最終實現更加科學指導船舶運營實現降低燃油消耗和實現船舶無流量計運行打下了良好基礎。