趙會(huì)群,曲 藝
(北方工業(yè)大學(xué) 信息學(xué)院,北京 100144)
為了解決組合投資預(yù)測(cè)問題,我們不僅需要各個(gè)投資項(xiàng)信息數(shù)據(jù),還需要宏觀經(jīng)濟(jì)因素、微觀經(jīng)濟(jì)因素、行業(yè)因素等大量數(shù)據(jù)。然而真實(shí)、大量、多樣的金融數(shù)據(jù)由于保密性、時(shí)間等一些問題的限制不易獲取,因此需要一種可以基于真實(shí)數(shù)據(jù)集建模并保持真實(shí)數(shù)據(jù)集特征的大數(shù)據(jù)生成方法。
真實(shí)的金融數(shù)據(jù)一般以時(shí)間序列的形式表現(xiàn)。現(xiàn)關(guān)于時(shí)間序列數(shù)據(jù)模擬和生成的方法主要有:回歸移動(dòng)平均模型(autogressive integrated moving average,ARIMA)[1]、自回歸條件異方差模型(autoregressive conditional hete-roscedasticity model,ARCH)[2]、支持向量回歸模型(support vector regression,SVR)[3]、長(zhǎng)短期記憶網(wǎng)絡(luò)模型(long short term memory,LSTM)[4]等。由于本文所需模擬生成的數(shù)據(jù)表現(xiàn)出較明顯的季度或月度的周期性變化,所以將采用季節(jié)性差分自回歸移動(dòng)模型(seasonal autogressive integrated moving average,SARIMA)來對(duì)各項(xiàng)時(shí)間序列數(shù)據(jù)進(jìn)行自動(dòng)模擬生成,為原有歷史數(shù)據(jù)集補(bǔ)充部分未來數(shù)據(jù),用于后續(xù)組合投資數(shù)據(jù)生成模型的更新。
為了解決組合投資預(yù)測(cè)的數(shù)據(jù)生成問題,需要先將其轉(zhuǎn)化為影響因素和投資項(xiàng)的組合優(yōu)化問題,通過模型分析各數(shù)據(jù)項(xiàng)之間的關(guān)系,最終生成大規(guī)模數(shù)據(jù)集。近年來,已有學(xué)者使用遺傳算法[5]、粒子群算法[6]、蟻群算法[7]等解決組合優(yōu)化問題的經(jīng)典算法,來實(shí)現(xiàn)測(cè)試數(shù)據(jù)的自動(dòng)生成。此外,由于貝葉斯網(wǎng)絡(luò)模型[8]可清晰揭示節(jié)點(diǎn)變量間的關(guān)系及概率分布,該模型同樣已應(yīng)用于數(shù)據(jù)生成領(lǐng)域。但隨著時(shí)間的變化和金融數(shù)據(jù)的增加,將更新的信息應(yīng)用到投資組合預(yù)測(cè)之中是十分必要的。本文提出一種基于增量式貝葉斯網(wǎng)絡(luò)的投資組合數(shù)據(jù)生成方法,可以實(shí)現(xiàn)基于動(dòng)態(tài)更新的數(shù)據(jù)集,生成具有大數(shù)據(jù)4V(variety, volume, velocity, value)特性的[9]、保持一定準(zhǔn)確度的數(shù)據(jù)集。
迄今為止,已經(jīng)有一些應(yīng)用于大數(shù)據(jù)領(lǐng)域的數(shù)據(jù)生成器和數(shù)據(jù)生成算法的研究。金澈清等[10]在介紹數(shù)據(jù)管理系統(tǒng)評(píng)測(cè)基準(zhǔn)的發(fā)展同時(shí),也詳細(xì)介紹了數(shù)據(jù)驅(qū)動(dòng)的數(shù)據(jù)生成方式和查詢驅(qū)動(dòng)的生成方式在各數(shù)據(jù)庫系統(tǒng)基準(zhǔn)中的實(shí)現(xiàn)。詹劍鋒等[11]詳細(xì)介紹了其研制的BigDataBench,即一種開源的大數(shù)據(jù)系統(tǒng)評(píng)測(cè)基準(zhǔn)。并提供了一種通過真實(shí)數(shù)據(jù)的建模分析,快速生成保持真實(shí)數(shù)據(jù)特征的指定規(guī)模數(shù)據(jù)集的大數(shù)據(jù)生成工具(BDGS)。目前該工具可生成文本、表和圖這3種類型的數(shù)據(jù)。
本文中所用到的各項(xiàng)金融數(shù)據(jù)本質(zhì)上是一種時(shí)間序列數(shù)據(jù)。所以,當(dāng)涉及到對(duì)數(shù)據(jù)集進(jìn)行生成擴(kuò)展時(shí),可以通過訓(xùn)練時(shí)間序列模型來生成數(shù)據(jù)。目前已有時(shí)間序列模型和時(shí)間序列分析方法,通過序列的歷史統(tǒng)計(jì)數(shù)據(jù)揭示現(xiàn)象隨時(shí)間變化的規(guī)律,并按照需要將該規(guī)律延伸到未來。孫亞圣等[12]提出基于注意力機(jī)制的行人軌跡預(yù)測(cè)生成模型(AttenGAN),生成器使用LSTM算法根據(jù)行人過去的軌跡對(duì)未來的可能性進(jìn)行預(yù)測(cè),判別器用來判斷一個(gè)軌跡是否真實(shí),進(jìn)而促進(jìn)生成器生成符合社會(huì)規(guī)范的預(yù)測(cè)軌跡。敖建松等[13]針對(duì)數(shù)據(jù)的時(shí)序性,利用ARIMA模型對(duì)未來時(shí)刻數(shù)據(jù)進(jìn)行預(yù)測(cè)生成,計(jì)算出各個(gè)狀態(tài)數(shù)據(jù)偏離正常狀態(tài)空間的程度,再使用滑動(dòng)窗口對(duì)過去和未來的數(shù)據(jù)進(jìn)行融合計(jì)算,實(shí)現(xiàn)工控系統(tǒng)網(wǎng)絡(luò)的態(tài)勢(shì)感知。Vasantha Kumar S等[14]通過SARIMA模型利用有限的歷史數(shù)據(jù),分析出長(zhǎng)期趨勢(shì)和季節(jié)性模式,并利用該模型對(duì)交通流量數(shù)據(jù)進(jìn)行短期的準(zhǔn)確預(yù)測(cè),且發(fā)現(xiàn)SARIMA模型性能優(yōu)于簡(jiǎn)單ARIMA模型。
用時(shí)間序列模型生成數(shù)據(jù),擴(kuò)展數(shù)據(jù)集,只保證了生成數(shù)據(jù)的時(shí)序性,但本文主要解決如何生成組合投資數(shù)據(jù)的問題,還需要生成的數(shù)據(jù)保持?jǐn)?shù)據(jù)相關(guān)性等真實(shí)特征。本文將組合投資數(shù)據(jù)的生成模型構(gòu)建轉(zhuǎn)化成組合優(yōu)化問題,并根據(jù)模型生成大數(shù)據(jù)集。以下是目前外關(guān)于該類問題的部分研究成果:曾夢(mèng)凡等[7]采用一種解決組合優(yōu)化問題的搜索算法——蟻群算法,應(yīng)用于求解覆蓋表的生成問題。為了挖掘蟻群算法生成覆蓋表的潛力,文章對(duì)參數(shù)配置、演化策略等進(jìn)行調(diào)整,并引入并行計(jì)算來節(jié)省時(shí)間開支。馬驪等[15]先利用支持向量機(jī)對(duì)匯率進(jìn)行短期的預(yù)測(cè),然后提出基于Pareto排序理論的雙目標(biāo)非支配排序人工魚群算法(nondominated sorting artificial fish swarm algorithm,NSAFSA)來求解生成外匯投資組合方案。
上述生成模型,可以生成各項(xiàng)變量的組合方案,但未能清晰體現(xiàn)各變量之間的相關(guān)關(guān)系。而本文通過增量式貝葉斯網(wǎng)絡(luò)模型體現(xiàn)各項(xiàng)變量之間潛在的關(guān)系,并且可以隨著新生成的數(shù)據(jù)集的加入,對(duì)原有的歷史網(wǎng)絡(luò)進(jìn)行更新。以不同時(shí)間段的網(wǎng)絡(luò)中各變量之間的關(guān)系及概率為基礎(chǔ),按照需求對(duì)網(wǎng)絡(luò)進(jìn)行路徑搜索,并生成所需數(shù)據(jù)。目前已有研究將增量式貝葉斯網(wǎng)絡(luò)模型應(yīng)用于海量數(shù)據(jù)流的分析處理[16]和金融數(shù)據(jù)的預(yù)測(cè)等領(lǐng)域,但尚未被應(yīng)用于組合投資數(shù)據(jù)內(nèi)在關(guān)系的挖掘、生成用于組合投資預(yù)測(cè)的大數(shù)據(jù)集方向。
時(shí)間序列數(shù)據(jù)作為數(shù)據(jù)的表現(xiàn)形式之一,真實(shí)地記錄了不同時(shí)間點(diǎn)(或時(shí)間片)的各種重要信息,其中蘊(yùn)含著豐富而有價(jià)值的知識(shí)。本文使用SARIMA對(duì)多列金融時(shí)間序列數(shù)據(jù)進(jìn)行生成。SARIMA模型來源于差分自回歸移動(dòng)平均模型(ARIMA)。ARIMA(p,d,q)模型中,p為自回歸項(xiàng)數(shù),q為移動(dòng)平均項(xiàng)數(shù),d為時(shí)間序列成為平穩(wěn)序列所做的差分次數(shù)。若時(shí)間序列{Yt}是一個(gè)非平穩(wěn)序列,ARIMA模型可表示為
Φ(B)ΔdYt=c+Θ(B)εt
(1)

