本發(fā)明屬于證券市場的智能檢測算法,特別涉及一種基于非負矩陣分解的股票市場中的異常檢測方法。
背景技術:
異常檢測旨在檢測出不符合期望行為的數據,因而適合應用于故障診斷、疾病檢測、入侵和欺詐檢測、金融市場波動檢測等多個領域。在對股票市場波動相關理論和模型的研究中,主要集中于異常波動的分析,具有時間序列的股票市場數據中的異常波動通常會導致模型參數估計偏差、較低的波動預測準確性以及得出一些無效的結論等。因此,對股票市場的時間序列數據中的異常值檢測具有重要意義。
通常,根據機器學習、模式識別的理論和方法可以把檢測方法歸為六類:基于類別的檢測,最鄰近檢測法,基于聚類的檢測,統(tǒng)計檢測、基于信息理論的檢測、基于光譜理論的檢測。近年來也發(fā)展了利用信號處理的方法來進行異常檢測。特別是在高頻或者超高頻金融數據的建模方面,取得了一些研究成果,比如在garch類模型基礎上發(fā)展的弱garch模型和異質archcharch模型等,但是還沒有一個被普遍認可的模型框架。andersen和bollerslev于1998年提出了“己實現(xiàn)”波動的測量方法,通過“己實現(xiàn)”波動理論,把高頻數據的金融波動轉換成一個可觀測的時間序列,如此就可以采用常規(guī)的標準時間序列分析方法對高頻數據進行建模研究。在多變量的情況下,“己實現(xiàn)”波動理論還可以克服多元garch模型和多元sv模型參數估計中的“維數災難”問題。
bilenc和huzurbazar,s.grane提出了一種基于小波的異常值檢測方法,但該方法檢測到的異常值的平均錯誤率很高。franses,doornik,ooms等提出了一種通過多次循環(huán)建立garch模型的方法檢測異常值。zhang,king進一步發(fā)展了一種基于曲率的方法來檢測小擾動在回歸分析和garch模型中的影響,也被用來檢測異常值。grane和veiga以時間序列的garch模型殘差為基礎,提出了檢測并定位異常的方法,并對道瓊斯指數的歷史數據做了實證分析,能夠檢測出歷史上股市因發(fā)生重大事件而表現(xiàn)出的較大波動。股票市場本身也是一個復雜系統(tǒng),因此復雜系統(tǒng)理論亦可用以金融數據的檢測。最早由ray在2004年提出的d-markov模型就是基于復雜系統(tǒng)隱含模式的時間序列數據快速檢測方法。之后,chin,ray等進一步在異常檢測領域將該模型與統(tǒng)計方法和神經網絡方法進行對比,發(fā)現(xiàn)d-markov模型更優(yōu)于其他兩種方法。
技術實現(xiàn)要素:
為解決上述現(xiàn)有技術存在的問題,本發(fā)明的目的在于提供一種基于非負矩陣分解的股票市場中的異常檢測方法,本發(fā)明在考慮直接用小波分析進行異常檢測的局限性的基礎上,引入了一種非負矩陣分解(nmf,nonnegativematrixfactorization)的數據處理方式。非負矩陣分解自1999年lee和seung在《nature》上提出后,在圖像處理、文本信息處理、生物信息等領域有著廣泛的應用。nmf的最大優(yōu)點是能夠在一定程度上識別數據的局部特征,定量地刻畫局部與整體之間潛在的、可加的非線性組合關系。我們利用nmf對高維股指數據進行分解,得到最具股指特征的權系數向量,并對該向量構成的信號采用了小波分析的方法,得到權系數向量的多層分解波形,通過加權融合的方式,計算出超出波動閾值的異常點。
為達到上述目的,本發(fā)明的技術方案為:
一種基于非負矩陣分解的股票市場中的異常檢測方法,包括如下步驟:
步驟一、建立股指數據矩陣;
以股票每日收盤時的指數特征屬性,構成一個記錄項為矩陣行,時間維度構成矩陣的列,以股票每天收盤時候指數作為一個記錄項,構成了股指數據矩陣,所述股指數據矩陣為非負矩陣,滿足:x=[xi,j]n×m;
步驟二、利用nmf對股指數據矩陣進行分解,得到代表股指特征基的基矩陣u和代表低維的權重系數的系數矩陣v,其中,u=[ui,j]n×d和v=[vi,j]d×m,使得它們滿足
x≈uv(1)
其中,原矩陣x的任意一列矢量可以解釋為對左矩陣u中所列矢量-基矢量的加權組合,而權重系數為右矩陣v中對應的矢量元素;如果矩陣u,v分別重寫為:
u=[ui,j]n×d=[u1,u2,...ud](2)
v=[vi,j]d×m=[v1,v2,...vm](3)
進行非負矩陣分解后,矢量xj被表示為
xj≈uv,其中vj=[v1j,v2j,...vdj]t(4)
xj≈v1ju1+v2ju2+...+vdjud(5)
矢量xj可以通過矩陣u的列矢量u1,u2,…ud的線性組合來近似表示,而x與uv之間的誤差定義為:
其中
步驟三、尋找最優(yōu)u,v的過程就是最小化d(x||uv)值的過程,因此需要滿足既能快速把x分解為u和v兩個非負矩陣,又要確保d(x||uv)的值最小;這里采用一種求解非負矩陣的迭代計算機方法,通過重復迭代規(guī)則可以保證u,v收斂于局部最優(yōu),對股票時間序列xn×m進行非負矩陣分解得到基矩陣un×r和系數矩陣vr×m,其計算表達為:
其中x,u,v分別表示對應矩陣的元素,u,v可以選取任意的非負矩陣作為初始值,通過多次迭代最終收斂到穩(wěn)定的v,u,將基矩陣u看作是構成股票時間序列數據的基本單元,任何一支股票指數都是由這些基本單元構成,這里定義為“股指特征基”;系數矩陣是這些特征基組合成股票時序數據的權值,vi是矩陣v的列向量,是對應股指向量xi的權系數向量,也就是說單個股指的時間序列數據是由股指特征基u與vi的乘積;由于vi的維度小于n,這一步實現(xiàn)了維度約減;
步驟四、對權系數向量vi實施小波變換,得到多層級的不同粒度的波形;對波形的波動幅度進行檢測,從波形幅度中判斷異常情況;
步驟五、在確定了序列異常位置后,進行實證分析:從對權系數向量vi進行小波變換后的序列中找出檢測到的異常波動相對于序列的位置,然后在原始矩陣數據中對應的位置標記出異常事件的時間點,并考察該時間點股市指數的變換情況,從而判斷檢測的準確性,具體做法如下:
(1)從進行小波變換后的序列中,標記出異常點的位置;
(2)對序列進行小波變換的逆變換到股指序列向量vi',還原出股指特征向量,即股票指數時間序列向量;
(3)從帶標記的股票指數時間序列向量中,定位出出現(xiàn)異常波動的時間點。
進一步的,所述步驟一的股指數據矩陣,以股票每日收盤時的指數特征屬性,有多空指數bbi、意愿指標br、平均趨向指數dmi.adx、平均方向指數評估dmi.adxr、多方指數dmi.+di、空方指數dmi.-di)、隨機指數kdj、指數平滑移動平均線macd、威廉變異離散量wvad、價格推動量power、相對強弱指數rsi、人氣指標ar、乖離率bias、順勢指標cci、指數平均數expma、動量指標mtm、能量潮obv、心理線psy、停損點轉向sar、容量比率vr、均價線avl、收盤價的n日簡單移動平均boll.boll、布林線上緣boll.ub、布林線下緣boll.lb、cr指標cr、換手率線hsl、移動平均線ma、加權移動平均線、成本移動平均線ma5、成交量柱體及其均線mv、震蕩量指標osc、變動率指標roc、寶塔線tower、威廉指數wms、容量比率vr、均價線avl、成交量柱體及其均線mv、分水嶺fsl指標、市場成本指標mcst、平行線差指標dma、人氣意愿指標brar、開盤價,共計42個屬性值,構成一個記錄項為矩陣行,時間維度構成矩陣的列,以股票每天收盤時候指數作為一個記錄項,構成了股指數據矩陣。
進一步的,所述步驟四中,異常情況判斷的具體方法為:設定一個正常波動幅度區(qū)間,凡是在這區(qū)間范圍內變化的波形,都認為是正常波動,而超出該范圍的則為異常波動。從而對于小波變換后得到各個層級的波形都會計算出異常波動點,然后采用加權方式對異常波型進行判斷,如果加權后該波形的幅值仍然在設定的區(qū)間范圍外,那么最終認定為異常波動,考慮小波分解各層次的粒度不同,采用加權融合的權重計算方式進行疊加,并最終計算出該點的波動幅值,加權融合的權重計算方式如下:
設x為實際值,v為觀測時的隨機誤差,假定x估計值
因為
因此代價函數可寫為:
為使得j最小,對其求導解出最優(yōu)權值:
因此最優(yōu)估計量為:
根據多元函數求極值理論,可求出均方誤差最小時所對應的加權因子為
這里加權因子
以上方法是計算一個權重系數矢量構成的波形,由于進行小波分解的數據來源于對股指數據進行非負矩陣分解后得到的權重系數v,因此非負矩陣分解過程選擇的尺度r,決定了最終產生權重系數波形的個數,選擇了r=1,5,10進行了分解,并對每個權重系數波形進行單獨的小波分解,并檢測出相應異常波動位置,對于具有多個權重系數波形,如r=5,10,這里直接采用加權平均的方式計算波動幅度值,因此,在計算波動幅度值的過程中,有兩次加權求值;
1)、對于nmf產生的權重系數矢量,進行5層小波分解后,計算出每層的異常點,然后進行加權融合,得到該權重系數矢量對應波形的異常點;
2)、當nnf的分解尺度r≠1時,需要對分解得到每個矢量波形經小波處理后的異常點的幅度值進行加權平均;
最后,經過兩次加權得到幅度值,仍在設定的波動區(qū)間外,我們認定為異常。
進一步的,所述步驟四中,對權重系數矩陣v實施小波變換,得到多層級的不同粒度的波形;從波形幅度中判斷異常情況的具體操作為:
(1)、把權重系數矩陣v的每一列vi當作一個序列;由于v是進行非負矩陣分解后的權系數矩陣,對原時間序列數據矩陣的壓縮,相當于減少的序列的屬性,因此只需要分別對序列向量vi(i=1,..r)進行小波變換,然后綜合分析1到r個向量的異常情況;
(2)、選擇小波函數,利用不同小波基函數來對v進行多尺度分解,通過選擇不同的小波基來進一步分析異常檢測的能力;
(3)、生成小波變換序列,找出序列的異常點,采用包含序列5%的最大值的點為異常點。
進一步的,所述步驟五中,異常點的判斷方式如下:
1)對序列向量vi進行小波變換后的序列,分類得到低頻系數a1和高頻系數d1;
2)找出所有大于閾值的極大值點dmax∈|d1|,并用數組p記錄dmax在d1的位置p;
3)將dmax置為0,重構d',d'=(d1,...di-1,0,di+1,dn/2)
4)將a1和d’做逆小波變換,得到新的序列;
5)對新產生的序列重復步驟1到4,直到不存在大于閾值的極大值點;
6)根據數組p中的每個p找到序列向量vi中的異常點;在去除vi中位于2p和2p-1兩點后,計算樣本均值
相對于現(xiàn)有技術,本發(fā)明的有益效果為:
股票市場的異常波動會影響整個金融市場正常運行,從而引發(fā)整個經濟運行過程中的各種不穩(wěn)定因素的釋放。因此,通過對股票市場的數據樣本進行分析,對其中的異常波動進行檢測,能快速發(fā)現(xiàn)市場中存在的潛在風險。本文根據股指數據的時間序列特性,利用非負矩陣分解的方法,獲取最具股指數據特征的權系數向量集,并對該集合進一步進行小波分解,從分解的各個層次中計算出異常的波動點,然后通過加權融合的方式最終定位出異常波動。實證分析發(fā)現(xiàn),本文的方法與實際情況吻合,且由于經過非負矩陣分解,實現(xiàn)了數據規(guī)約,檢測時間較短,同時能確保較高的精準度。
附圖說明
圖1為基于nmf的股指波動異常檢測流程圖;
圖2為r=1時,隨機系數矩陣來初始化基矩陣u,稀疏度為51%條件數為185.2的波形圖;
圖3為r=5隨機系數矩陣來初始化基矩陣u,稀疏度為51%,條件數為185.2的波形圖;
圖4為r=10隨機系數矩陣來初始化基矩陣u,稀疏度為51%,條件數為185.2的波形圖。
圖5為對圖1表示的權中系數采用haar小波進行5級分解后的波形圖。
圖6為加權融合方法中的加權系數分布圖。
具體實施方式
下面結合附圖和具體實施方式對本發(fā)明技術方案做進一步詳細描述:
如圖1所示,一種基于非負矩陣分解的股票市場中的異常檢測方法,包括如下步驟:
矩陣分解是實現(xiàn)大規(guī)模數據處理與分析的一種有效工具,是一種特征提取方法,主要用于降維處理、數據壓縮和局部特征提取等方面。其基本思想簡單描述為:對于任意給定的一個非負矩陣x=[xi,j]n×m,nmf能夠尋找到非負矩陣u=[ui,j]n×d和v=[vi,j]d×m,使得它們滿足
x≈uv(1)
原矩陣x的任意一列矢量可以解釋為對左矩陣u中所列矢量(稱為基矢量)的加權組合,而權重系數為右矩陣v中對應的矢量元素。如果矩陣u,v分別重寫為:
u=[ui,j]n×d=[u1,u2,...ud](2)
v=[vi,j]d×m=[v1,v2,...vm](3)
進行非負矩陣分解后,矢量xj被表示為
xj≈uv,其中vj=[v1j,v2j,...vdj]t(4)
xj≈v1ju1+v2ju2+...+vdjud(5)
矢量xj可以通過矩陣u的列矢量u1,u2,…ud的線性組合來近似表示,而x與uv之間的誤差定義為
其中
尋找最優(yōu)u,v的過程就是最小化d(x||uv)值的過程,因此我們需要找到一種方法既能快速把x分解為u和v兩個非負矩陣,又要確保d(x||uv)的值最小。這里我們采用一種求解非負矩陣的迭代計算機方法。通過重復迭代規(guī)則可以保證u,v收斂于局部最優(yōu)。迭代算法公式如下:
其中u,v可以選取任意的非負矩陣作為初始值,通過多次迭代最終收斂到穩(wěn)定的v,u。
3.基于非負矩陣分解的股票市場異常波動檢測
在對股票指數的異常檢測中,我們需要建立股指數據矩陣,該矩陣以股票每日收盤時的指數特征屬性,包含br、ar、kdj等共計42個屬性值,構成一個記錄項(矩陣行),時間維度構成矩陣的列(即以股票每天收盤時候指數作為一個記錄項)。行列數據就構成了股指數據矩陣。針對股票市場數據的異常檢測,我們利用nmf對股指數據矩陣進行分解,同樣可以得到代表股指特征基(u)和低維的權重系數(v),然后對權重系數矩陣(v)實施小波變換,得到多層級的不同粒度的波形,從波形幅度中判斷異常情況。其具體流程如下:
1對股票時間序列xn×m進行非負矩陣分解得到基矩陣un×r(股指特
征的基)和系數矩陣vr×m(權重系數)。其計算表達為:
其中x,u,v分別表示對應矩陣的元素?;仃噓可以看作是構成股票時間序列數據的基本單元,任何一支股票指數都是由這些基本單元構成。這里可以稱為“股指特征基”。系數矩陣是這些特征基組合成股票時序數據的權值。vi是矩陣v的列向量,是對應股指向量xi的權系數向量,也就是說單個股指的時間序列數據是由股指特征基u與vi的乘積。由于vi的維度小于n,這一步實現(xiàn)了維度約減。
2由于u是基,因此對股票異常波動的檢測被轉換為對系數矩陣中的異常分析。這里把vi看成r維空間的點,這點是具有時間序列性的。因此現(xiàn)在的問題是解決vi構成的序列中,存在哪些異常變化。這里,我們利用小波變換分別對v中的序列進行變換,從變換后的序列中找出那些“尖銳”的波形作為異常。具體步驟如下:
(1).把v的每一列vi當作一個序列。由于v是進行非負矩陣分解后的權系數矩陣,對原時間序列數據矩陣的壓縮,相當于減少的序列的屬性,因此我們只需要分別對序列向量vi(i=1,..r)進行小波變換,然后綜合分析1到r個向量的異常情況。
(2).選擇小波函數。利用不同小波基函數來對v進行多尺度分解,通過選擇不同的小波基來進一步分析異常檢測的能力。
(3).生成小波變換序列,找出序列的異常點。通常學者采用包含序列5%的最大值的點為異常點,判斷方式如下:
1)對序列向量vi進行小波變換后的序列,分類得到低頻系數a1和高頻系數d1。
2)找出所有大于閾值的極大值點dmax∈|d1|,并用數組p記錄dmax在d1的位置p。
3)將dmax置為0,重構d',d'=(d1,...di-1,0,di+1,dn/2)
4)將a1和d’做逆小波變換,得到新的序列。
5)對新產生的序列重復步驟1到4,直到不存在大于閾值的極大值點。
6)根據數組p中的每個p找到序列向量vi中的異常點。在去除vi中位于2p和2p-1兩點后,計算樣本均值
4.在確定了序列異常位置后,要進行實證分析。因此我們需要從對v(權重系數)進行小波變換后的序列中找出檢測到的異常波動相對于序列的位置,然后在原始矩陣數據中對應的位置標記出異常事件的時間點,并考察那個時候股市指數的變換情況,從而判斷檢測的準確性。具體做法如下:
(1)從進行小波變換后的序列中,標記出異常點的位置(步驟3),具體做法參見下述的加權方式
(2)對序列進行小波變換的逆變換到股指序列向量vi',還原出股指特征向量,即股票指數時間序列向量。
(3)從帶標記的股票指數時間序列向量中,定位出具體那個時間點出現(xiàn)異常波動。
實驗例:
我們采集了從2000/01/04到2015/12/03的上證股指數據,共3851項記錄,42個屬性值。對應的是42條15年的時間序列股票指數。然后,進行非負矩陣分解xm×n=um×rvr×n,r為分解指數。其中u表示基矩陣,每個列向量是構建整個股指矩陣的基元;v表示系數矩陣,是基元構建股指的權重,我們用權重序列來表示整個股指序列;r同時也表示了對特征空間的壓縮程度。r=n,則分解過程中沒有壓縮。實驗分別取r=1,5,10獲取的三組分解后的系數矩陣,以壓縮的方式來表示原始采樣數據。
由于分解采用了迭代分解的方式,即先初始化基矩陣u,然后根據式(9)(10),迭代計算u和v,并達到收斂條件。實驗選取了隨機系數矩陣來初始化基矩陣u。下圖展示的是進行非負矩陣分解后,系數矩陣v的序列表示。橫坐標表示采樣點位置,對應于原始采樣數據的采樣時間,縱坐標表示的是分解后得到的權重系數值。圖2r=1時,隨機系數矩陣來初始化基矩陣u,稀疏度為51%條件數為185.2;圖3r=5隨機系數矩陣來初始化基矩陣u,稀疏度為51%,條件數為185.2;圖4r=10隨機系數矩陣來初始化基矩陣u,稀疏度為51%,條件數為185.2。
為了從權重系數v中分析出異常情況,我們進一步對這些權重系數序列進行小波變換。由于股指數據的波動比較頻繁,為了更好地分析異常波動,應該適當增加小波分解階數。但隨著分解階數的增加,尺度空間和小波空間的變化越來越小,而工作量卻成倍的增加,故分解層數也不宜過多。經過實驗比較,選用5級分解。然后,從分解的5級序列中找出超過波動閾值的“尖銳”波形,這里將波動閾值超過所有最大取值5%的數據下限的波形記為尖銳波形;并對尖銳波形(第3節(jié),第2點的方法),進行加權平均。然后從這些加權平均的“尖銳”波形中,然后根據,第3節(jié),第4點所述步驟,檢測出異常波動。
圖5為對圖1表示的權中系數采用haar小波進行5級分解后的波形,從圖5中可以直觀地看出,各級波形中,存在這種“尖銳”的異常波動,定位出這些“尖銳”波形的位置,即可對應于證券市場發(fā)生異常波動的時間。我們采用的方法是設定一個正常波動區(qū)間,凡是在這區(qū)間范圍內變化的波形,都認為是正常波動,而超出該范圍的則為異常波動。因此,對于小波變換后得到各個層級的波形都會計算出異常波動點,然后我們采用加權方式對這些異常波型進行判斷。如果加權后該波形仍然在設定的區(qū)間范圍外,那么最終認定為異常波動??紤]小波分解各層次的粒度不同,我們采用了加權融合的方式進行疊加,并最終計算出該點的波動幅值。加權融合的權重計算方式如下:
設x為實際值,v為觀測時的隨機誤差,假定x估計值
因為
因此代價函數可寫為:
為使得j最小,對其求導解出最優(yōu)權值:
因此最優(yōu)估計量為:
根據多元函數求極值理論,可求出均方誤差最小時所對應的加權因子為
這里加權因子
以上方法是計算一個權重系數矢量構成的波形。由于進行小波分解的數據來源于對股指數據進行非負矩陣分解后得到的權重系數v,因此非負矩陣分解過程選擇的尺度r,決定了最終產生權重系數波形的個數。本文中,我們選擇了r=1,5,10進行了分解,并對每個權重系數波形進行單獨的小波分解,并檢測出相應異常波動位置。對于具有多個權重系數波形(如r=5,10),這里直接采用加權平均的方式計算波動幅度值。因此,在計算波動幅度值的過程中,有兩次加權求值。
1.對于nmf產生的權重系數矢量,進行5層小波分解后,計算出每層的異常點,然后進行加權融合,得到該權重系數矢量對應波形的異常點。
2當nnf的分解尺度r≠1時,需要對分解得到每個矢量波形經小波處理后的異常點的幅度值進行加權平均。
最后,經過兩次加權得到幅度值,仍在設定的波動區(qū)間外,我們認定為異常。為了進一步分析權重系數與異常點的關系,我們分析了根據式(14)計算得到的加權系數。根據小波變換得到5層波形,因此對應每組數據會得到5個加權系根據式(14)計算數,由于我們的數據量較大,把數據分為50個區(qū)域,每個區(qū)域包含80個樣本,因此每組數據的加權實際上是80個樣本的各自按照根據式(14)計算得到的均值。從圖6中可以看出,在區(qū)間25-30,40-50中的樣本的權重系數變化劇烈,而這部分正是異常點集中出現(xiàn)的區(qū)域。因此進行小波5層級分解后進行加權的系數,實際上也是受異常波動的影響出現(xiàn)較大幅度的波動,而非異常情況下的加權系數趨于一致,近似于加權平均。
在整個實驗中分析中,根據我們提出的異常檢測方法,在2000/01/04到2015/12/03的上證股指數據,共3851項紀錄中,我們一共檢測到異常波動107個,相應地,我們統(tǒng)計分析了在所有分段區(qū)間的每個記錄項,股指波動幅度超過5%的有137個,且是時間點上基本吻合。
我們采集了從2000/01/04到2015/12/03的上證股指數據,共3851項記錄,42個屬性值。對應的是42條15年的時間序列股票指數。然后,進行非負矩陣分解xm×n=um×rvr×n,r為分解指數。其中u表示基矩陣,每個列向量是構建整個股指矩陣的基元;v表示系數矩陣,是基元構建股指的權重,我們用權重序列來表示整個股指序列;r同時也表示了對特征空間的壓縮程度。r=n,則分解過程中沒有壓縮。實驗分別取r=1,5,10獲取的三組分解后的系數矩陣,以壓縮的方式來表示原始采樣數據。
nmf(非負矩陣分解)的實質是:在盡可能保持信息完整的情況下,將高維的隨機模式({xj,j=1,2,…,n})簡化為低維的隨機模式({v1,v2,…vn}),這種簡化的基礎是估計出數據中的本質結構u。從代數的觀點看,
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何不經過創(chuàng)造性勞動想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應該以權利要求書所限定的保護范圍為準。