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