SARIMA(p,d,q)(P,D,Q)s模型主要用于分析由于周期性(包括周度、月度、季度、年度等)變化或因其它因素引起的具有周期性變化的時(shí)間序列,對(duì)ARIMA模型進(jìn)行基于周期的季節(jié)差分。設(shè)季節(jié)性序列的變化周期為s,季節(jié)差分算子定義為
Δs=1-Bs
(2)
Bs為s步滯后算子。若季節(jié)性時(shí)間序列用{Yt}表示,則一次季節(jié)差分表示為
Δs·yt=(1-Bs)yt=yt-yt-s
(3)
若{Yt}為非平穩(wěn)季節(jié)性時(shí)間序列,則需進(jìn)行D次季節(jié)差分,并建立關(guān)于周期為s的P階自回歸Q階移動(dòng)平均季節(jié)時(shí)間序列模型
(4)
現(xiàn)有的SARIMA模型建立方法中通常先對(duì)數(shù)據(jù)進(jìn)行平穩(wěn)性檢驗(yàn)及處理:觀察序列是否為平穩(wěn)的時(shí)間序列,如果序列是非平穩(wěn)的時(shí)間序列,則需要對(duì)原序列進(jìn)行普通差分和季節(jié)差分,并由此確定參數(shù)d,D;通過觀察時(shí)間序列的自相關(guān)、偏自相關(guān)函數(shù)的截尾或者拖尾特性,確定模型的p,q,P,Q參數(shù)。
但本文中需要對(duì)數(shù)據(jù)集中多列時(shí)間序列數(shù)據(jù)進(jìn)行數(shù)據(jù)自動(dòng)生成。上述步驟大多需要人工觀察確定參數(shù)取值,且對(duì)于不同的時(shí)間序列數(shù)據(jù),模型的參數(shù)也會(huì)不盡相同。但通過文獻(xiàn)閱讀和多次實(shí)驗(yàn)發(fā)現(xiàn),p,q,d,P,Q,D的取值范圍都較為常規(guī),所以本文使用網(wǎng)格搜索法確定模型最優(yōu)參數(shù)組合。之后使用確定的參數(shù)組合,對(duì)模型進(jìn)行檢驗(yàn)和測(cè)試,若實(shí)用測(cè)試集中數(shù)據(jù)得出的預(yù)測(cè)值與實(shí)際值的相對(duì)誤差小于5%,則說明建立的模型準(zhǔn)確度較高,該模型可準(zhǔn)確地模擬生成未來的數(shù)據(jù)。
算法1:SARIMA模型建模及數(shù)據(jù)生成算法
input:歷史數(shù)據(jù)集D中的m列時(shí)間序列數(shù)據(jù),參數(shù)的取值范圍[i,j],需要生成的數(shù)據(jù)數(shù)量n
output:生成的n行m列新數(shù)據(jù)集D’
(1)begin
(2)fori←1…m/*處理數(shù)據(jù)集D中第i列時(shí)間序列數(shù)據(jù)*/
(3) 對(duì)讀取的差分后平穩(wěn)數(shù)據(jù)進(jìn)行歸一化處理
(4)pSet=(1,1,1)(1,1,1) /*為最優(yōu)參數(shù)組合設(shè)置初始值*/
(5)minAic=-231
(6)forp,d,q,P,D,Q←i…j//尋找最優(yōu)參數(shù)
(7) 將(p,d,q)(P,D,Q)帶入SARIMA模型中,計(jì)算當(dāng)前參數(shù)對(duì)應(yīng)的模型aic值nAic
(8)IfnAic (9)minAic=nAic (10)pSet=(p,d,q)(P,D,Q) (11)fork←1…n (12)通過SARIMA(p,d,q)(P,D,Q)s模型進(jìn)行滾動(dòng)預(yù)測(cè)生成第k個(gè)值Pk (13)D’=D’∪Pk (14)End 貝葉斯網(wǎng)絡(luò)是一種基于概率論和圖論的不確定性知識(shí)表示和推理的模型,可以定量且定性地描述隨機(jī)變量之間關(guān)系,可以形象、直觀展示數(shù)據(jù)中所蘊(yùn)涵的知識(shí)信息。但股票、房產(chǎn)、以及經(jīng)濟(jì)、政策等影響因素,均具有很強(qiáng)的時(shí)效性;而且模型在建立時(shí)本身就會(huì)有一定的誤差,再加上數(shù)據(jù)隨著時(shí)間而變化,就會(huì)出現(xiàn)構(gòu)建的歷史模型無法適應(yīng)新數(shù)據(jù)的情況。所以若想生成長(zhǎng)期的組合投資方案數(shù)據(jù),網(wǎng)絡(luò)需要隨著新產(chǎn)生的數(shù)據(jù)進(jìn)行調(diào)整。貝葉斯網(wǎng)絡(luò)更新技術(shù)可以讓原有的歷史模型隨著新數(shù)據(jù)加入發(fā)生變化,使貝葉斯網(wǎng)絡(luò)模型具有更全面的描述能力,以便后續(xù)生成更可靠的數(shù)據(jù)。 目前常用的貝葉斯網(wǎng)絡(luò)更新算法主要有兩種:一種方法是naive方法,這是一種批量式算法,該算法在新數(shù)據(jù)到來時(shí)將新舊數(shù)據(jù)集整合到一起,在一個(gè)更大的數(shù)據(jù)集下舍棄已有結(jié)構(gòu)重新學(xué)習(xí),如圖1所示,但這種方法需要消耗大量的存儲(chǔ)空間和計(jì)算時(shí)間。另一種解決方法MAP方法,是把通過學(xué)習(xí)歷史數(shù)據(jù)訓(xùn)練得到的模型看作歷史數(shù)據(jù)的代表,這樣可以避免重復(fù)多次地處理歷史數(shù)據(jù),如圖2所示。但是這一模型過于依賴歷史模型,可能會(huì)在多次迭代后,不能再根據(jù)新數(shù)據(jù)更新模型。 圖1 naive方法 圖2 MAP方法 本文將采用一種增量式學(xué)習(xí)方法對(duì)貝葉斯網(wǎng)絡(luò)模型進(jìn)行更新。該方法的主要思想是,從歷史數(shù)據(jù)中隨機(jī)抽取一定量的數(shù)據(jù)樣本,與新數(shù)據(jù)集合并之后,訓(xùn)練出貝葉斯網(wǎng)絡(luò)結(jié)構(gòu),再將此貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)與歷史模型做并集處理,以完善貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)。最后進(jìn)行參數(shù)的學(xué)習(xí),對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行更新,如圖3所示。 圖3 增量式方法 使用上述算法1時(shí)間序列生成結(jié)果作為新加入的數(shù)據(jù)集,結(jié)合歷史數(shù)據(jù)及歷史貝葉斯網(wǎng)絡(luò),得到更新的貝葉斯網(wǎng)絡(luò),并以時(shí)間為新貝葉斯網(wǎng)絡(luò)命名保存于對(duì)應(yīng)矩陣中,以便后續(xù)按照時(shí)間調(diào)用查詢。具體實(shí)現(xiàn)算法如下。 算法2:貝葉斯網(wǎng)絡(luò)模型更新算法 input:歷史數(shù)據(jù)集D, 其中的變量集合為V={X1,X2,…,Xn},歷史數(shù)據(jù)集訓(xùn)練的貝葉斯網(wǎng)絡(luò)S(G,θ),其有向無環(huán)圖G(V,E),新數(shù)據(jù)集Dnew,且其變量集合Vnew={X1,X2,…,Xm} output:更新的貝葉斯網(wǎng)絡(luò)S(G’,θ’) (1)Begin (2)ifn!=mthen: (3) 從D中隨機(jī)抽取p條數(shù)據(jù),組成數(shù)據(jù)集D’ (4)Dt=D’∪Dnew (5) 使用K2算法通過Dt訓(xùn)練出貝葉斯網(wǎng)絡(luò)結(jié)構(gòu) (6)Gnew(Vnew,Enew) (7)V’=V∪Vnew (8)E’=E∪Enew (9)G’=(V’,E’) #更新的貝葉斯網(wǎng)絡(luò)結(jié)構(gòu) (10)Endif (11) 原參數(shù)θ變成貝葉斯網(wǎng)絡(luò)中的先驗(yàn)參數(shù) (12) 通過Dt內(nèi)數(shù)據(jù),使用最大似然估計(jì)求得更新的參數(shù)θ’ (13)End 用于組合投資預(yù)測(cè)的大數(shù)據(jù)生成算法主要分成兩步實(shí)現(xiàn)。首先是在分析對(duì)應(yīng)的貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)及其概率分布表,按照需求在貝葉斯網(wǎng)絡(luò)模型上進(jìn)行路徑搜索,生成可用于組合投資方案測(cè)試的路徑數(shù)據(jù)集合,及集合中各路徑的概率;之后,根據(jù)集合中的路徑節(jié)點(diǎn)取值及對(duì)應(yīng)的概率生成所需數(shù)量的大數(shù)據(jù)集。 選取指定時(shí)間段的貝葉斯網(wǎng)絡(luò),此貝葉斯網(wǎng)絡(luò)是對(duì)該段時(shí)間內(nèi)新舊數(shù)據(jù)中各項(xiàng)關(guān)系的精確刻畫。按需求選取起始節(jié)點(diǎn)Xs和終止節(jié)點(diǎn)Xe,按照給定的條件概率閾值Pmin和每條組合數(shù)據(jù)的規(guī)模Len,使用回溯法生成出以Xs為起始節(jié)點(diǎn),Xe為終止節(jié)點(diǎn)的所有路徑長(zhǎng)度大于最低閾值的節(jié)點(diǎn)序列,并計(jì)算每個(gè)序列節(jié)點(diǎn)不同取值的概率,保留概率大于設(shè)定概率閾值的序列變量的取值。最后根據(jù)需求,對(duì)不同貝葉斯網(wǎng)絡(luò)迭代生成數(shù)據(jù)集。 以圖4為例,圖中X1節(jié)點(diǎn)到X4、X5節(jié)點(diǎn)的路徑:X1->X3->X4,X1->X4,X1->X3->X5,X1->X2->X5。以X1到X4路徑為例,假設(shè)概率最低閾值為0.7,由概率表計(jì)算X1->X4路徑上節(jié)點(diǎn)不同取值概率,P(X4=1|X1=1,X3)=P(X4=1|X3=0,X1=1)*P(X3=0|X1=1)+P(X4=1|X3=1,X1=1)*P(X3=1|X1=1)=0.676,同理可求P(X4=0|X1=1,X3)=0.324,P(X4=0|X1=1,X3)=0.028,P(X4=1|X1=1,X3)=0.972,在這條路徑上,X4=1,X1=1時(shí)概率最大且超過所定閾值,保存該路徑節(jié)點(diǎn)取值及相應(yīng)概率。按照此方法,生成網(wǎng)絡(luò)路徑節(jié)點(diǎn)取值及概率的集合,此集合可用于組合投資預(yù)測(cè)的分析研究。 圖4 貝葉斯網(wǎng)絡(luò)例圖 算法3:組合數(shù)據(jù)集生成算法 input:貝葉斯網(wǎng)絡(luò)集,需要預(yù)測(cè)生成的年份y,開始節(jié)點(diǎn)Xs,終止節(jié)點(diǎn)Xe output:貝葉斯結(jié)點(diǎn)不同取值的路徑序列,及其概率的集合 (1)Begin (2)G=BN[y],SS{}=?,ES=?,Xvisit[n]=0/*取時(shí)間標(biāo)記為y的貝葉斯網(wǎng)絡(luò)矩陣,初始化序列集合,其中n為網(wǎng)絡(luò)結(jié)構(gòu)中的節(jié)點(diǎn)數(shù)目*/ (3)Generate_ES(Xs,Xe,Len,Pmin) /*生成Xs…Xe節(jié)點(diǎn)序列,Len是序列長(zhǎng)度的閾值,Pmin是概率的最低閾值*/ (4){ (5)ES∪Xs (7) { (8)SS∪ES (9)ES=ES-Xlast/*回溯到上一個(gè)訪問節(jié)點(diǎn)*/ (10) return (11) } (12)Xvisit[Xs]=1 //標(biāo)記Xs已被訪問過 (13)if(Xs存在鄰接點(diǎn)) (14) { (15)for(k←1…m) //m為Xs的鄰接點(diǎn)數(shù) (16)if(Xvisit[Xk] == 0) //Xk未被訪問過 (17) Generate_ES(Xk,Xe,Len,Pmin) (18)ES=ES-Xlast//回溯 (19) } (20)else (21)ES=ES-Xlast//回溯 (22) } (23)generate_probablity_ES() (24){ (25) generate_ES(Xs,Xe) (26)if(SS!= null) (27) { (28)for(i←1…n) /*計(jì)算每個(gè)序列發(fā)生的聯(lián)合概率,保留概率大于最低閾值的序列*/ (29) P(Si) =P(Xi|X1…Xi-1)P(Xi-1|X1…Xi-2)…P(X1) (30) if(P(Si)>Pmin) (31) { (32)OutS=Si (33) } (34) } (35)else (36)Xs,Xe條件獨(dú)立 (37) } (38)End 可根據(jù)已有網(wǎng)絡(luò)路徑和路徑節(jié)點(diǎn)取值概率數(shù)據(jù)集,通過權(quán)重隨機(jī)生成方法,生成所需數(shù)量的大數(shù)據(jù)集。 在配置為Intel Xeon 3.00 GHz,NVIDIA Tesla K40c GPU,64 G內(nèi)存,Windows10操作系統(tǒng),Python 3.6的實(shí)驗(yàn)平臺(tái)環(huán)境下編程實(shí)現(xiàn)本文算法。 投資項(xiàng)2008年12月到2019年10月歷史數(shù)據(jù)來源如下:選取在十大行業(yè)中具有較大影響力的10支股票,分別為中國(guó)石油、寶鋼股份、中國(guó)建筑、中國(guó)聯(lián)通、中國(guó)中車、長(zhǎng)江電力、格力電器、恒瑞醫(yī)藥、貴州茅臺(tái)和中國(guó)平安,在Tushare數(shù)據(jù)庫中,獲取以上10支股票的收益率,以及滬深300指數(shù)的收益率數(shù)據(jù);房?jī)r(jià)數(shù)據(jù)來源于安居客網(wǎng)站北京市石景山區(qū)房?jī)r(jià)月平均數(shù)據(jù)。 另外,宏觀經(jīng)濟(jì)因素2008年12月到2019年10月數(shù)據(jù)來源如下:央行存款利率、存款準(zhǔn)備金率、貸款利率均下載自中國(guó)人民銀行官網(wǎng);貨幣和準(zhǔn)貨幣供應(yīng)量M2、商品消費(fèi)總額、證券投資者信心指數(shù)來自東方財(cái)富網(wǎng)數(shù)據(jù)中心;商品住宅銷售額、房地產(chǎn)投資額來自于國(guó)家統(tǒng)計(jì)局網(wǎng)站公布的月度數(shù)據(jù)。其中2008年12月到2018年12月的所有數(shù)據(jù)為訓(xùn)練數(shù)據(jù),2019年1月到10月數(shù)據(jù)作為測(cè)試數(shù)據(jù)。 首先,由于數(shù)據(jù)時(shí)間頻率不一致,我們按照月份做平均值重采樣處理。另外,由于構(gòu)建貝葉斯網(wǎng)絡(luò)的需要,對(duì)數(shù)據(jù)進(jìn)行離散化處理。先對(duì)數(shù)據(jù)做一階差分,對(duì)于時(shí)間序列數(shù)據(jù){Xt},p階差分運(yùn)算公式為 ΔPXt=ΔP-1Xt-ΔP-1Xt-1 (5) 一階差分后即獲得所有數(shù)據(jù)的變化值,然后對(duì)求得的變化值做如式(6)的離散映射處理,用于貝葉斯網(wǎng)絡(luò)的訓(xùn)練。式(6)的意義為,當(dāng)某變量數(shù)據(jù)值呈上升趨勢(shì)時(shí)取值為1,下跌趨勢(shì)時(shí)為0,平穩(wěn)趨勢(shì)時(shí)為2。離散化處理完后的部分?jǐn)?shù)據(jù)見表1 (6) 表1 離散后的部分?jǐn)?shù)據(jù) 利用處理好的歷史數(shù)據(jù)訓(xùn)練模型,得到貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)結(jié)果如圖5所示,淺灰色的節(jié)點(diǎn)表示宏觀經(jīng)濟(jì)因素,白色節(jié)點(diǎn)為股票和房地產(chǎn)等投資項(xiàng)。表2為網(wǎng)絡(luò)中節(jié)點(diǎn)變量對(duì)照。 圖5 歷史數(shù)據(jù)生成的貝葉斯網(wǎng)絡(luò) 表2 貝葉斯網(wǎng)絡(luò)變量聲明 央行存款、貸款利率、存款準(zhǔn)備金率數(shù)據(jù)值較穩(wěn)定,采用權(quán)重隨機(jī)生成方法,此方法較于隨機(jī)生成更符合現(xiàn)實(shí)情況。本實(shí)驗(yàn)中,生成3年數(shù)據(jù)。實(shí)驗(yàn)結(jié)果如圖6所示。 圖6 存款利率、貸款利率、存款準(zhǔn)備金率數(shù)據(jù)生成結(jié)果 對(duì)其余數(shù)據(jù)使用SARIMA算法生成新數(shù)據(jù),以便后續(xù)貝葉斯網(wǎng)絡(luò)的更新。由于生成數(shù)據(jù)種類較多,此處以第一列數(shù)據(jù)貨幣和準(zhǔn)貨幣供應(yīng)量M2變化量為例,展示使用SARIMA時(shí)間序列算法,通過學(xué)習(xí)歷史數(shù)據(jù)對(duì)未來3年新數(shù)據(jù)進(jìn)行生成的過程。由于處理過的數(shù)據(jù)已較為平穩(wěn)但數(shù)值較大,實(shí)驗(yàn)中使用min-max標(biāo)準(zhǔn)化處理數(shù)據(jù)。其中2009年1月-2016年12月的數(shù)據(jù)用于模型標(biāo)定,2017年1月-2018年12月數(shù)據(jù)用于模型預(yù)測(cè)評(píng)估。 數(shù)據(jù)處理完后對(duì)SARIMA(p,d,q)(P,D,Q)s模型參數(shù)進(jìn)行確定。由于進(jìn)行1階差分已使數(shù)據(jù)平穩(wěn),d=D=1,s為時(shí)間序列的周期,本實(shí)驗(yàn)中使用的是月度數(shù)據(jù),s取12。運(yùn)用算法1確定其余參數(shù),并將確定的參數(shù)組合帶入模型中,對(duì)兩年數(shù)據(jù)進(jìn)行預(yù)測(cè)。如圖7所示,灰色實(shí)線表示真實(shí)值,黑色點(diǎn)線為預(yù)測(cè)值。 圖7 2年數(shù)據(jù)預(yù)測(cè)結(jié)果 從圖中可看出預(yù)測(cè)結(jié)果與真實(shí)值較為接近,且基本擬合真實(shí)值的變化趨勢(shì)。計(jì)算出預(yù)測(cè)的MSE(均方誤差)為0.02,驗(yàn)證該模型的預(yù)測(cè)精確度較高。模型建立且經(jīng)過評(píng)估后,生成未來3年的數(shù)據(jù)。最后將生成的數(shù)據(jù)從歸一化的形式還原,結(jié)果見表3。 表3 生成3年數(shù)據(jù)部分結(jié)果 按照以上方法,生成其余各項(xiàng)的3年數(shù)據(jù),按照年份分成3個(gè)數(shù)據(jù)集,且分別加入歷史數(shù)據(jù)集中未使用的股票數(shù)據(jù),模擬新數(shù)據(jù)集中出現(xiàn)的新變量。 按照算法2從歷史數(shù)據(jù)集中隨機(jī)抽取部分?jǐn)?shù)據(jù),與上一節(jié)新生成的2019年數(shù)據(jù)集合并,并用此合并的數(shù)據(jù)集訓(xùn)練出一個(gè)新的貝葉斯網(wǎng)絡(luò)。如圖8所示。 圖8 合并數(shù)據(jù)集生成的貝葉斯網(wǎng)絡(luò) 與圖5對(duì)比可看出,新數(shù)據(jù)集訓(xùn)練的網(wǎng)絡(luò)中,有編號(hào)16的深灰色新節(jié)點(diǎn),該節(jié)點(diǎn)代表貴州茅臺(tái),且增加了以下邊:(1, 12),(7, 9), (2, 9), (2, 7), (1, 3), (3, 4), (1, 6), (9, 10), (13, 16), (15, 16), (3, 5), (13, 15), (5, 7), (6, 9), (11, 16), (2, 6), (6, 7), (3, 6), (5, 11)。合并歷史數(shù)據(jù)、新數(shù)據(jù)集訓(xùn)練出的貝葉斯網(wǎng)絡(luò),實(shí)現(xiàn)貝葉斯網(wǎng)絡(luò)更新,生成可以對(duì)2019年各節(jié)點(diǎn)關(guān)系更準(zhǔn)確描述的貝葉斯網(wǎng)絡(luò),結(jié)果如圖9所示。并對(duì)該網(wǎng)絡(luò)進(jìn)行參數(shù)學(xué)習(xí),獲得各節(jié)點(diǎn)的概率分布表。 圖9 更新后的2019年數(shù)據(jù)貝葉斯網(wǎng)絡(luò)模型 按照以上方法,繼續(xù)生成對(duì)應(yīng)2020年數(shù)據(jù)的貝葉斯網(wǎng)絡(luò),其中的新節(jié)點(diǎn)17,18分別代表恒瑞醫(yī)藥,格力電器的收益率;以及2021年數(shù)據(jù)的貝葉斯網(wǎng)絡(luò),圖中新加入的節(jié)點(diǎn)19,20分別代表長(zhǎng)江電力,中國(guó)中車股票的收益率。最后結(jié)果如圖10所示。 圖10 2020年、2021年數(shù)據(jù)的貝葉斯網(wǎng)絡(luò)模型 以圖9:2019年數(shù)據(jù)的貝葉斯網(wǎng)絡(luò)模型為例,根據(jù)該模型生成可用于2019年的組合投資測(cè)試數(shù)據(jù)集。將聯(lián)合概率閾值設(shè)置為0.6,實(shí)驗(yàn)起始節(jié)點(diǎn)設(shè)置為9,終止節(jié)點(diǎn)為16,生成投資項(xiàng)的組合,結(jié)合算法3生成的節(jié)點(diǎn)序列和節(jié)點(diǎn)取值數(shù)據(jù)見表4。 可根據(jù)上述方法生成網(wǎng)絡(luò)中所有節(jié)點(diǎn)路徑序列集合,及路徑中節(jié)點(diǎn)不同取值對(duì)應(yīng)的概率,確定節(jié)點(diǎn)之間取值變化趨勢(shì)的關(guān)系,用于指導(dǎo)生成可用于組合投資預(yù)測(cè)的大數(shù)據(jù)集。本實(shí)驗(yàn)中生成以天為時(shí)間單位的365行,16列的2019年的離散數(shù)據(jù)集,部分?jǐn)?shù)據(jù)見表5;生成的離散數(shù)據(jù)集可確定數(shù)據(jù)變化的趨勢(shì),數(shù)據(jù)集中每列數(shù)據(jù)的均值和方差可用來確定生成數(shù)據(jù)值的范圍,可由此進(jìn)一步生成連續(xù)值數(shù)據(jù)。 表4 部分路徑節(jié)點(diǎn)取值及概率 表5 生成的離散數(shù)據(jù)集 將生成的2019年前10個(gè)月每月所有的離散數(shù)據(jù),與測(cè)試集中2019年的10個(gè)月真實(shí)數(shù)據(jù)分別進(jìn)行比較,使用余弦相似度來衡量生成數(shù)據(jù)與真實(shí)數(shù)據(jù)的接近程度,余弦值越接近1,表示兩個(gè)向量相似度越高。測(cè)試集相似度值如圖11所示,從圖中可看出,生成數(shù)據(jù)集與樣本數(shù)據(jù)集相似度均超過70%,基本保留真實(shí)數(shù)據(jù)的事件分布特征。 圖11 2019年生成數(shù)據(jù)相似度 針對(duì)當(dāng)下組合投資預(yù)測(cè)對(duì)數(shù)據(jù)需求問題,本文提出一個(gè)基于增量式貝葉斯網(wǎng)絡(luò)模型的大數(shù)據(jù)生成方法。本文涉及時(shí)間序列生成算法,可自動(dòng)批量地對(duì)多列時(shí)間序列數(shù)據(jù)進(jìn)行較準(zhǔn)確的生成;構(gòu)建增量式貝葉斯網(wǎng)絡(luò),使得貝葉斯網(wǎng)絡(luò)可以隨著新數(shù)據(jù)的產(chǎn)生動(dòng)態(tài)更新,便于后續(xù)生成長(zhǎng)期準(zhǔn)確數(shù)據(jù);對(duì)貝葉斯網(wǎng)絡(luò)進(jìn)行路徑搜索生成各節(jié)點(diǎn)的路徑集合,在集合中各個(gè)路徑節(jié)點(diǎn)取值及其對(duì)應(yīng)的概率基礎(chǔ)上,生成大數(shù)據(jù)集。結(jié)果表明,大數(shù)據(jù)生成系統(tǒng)可以生成保持時(shí)序性與相關(guān)性特征的數(shù)據(jù),彌補(bǔ)了實(shí)際數(shù)據(jù)的不足,生成數(shù)據(jù)可滿足組合投資預(yù)測(cè)研究所需。然而本文在更新貝葉斯網(wǎng)絡(luò)選取歷史數(shù)據(jù)的方法較為簡(jiǎn)單,只是選取歷史數(shù)據(jù)最后幾項(xiàng)數(shù)據(jù);另外,由生成的離散值轉(zhuǎn)換為連續(xù)值數(shù)據(jù)的方法也有待進(jìn)一步研究。2.2 貝葉斯網(wǎng)絡(luò)更新算法



2.3 數(shù)據(jù)生成算法


3 實(shí)驗(yàn)分析
3.1 實(shí)驗(yàn)環(huán)境搭建
3.2 實(shí)驗(yàn)數(shù)據(jù)來源和處理


3.3 歷史數(shù)據(jù)模型構(gòu)建


3.4 新時(shí)間序列數(shù)據(jù)集的生成



3.5 貝葉斯網(wǎng)絡(luò)的更新



3.6 組合數(shù)據(jù)及大數(shù)據(jù)集生成



4 結(jié)束語