BP網(wǎng)絡(luò)能學(xué)習(xí)和存儲(chǔ)大量的輸入輸出模式映射關(guān)系,而無需事前揭示描述這種映射關(guān)系的數(shù)學(xué)方程。它的學(xué)習(xí)規(guī)則是使用最速下降法,通過反向傳播來不斷調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值,使網(wǎng)絡(luò)的誤差平方和最小。BP神經(jīng)網(wǎng)絡(luò)模型拓?fù)浣Y(jié)構(gòu)包括輸入層(input)、隱層(hidden layer)和輸出層(output layer)。
就好比一個(gè)有記憶能力的“黑箱”,我們通過已有的輸入輸出數(shù)據(jù)去訓(xùn)練“黑箱”,找到輸入輸出間的相關(guān)關(guān)系并用“黑箱”記錄下來。再用這個(gè)訓(xùn)練好的“黑箱”去模擬未知的輸出值。
本文主要用到MATLAB中的神經(jīng)網(wǎng)絡(luò)工具箱。通過MATLAB編程,調(diào)用神經(jīng)網(wǎng)絡(luò)工具箱,實(shí)現(xiàn)模型的搭建。
本文從權(quán)威國際船舶期刊clarkson周報(bào)上提取了近五年(2011~2015年)每周的交易數(shù)據(jù)(clarkson有記錄的交易),并分交易年度、交易船型做了分類。每一條交易信息都記錄了交易船舶的船型(Vessel Type)、船名(Vessel name)、載重噸(DWT)、建造年份(Blt.)、造船廠(Yard)、成交時(shí)間(Date)、成交價(jià)(US $m.)、買方(Buyers)、船齡(成交年減建造年),并記錄了交易披露當(dāng)期所在周的對應(yīng)船舶新造船價(jià)格(Newbuliding Prices)以及一年期期租費(fèi)率(Timecharter Rates)還有每一條交易信息出處的期刊號方便查證。
對于數(shù)據(jù)的選取,前期做了大量測試,包括各種船型,各個(gè)交易時(shí)間段的測試。不管選取的數(shù)據(jù)是哪些,我們所要構(gòu)建的模型的主體框架是明確的。即一個(gè)y=f(X1.X2…Xn)式的多輸入單輸出函數(shù),只是這個(gè)函數(shù)對應(yīng)關(guān)系比較復(fù)雜,正是我們要找的“黑箱子”,Xn表示第n個(gè)輸入變量,y則表示模擬船價(jià)?,F(xiàn)僅以2014年Bulk船型的交易為例說明。
首先,對于2014年Bulk船型的所有交易信息,我們剔除掉同一條船多次交易的數(shù)據(jù)(因?yàn)檫@些重復(fù)數(shù)據(jù)是沒必要的,選取一條保留即可),剔除掉同一相似船但成交價(jià)差異很大的數(shù)據(jù)(這相當(dāng)于輸入x后輸出了兩個(gè)y),剔除掉跳躍性很大的數(shù)據(jù)(如相似狀況的船成交價(jià)都為1,但這條船成交價(jià)為100),最終保留267組數(shù)據(jù)。隨機(jī)選取其中228組數(shù)據(jù)做訓(xùn)練,剩下39組數(shù)據(jù)做測試。
對于Xn的選取,除了船齡和載重噸這兩個(gè)必有的重要變量外,本文作者嘗試加入了各種變量期望能得到更加精確的結(jié)果,包括BDI指數(shù),經(jīng)濟(jì)狀況指數(shù)等等,但多次試驗(yàn)所得結(jié)果遠(yuǎn)不如只用兩變量理想,故在宏觀經(jīng)濟(jì)環(huán)境和船舶市場都不存在較大波動(dòng)的區(qū)間范圍,可考慮選擇兩變量輸入來模擬船價(jià)。最終,本文作者選取一年之內(nèi)的交易信息作為時(shí)間區(qū)段(因時(shí)間跨度如果太長,將難以反映船價(jià)的波動(dòng))。輸入變量僅選取船齡(成交年減建造年)、載重噸(DWT)這兩個(gè),采用單隱層三層結(jié)構(gòu),隱層節(jié)點(diǎn)數(shù)為10,神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
各層之間的連接函數(shù)為tansig,訓(xùn)練步數(shù)為1000,學(xué)習(xí)率0.1,訓(xùn)練目標(biāo)0.00001。a、b分別為輸入的船齡和載重噸,p為輸出的船價(jià)。
圖1 模型結(jié)構(gòu)
用MATLAB編程構(gòu)建模型,以選取的228組訓(xùn)練數(shù)據(jù)訓(xùn)練模型,訓(xùn)練結(jié)果如圖2~3所示。
圖2
將剩下的39組數(shù)據(jù)作為測試,用訓(xùn)練好的模型模擬船價(jià),再與實(shí)際成交價(jià)對比,比較誤差大小,隨機(jī)選取其中一部分結(jié)果如圖4所示。
第一列為模型模擬價(jià),第二列為實(shí)際成交價(jià),第三列為誤差值。標(biāo)紅的表示該組數(shù)據(jù)模擬值和實(shí)際值誤差較大。可以看到,模型模擬結(jié)果與實(shí)際成交價(jià)誤差基本在20%以內(nèi),少部分?jǐn)?shù)據(jù)誤差甚至在2%以內(nèi),但也存在個(gè)別結(jié)果誤差較大。我們知道船舶的交易存在一定的特殊性,不可避免的有些船舶的交易因買賣雙方談判能力、船舶本身狀況、船舶制造商等而存在較大的偏離。我們能獲取的交易信息有限,再加上很多數(shù)據(jù)是無法量化的,所以訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)的選取并不能完全排除掉這些特殊交易。因此,存在個(gè)別數(shù)據(jù)的較大誤差是難以避免的。對于普遍性的交易,模型可用于評估的初步價(jià)值估算,以及最終評估結(jié)果的驗(yàn)證。如果評估結(jié)果與模型模擬值存在較大差別,那么就需要找出交易的特殊性給予說明。
圖3
當(dāng)船價(jià)在一定時(shí)間內(nèi)存在較大波動(dòng),而可選區(qū)間可用數(shù)據(jù)又太少時(shí),就需要給模型加入變量,使之既能反映宏觀的船價(jià)波動(dòng)趨勢,又能反映微觀的每一艘具體交易船的交易價(jià)格(要與該艘船成交價(jià)有很強(qiáng)相關(guān)性)。在引入了多個(gè)變量進(jìn)行試驗(yàn)后,最終發(fā)現(xiàn)已獲取的數(shù)據(jù)中只有新造船價(jià)格(Newbuliding Prices)這一變量能滿足上述要求。
在這里特別說明下關(guān)于添加變量,由于我們的模型是要模擬每一條具體的交易船的成交價(jià),所以所選的每一個(gè)變量必須與該條交易緊密關(guān)聯(lián),如果添加的變量哪怕只有一個(gè)變量是只反映宏觀經(jīng)濟(jì)因素而沒有反映微觀成交因素的話,模型模擬效果就會(huì)變得粗糙而無法精確的模擬出船價(jià),最終的結(jié)果會(huì)造成很大誤差。因此在變量的選取上,微觀關(guān)聯(lián)性是必須的,宏觀相關(guān)性可有可無。當(dāng)加入的變量越多時(shí),模型失真的可能性也越大,所以并不是變量越多模型越精確,存在一個(gè)最優(yōu)變量數(shù)。
圖4
圖5
最終,本文作者選取了三變量(船齡、載重噸、新造船價(jià)格)來延展模型適用區(qū)間并提高精度?,F(xiàn)仍以Bulk船型為例來說明。
選擇近三年(2013~2015)所有Bulk船型交易數(shù)據(jù),仍按前述Bulk船型的要求篩掉不合理數(shù)據(jù),最終保留343組合理數(shù)據(jù),隨機(jī)選擇其中300組數(shù)據(jù)做訓(xùn)練,剩下43組數(shù)據(jù)做測試。
而關(guān)于第三個(gè)變量新造船價(jià)格(Newbuliding Prices),數(shù)據(jù)來源于每一艘船交易當(dāng)周clarkson周報(bào)上新造船價(jià)格板塊,該板塊將每一種船型按載重噸范圍分檔,每一船型的每檔都會(huì)有一個(gè)當(dāng)周的新造船平均價(jià)格。對于每一艘交易船,我們通過數(shù)據(jù)來源的周報(bào)上找到對應(yīng)船型對應(yīng)載重噸當(dāng)周新造船價(jià)格來賦值第三個(gè)變量。
由于采用了三輸入一輸出結(jié)構(gòu),模型變得更加復(fù)雜。在經(jīng)過了反復(fù)試驗(yàn)后,本文作者測試出相對最優(yōu)結(jié)構(gòu),采用了雙隱層共四層結(jié)構(gòu),第一隱層有10個(gè)節(jié)點(diǎn),第二隱層有30個(gè)節(jié)點(diǎn),訓(xùn)練步數(shù)定為1000,學(xué)習(xí)率0.01,訓(xùn)練目標(biāo)為0.000001,模型結(jié)構(gòu)如圖5所示。
其中,a、b、c分別代表輸入的船齡、載重噸、新造船價(jià)格,p代表模型輸出的船價(jià)。
300組數(shù)據(jù)訓(xùn)練模型部分結(jié)果如圖6~9所示。
用剩下43組數(shù)據(jù)做測試,結(jié)果如圖10。
第一列為實(shí)際成交價(jià),第二列為模型模擬值,第三列為誤差百分比??梢钥吹?,模擬結(jié)果與實(shí)際值相比已經(jīng)沒有大的跳躍點(diǎn)了,且誤差基本控制在20%以內(nèi)。最關(guān)鍵在于,此模型已經(jīng)可以跨時(shí)間區(qū)間使用,不再僅限于短時(shí)間適用。
圖6
圖7
圖8
圖9
由前述試驗(yàn),可以得出船價(jià)模擬的兩個(gè)方法:
1. 當(dāng)短期內(nèi)(宏觀經(jīng)濟(jì)環(huán)境和船價(jià)市場波動(dòng)能忽略不計(jì)的區(qū)間)可獲取的交易數(shù)據(jù)足夠達(dá)到訓(xùn)練所需最少數(shù)據(jù)組數(shù)時(shí),可以采用兩變量(船齡、載重噸)輸入來模擬船價(jià),數(shù)據(jù)的組合訓(xùn)練能使模型模擬值和實(shí)際值誤差基本控制在20%以內(nèi),存在極少數(shù)跳躍點(diǎn)。
圖10
2. 當(dāng)短期內(nèi)不能獲取足夠多的數(shù)據(jù),而船價(jià)市場或者宏觀經(jīng)濟(jì)存在較大波動(dòng)時(shí),可以采用三變量(船齡、載重噸、新造船價(jià)格)輸入來模擬船價(jià),數(shù)據(jù)的組合能使模擬值和實(shí)際值誤差基本控制在20%以內(nèi),而且適用范圍不受時(shí)間和船舶市場波動(dòng)限制。
以上兩種方法結(jié)合使用,可使船模型運(yùn)用于實(shí)際評估中的不同情況。當(dāng)然,船舶市場價(jià)格變動(dòng)就像股票價(jià)格的隨機(jī)波動(dòng)一樣,是不可完全預(yù)測的,模型模擬也因?qū)嶋H情況的差異,誤差是不可避免的。
我們看到,模型的結(jié)果還存在著一定的誤差,未來希望能找到方法使模型更加精確的模擬船價(jià),縮小誤差。數(shù)據(jù)的選取目前也還難以剔除掉部分特殊交易,下一步希望能找到識別特殊交易的方法,使訓(xùn)練數(shù)據(jù)更加適用。
除此之外,BP神經(jīng)網(wǎng)絡(luò)這一工具也可以更多的運(yùn)用到市場法評估中去,特別是需要批量估值的評估實(shí)踐中可以使工作效率大幅提升。只要從市場上獲取到與資產(chǎn)價(jià)值相關(guān)性較強(qiáng)的多組數(shù)據(jù),通過BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型找出相關(guān)關(guān)系,就可以用于模擬資產(chǎn)價(jià)值評估。
《風(fēng)鈴》 韶涵