[摘 要]時(shí)序數(shù)據(jù)相似性挖掘是數(shù)據(jù)挖掘中的重要研究?jī)?nèi)容。本文根據(jù)金融事件序列自身特點(diǎn),將股票中的時(shí)間序列轉(zhuǎn)換為以?xún)r(jià)格變動(dòng)率為變量的時(shí)間序列,對(duì)趨勢(shì)特征提取、聚類(lèi)算法進(jìn)行改進(jìn),并給出新的相似度量標(biāo)準(zhǔn),將時(shí)間序列的預(yù)測(cè)問(wèn)題轉(zhuǎn)化為頻繁和有效特征集的發(fā)現(xiàn)問(wèn)題,進(jìn)而進(jìn)行挖掘預(yù)測(cè)。實(shí)驗(yàn)結(jié)果表明,該方法能有效預(yù)測(cè)時(shí)間序列中的事件。
[關(guān)鍵詞]金融時(shí)間序列 數(shù)據(jù)挖掘 相似性 趨勢(shì)特征 聚類(lèi)
一、引言
隨著數(shù)據(jù)挖掘技術(shù)的發(fā)展,在時(shí)間序列中進(jìn)行數(shù)據(jù)挖掘的研究也逐漸引起了許多學(xué)者的興趣,其中一個(gè)研究熱點(diǎn)就是從時(shí)間序列中發(fā)現(xiàn)相似的序列模式。將時(shí)間序列相似性研究應(yīng)用于股票的預(yù)測(cè),可以從歷史數(shù)據(jù)中尋找與當(dāng)前的股票相似的模式,因?yàn)槿藗兿嘈艢v史會(huì)重現(xiàn),所以可以用相似模式的歷史數(shù)據(jù)來(lái)預(yù)測(cè)當(dāng)前股票在未來(lái)的走勢(shì)。
本文將股票中的時(shí)間序列轉(zhuǎn)換為以?xún)r(jià)格變動(dòng)率為變量的時(shí)間序列進(jìn)行分析,并對(duì)趨勢(shì)特征提取、聚類(lèi)算法進(jìn)行改進(jìn),將時(shí)間序列的預(yù)測(cè)問(wèn)題轉(zhuǎn)化為頻繁和有效特征集的發(fā)現(xiàn)問(wèn)題,進(jìn)而進(jìn)行挖掘預(yù)測(cè),根據(jù)連續(xù)一段時(shí)間的漲跌情況判斷市場(chǎng)趨勢(shì),以求能準(zhǔn)確把握市場(chǎng)趨勢(shì),獲取更大利潤(rùn)。
二、時(shí)間序列數(shù)據(jù)相似性模式挖掘
時(shí)序數(shù)據(jù)相似性模式挖掘的研究已有一些研究成果,對(duì)于時(shí)間序列相似性的研究主要集中在以下3個(gè)方面:(1)時(shí)間序列由時(shí)域轉(zhuǎn)換到頻域后研究。這種方法將時(shí)間序列從時(shí)域通過(guò)傅立葉變換或小波變換映射到頻域,使用一個(gè)固定長(zhǎng)度的滑動(dòng)窗口在序列中移動(dòng),將窗口內(nèi)的數(shù)據(jù)經(jīng)過(guò)變換后,采用各種頻率來(lái)代替原始數(shù)據(jù);(2)在時(shí)域內(nèi)研究。這種方法直接在時(shí)域內(nèi)處理數(shù)據(jù),主要技術(shù)包括數(shù)據(jù)平移、按比例調(diào)節(jié)數(shù)據(jù)幅值、平滑處理和時(shí)間彎曲等;(3)定性計(jì)算相似性。為了消除前面兩種方法的缺點(diǎn),人們提出了定性計(jì)算相似性的方法,這種方法是在時(shí)域內(nèi)進(jìn)行研究,但并不是逐點(diǎn)進(jìn)行相似性計(jì)算,而是只考慮一些有意義的點(diǎn),如平均值、峰值、斜率或趨勢(shì)值等,這樣將大大減少計(jì)算量。
三、趨勢(shì)特征挖掘方法
常見(jiàn)的金融時(shí)間序列數(shù)據(jù)主要包括股票、期貨、外匯、債券等金融產(chǎn)品的市場(chǎng)交易記錄,記載這些交易的時(shí)間序列數(shù)據(jù)反映的是一個(gè)有眾人參與的市場(chǎng)環(huán)境下相應(yīng)交易品種的價(jià)格變動(dòng)情況,市場(chǎng)參與者更關(guān)心自己的投入是賺還是賠以及賺和賠的程度有多大,具體商品價(jià)格是次要的,如果投入的本錢(qián)經(jīng)過(guò)市場(chǎng)上一番交易之后能夠增值,投資者的目的就達(dá)到了。投資者要的不是具體的商品,而是能從市場(chǎng)上得到比投入本錢(qián)更多的回報(bào),至于投資品種、產(chǎn)品單價(jià)是多少并不重要。本文在對(duì)金融時(shí)間序列數(shù)據(jù)的分析中,以?xún)r(jià)格變動(dòng)率(xi-xi-1)/xi-1作為研究切入點(diǎn),正為漲,負(fù)為跌,而漲和跌是性質(zhì)截然相反的市場(chǎng)走向。
由于股票時(shí)間序列含有很多噪聲,兩個(gè)極值點(diǎn)之間往往離的很近,有時(shí)只有2個(gè)時(shí)間單位,因此在進(jìn)行特征提取前必須進(jìn)行平滑處理,去除噪聲,然后尋找轉(zhuǎn)折點(diǎn)來(lái)對(duì)時(shí)間序列分段線(xiàn)性化。平滑處理技術(shù)很多,本文采用采用最簡(jiǎn)單的有限脈沖響應(yīng)法(FIR),具體算法如下:
給定時(shí)間序列,則平滑過(guò)程為式(1):
其中是原始數(shù)據(jù),是清洗后的數(shù)據(jù),是含N維系數(shù)的向量,N根據(jù)具體數(shù)據(jù)來(lái)定,是設(shè)計(jì)FIR的重點(diǎn),由脈寬和精度來(lái)確定,可用Matlab信號(hào)處理工具箱中有關(guān)函數(shù)得到。
1.趨勢(shì)特征抽取算法
時(shí)間模式挖掘是在空間中尋找能表征和預(yù)測(cè)事件的區(qū)域,如果預(yù)測(cè)點(diǎn)之前的時(shí)間模式包含在這些區(qū)域當(dāng)中,則預(yù)測(cè)該事件點(diǎn)的發(fā)生提供了一種決策方法。時(shí)間序列數(shù)據(jù)的特征提取是模式發(fā)現(xiàn)的前提條件。分段線(xiàn)性法是目前應(yīng)用最為廣泛的時(shí)間序列特征提取方法之一,該方法具有較高的濾除噪聲和數(shù)據(jù)抽象能力,可以根據(jù)需要獲得時(shí)間序列數(shù)據(jù)不同精度的抽象表示。由于以近似誤差為目標(biāo)函數(shù)將會(huì)使某些顯著的趨勢(shì)在擬合的過(guò)程中失去其原有的特征,因此本文提出相應(yīng)趨勢(shì)特征抽取算法(TFPA)。該算法從時(shí)間序列數(shù)據(jù)中提取顯著特征,能更好地保留原始時(shí)間序列中的數(shù)據(jù)變化趨勢(shì)。TFPA算法也是用直線(xiàn)段近似表示時(shí)間序列,每一直線(xiàn)段通常代表一種趨勢(shì)特征。如果一個(gè)趨勢(shì)特征是顯著的,那么說(shuō)明該趨勢(shì)斜率很大,時(shí)間序列數(shù)據(jù)值發(fā)生了顯著的變化,呈現(xiàn)出明顯的趨勢(shì)特征;或者該趨勢(shì)持續(xù)時(shí)間長(zhǎng),具有一定的代表意義。本文為時(shí)序數(shù)據(jù)中的顯著趨勢(shì)特征作如下定義:
定義1 設(shè)li為時(shí)間序列數(shù)據(jù)分段線(xiàn)性表示的第i段直線(xiàn)段的斜率, △ti 為該趨勢(shì)線(xiàn)段持續(xù)的時(shí)間,如果|li|大于給定的閾值或者△ti大于給定的閩值,則認(rèn)為該段特征是顯著的。
算法1(TFPA):
Input: T(1:n);;:斜率差異閾值
Output: T(1:n)的趨勢(shì)特征序列Seg_TS
Seg_TS=;
for(i=1;i Create_Seg[T(i:i+1)];/ 生成初始分段/ for(i=l;i if((li+1-li<)(<)(△ti <)) Seg[i+1]=Merge(Seg[i],Seg[i+11);/合并非顯著相鄰分段/ else Seg_TS=Seg_TS+Seg[i]; } return Seg_ TS; 其中T(i:j)為時(shí)間序列T(1:n)的位于時(shí)間ti與tj之間的子序列, 為相關(guān)閾值,可以通過(guò)改變的大小控制TFPA算法對(duì)時(shí)間序列數(shù)據(jù)的近似精度。一段時(shí)間序列數(shù)據(jù)經(jīng)過(guò)處理后會(huì)生成相應(yīng)的特征序列F={fi =( li,ti,s,ti,e )|1≤i≤Mi,Mi為特征數(shù)},其中l(wèi)i為該特征的斜率,ti,s,ti,e分別為該特征的起止時(shí)間,且ti,s=ti+1,e。對(duì)所有的時(shí)間序列數(shù)據(jù)進(jìn)行相同的處理將生成相應(yīng)數(shù)量的特征序列數(shù)據(jù)(不同的時(shí)間序列產(chǎn)生的特征序列可能存在不等的特征數(shù)Mi)。 2.趨勢(shì)特征聚類(lèi) 在生成特征序列的過(guò)程中將會(huì)得到大量的趨勢(shì)特征,這些特征在預(yù)測(cè)過(guò)程中很難有效的處理,需對(duì)提取出的特征分組。本文采用基于劃分的聚類(lèi)方法對(duì)特征聚類(lèi),選取不同的k值進(jìn)行實(shí)驗(yàn),根據(jù)預(yù)測(cè)精度確定合理的聚類(lèi)數(shù)量。聚類(lèi)的一個(gè)重要問(wèn)題是計(jì)算聚類(lèi)對(duì)象之間的相似度。一般歐氏距離對(duì)坐標(biāo)值的變化以及坐標(biāo)的偏移十分敏感,經(jīng)常不能正確度量數(shù)據(jù)對(duì)象之間的相似性。本文采用帶權(quán)值的歐氏距離作為相似度量標(biāo)準(zhǔn),選取的變量為特征的斜率li和持續(xù)時(shí)間△ti(△ti=ti,e-ti,s),每個(gè)變量均可被賦予一個(gè)權(quán)值,以表示其所代表屬性的重要性。 式(2)中,每一特征都除以相比較的兩個(gè)特征的度量值平方和,可以消除比較基準(zhǔn)不同所帶來(lái)的影響。是斜率的權(quán)重,稱(chēng)之為聚類(lèi)系數(shù),(1-)是特征持續(xù)時(shí)間的權(quán)重??梢酝ㄟ^(guò)采用不同的聚類(lèi)系數(shù)值決定二者在聚類(lèi)過(guò)程中的相對(duì)重要程度。選擇了相似度量標(biāo)準(zhǔn)后,可得趨勢(shì)特征的聚類(lèi)算法如算法2。 算法2 Input: 特征值,聚類(lèi)數(shù)量k Output:聚類(lèi)結(jié)果集 (1)從D任意選擇k個(gè)對(duì)象作為初始聚類(lèi)中心 (2)將數(shù)據(jù)對(duì)象賦予類(lèi)當(dāng)且僅當(dāng) (4)如果對(duì)于成立,結(jié)束,否則轉(zhuǎn)(2) 經(jīng)過(guò)聚類(lèi)處理之后,時(shí)間序列數(shù)據(jù)轉(zhuǎn)變?yōu)橛扇舾深?lèi)基本特征構(gòu)成的特征序列。 3.特征模式預(yù)測(cè)發(fā)現(xiàn)方法 對(duì)金融時(shí)間序列的趨勢(shì)特征提取的目的是希望能在時(shí)段Y內(nèi)發(fā)現(xiàn)能夠預(yù)測(cè)出事件的特征模式。假定趨勢(shì)特征集f為按時(shí)間偏序排列的某特征序列的子集,如對(duì)所有特征序列,f在時(shí)段Y內(nèi)頻繁出現(xiàn),而Y之外出現(xiàn)的幾率很小,則可以用該特征子集預(yù)測(cè)事件的發(fā)生。 對(duì)于所有特征序列,如果在目標(biāo)事件發(fā)生前的時(shí)段Y內(nèi),s%的序列都包含特征集f,則f的支持度為s%。如果s%大于給定的閾值,則f是頻繁的。定義了特征集f的支持度后就可以應(yīng)用Apriori算法從經(jīng)過(guò)變換得到的特征序列中發(fā)現(xiàn)頻繁特征集,及其相應(yīng)的支持度。如果在時(shí)間序列數(shù)據(jù)集中,c%的特征集f都出現(xiàn)在Y時(shí)間段內(nèi),則稱(chēng)f的置信度為c%。如果c%大干給定的閾值,則稱(chēng)f是有效的。 若頻繁特征集f在預(yù)測(cè)時(shí)段Y內(nèi)發(fā)生的次數(shù)為x1,在Y時(shí)間段之外發(fā)生的次數(shù)x2,則該特征集的置信度為x1/(x1+ x2)。如果置信度大于c%的某一特征集在目標(biāo)事件發(fā)生之前的Y時(shí)間段內(nèi)出現(xiàn),則認(rèn)為該特征集與目標(biāo)事件是相關(guān)的,可以用來(lái)預(yù)測(cè)事件的發(fā)生。若某頻繁和有效特征在預(yù)測(cè)時(shí)段出現(xiàn),則目標(biāo)事件發(fā)生的概率為該特征集的置信度。 四、應(yīng)用研究 為驗(yàn)證提出方法的有效性,本文以上證A股中牧股份(600195)為例,選取2009年3月2日至2010年2月26日共240個(gè)工作日的時(shí)間序列數(shù)據(jù)進(jìn)行實(shí)驗(yàn)研究,預(yù)測(cè)股價(jià)突變(突然上升、突然下降)事件。 滬深證券交易所于1996年12月16日之后設(shè)立價(jià)格漲跌幅度限制,漲跌幅限制在10%以?xún)?nèi)。據(jù)此本文首先將股票時(shí)間序列轉(zhuǎn)換為(價(jià)格變動(dòng)率×100)的時(shí)間序列,稱(chēng)其為股價(jià)變動(dòng)時(shí)間序列,這樣既能反映投資者感興趣的參數(shù),又能將價(jià)格曲線(xiàn)放在某一區(qū)間內(nèi)。文中將曲線(xiàn)區(qū)間設(shè)置為[-15,15],當(dāng)|股價(jià)變動(dòng)|>15時(shí),都將其用±15代替。中牧股份(600195)股價(jià)時(shí)間序列轉(zhuǎn)換得到的股價(jià)變動(dòng)時(shí)間序列如圖1所示。 本文將時(shí)序中2/3的數(shù)據(jù)用于生成預(yù)測(cè)模式,1/3的數(shù)據(jù)用于預(yù)測(cè)檢驗(yàn)。取聚類(lèi)系數(shù) 為0.8,支持度閾值為30%,置信度閾值為90%。應(yīng)用本文所提出的方法,當(dāng)Y=7天、k=30時(shí),能夠正確預(yù)測(cè)出77%的股價(jià)突變事件;預(yù)測(cè)事件為股價(jià)突變而實(shí)際沒(méi)有突變的比例為4.6%,預(yù)測(cè)精度表示為正確預(yù)測(cè)的百分比。在Y=7天的條件下,對(duì)不同的聚類(lèi)數(shù)量K值進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖2所示。 當(dāng)特征的聚類(lèi)數(shù)量小于20時(shí),隨著聚類(lèi)數(shù)量的增加預(yù)測(cè)精度增長(zhǎng)較快,而當(dāng)聚類(lèi)數(shù)量大于20時(shí),隨著聚類(lèi)數(shù)量的增加預(yù)測(cè)精度增長(zhǎng)緩慢,并趨于平穩(wěn)。在k=30時(shí),對(duì)不同的Y值進(jìn)行實(shí)驗(yàn)得到結(jié)果如圖3所示。 隨著Y的增加,開(kāi)始時(shí)預(yù)測(cè)精度逐漸提高,但當(dāng)Y值增大到一定程度后預(yù)測(cè)精度反而下降。這是由于較小的Y值在預(yù)測(cè)時(shí)段內(nèi)包含的特征較少,不足以產(chǎn)生可靠的預(yù)測(cè),因此隨著Y的增大,預(yù)測(cè)精度逐漸提高。當(dāng)Y很大時(shí),所有可以用于預(yù)測(cè)的趨勢(shì)特征都已經(jīng)包含到預(yù)測(cè)時(shí)段內(nèi)了,而多余的數(shù)據(jù)反而對(duì)預(yù)測(cè)造成了噪聲和污染,從而導(dǎo)致預(yù)測(cè)精度下降。 五、結(jié)論 本文根據(jù)金融時(shí)間序列自身特征,將股價(jià)時(shí)序轉(zhuǎn)換為股價(jià)變動(dòng)時(shí)序進(jìn)行分析,對(duì)趨勢(shì)特征提取、聚類(lèi)算法進(jìn)行改進(jìn),將時(shí)間序列的預(yù)測(cè)問(wèn)題轉(zhuǎn)化為頻繁和有效特征集的發(fā)現(xiàn)問(wèn)題,進(jìn)而進(jìn)行挖掘預(yù)測(cè)。實(shí)驗(yàn)結(jié)果表明,該方法能夠有效地對(duì)股價(jià)時(shí)序數(shù)據(jù)中的股價(jià)突變進(jìn)行有效預(yù)測(cè)。而要得到更精確的預(yù)測(cè)值,則需要對(duì)特征數(shù)量、預(yù)測(cè)時(shí)段的長(zhǎng)度作進(jìn)一步的調(diào)整。在后續(xù)研究中,不僅可以對(duì)方法本身進(jìn)行改進(jìn),同時(shí)在應(yīng)用上可以將其擴(kuò)展到金融事件序列的其他方面,如匯率等。