(四川大學(xué) 四川 成都 610000)
關(guān)聯(lián)規(guī)則是美國IBM Almaden Research Center Rakeesh Agrawal等人于1993年首先提出來的KDD研究的一個(gè)重要課題。關(guān)聯(lián)規(guī)則挖掘本質(zhì)是從大量的數(shù)據(jù)中或?qū)ο箝g抽取關(guān)聯(lián)性,它可以揭示數(shù)據(jù)間的依賴關(guān)系,根據(jù)這種關(guān)聯(lián)性就可以從某一數(shù)據(jù)對象的信息來推斷另一個(gè)的信息。
在證券交易市場中,每天都有以交易行情為主的大量數(shù)據(jù)匯入數(shù)據(jù)庫。如果把同一天股票的上升(或下降)事件看成是被放入同一個(gè)貨籃的貨物,那么一個(gè)時(shí)期的股票交易數(shù)據(jù)就會(huì)形成多個(gè)貨籃數(shù)據(jù)。既然可以挖掘出規(guī)則:“如果一個(gè)貨籃中有嬰兒紙尿布,那么該貨籃中有啤酒的概率是80%”,也可以挖掘出同一時(shí)期內(nèi)股票上升(或下跌)的聯(lián)動(dòng)規(guī)則。Apriori 算法恰好是解決這類問題的有效方法,但是,由于股票行情數(shù)據(jù)是以時(shí)間序列方式存儲(chǔ)在數(shù)據(jù)庫中,無法直接用Apriori 算法進(jìn)行數(shù)據(jù)挖掘;要在股票行情數(shù)據(jù)庫中挖掘出根據(jù)時(shí)間而前后聯(lián)動(dòng)的關(guān)聯(lián)規(guī)則,需要在貨籃數(shù)據(jù)中多引入一個(gè)參數(shù):時(shí)間間隔。
另外,為了提高挖掘過程的有效性,還應(yīng)確定目標(biāo)關(guān)聯(lián)規(guī)則(即元規(guī)則)的形式。根據(jù)上面給出的用戶感興趣的規(guī)則形式:“T時(shí)間內(nèi),當(dāng)A股票價(jià)格上漲時(shí),B股票價(jià)格也會(huì)隨之上漲”。所以我們主要關(guān)心的是股票交易的時(shí)間和漲跌幅,其他如開盤價(jià)、成交量等可以認(rèn)為是一些無關(guān)信息。
本文從國泰君安數(shù)據(jù)庫中選取從2016年8月至2017年8月所有交易日下編號(hào)靠前的部分股票作為測試樣本,以探求關(guān)聯(lián)規(guī)則在股票市場中的應(yīng)用,剔除停盤日后初始下載樣本數(shù)為52109條。
1.導(dǎo)入數(shù)據(jù)
首先,我們將包含編號(hào)(gtacode)、股票名稱(Title)、交易日期(accpertime)、開盤價(jià)(Opnprc_JY)、收盤價(jià)(Clsprc_JY)和漲跌幅在內(nèi)的原始數(shù)據(jù)通過txt的形式導(dǎo)入到R語言中。
>setwd(“/Users/zhongzhong/Documents”)
>mydata 導(dǎo)入數(shù)據(jù)后,使用View(mydata)將會(huì)在軟件中顯示出所導(dǎo)入的數(shù)據(jù)。 2.數(shù)據(jù)的檢驗(yàn) (1)缺失值 ①識(shí)別缺失值 我們首先用is.na()函數(shù)識(shí)別數(shù)據(jù)中的缺失值。 ②探究缺失值 然后我們用sum(is.na())函數(shù)計(jì)算上海這個(gè)數(shù)據(jù)框中缺失值的數(shù)目,得到為1。 (2)錯(cuò)誤值 除了缺失值以外,我們還需要檢驗(yàn)數(shù)據(jù)中有沒有不符合實(shí)際的情況,比如漲跌幅中不可能有超過+10%和-10%的股票。經(jīng)檢驗(yàn),沒有出現(xiàn)這種情況。 (3)變量類型 在數(shù)據(jù)錄入過程中,我們通過str()函數(shù)發(fā)現(xiàn)gtacode為數(shù)值型(int),Title和時(shí)間為(Factor),其余都為類別型(chr),所有在后面的數(shù)據(jù)清理當(dāng)中需要進(jìn)行類型的轉(zhuǎn)換。 3.數(shù)據(jù)的清理 (1)缺失值的處理 通過na.omit()移除所有含有缺失值的觀測,使得數(shù)據(jù)中不再含有缺失值。 (2)類型的轉(zhuǎn)換 通過as.character()對Title進(jìn)行轉(zhuǎn)換為字符型,然后通過as.Data()對時(shí)間進(jìn)行轉(zhuǎn)換。 4.數(shù)據(jù)的規(guī)整 考慮到主要關(guān)鍵信息是股票交易的時(shí)間和漲跌幅,所以只篩選出編號(hào)、時(shí)間和漲幅三列有效數(shù)據(jù): >mydata<-mydata[,c(1,3,6)] 為了清晰明了的挖掘出用戶感興趣的規(guī)則形式:“T時(shí)間內(nèi),當(dāng)A股票價(jià)格上漲時(shí),B股票價(jià)格也會(huì)隨之上漲”,我們首先設(shè)定出一個(gè)時(shí)間間隔,同時(shí)限定最小漲幅來減少工作量。 定義1 設(shè)最小漲幅Zmin,|Zmin|<10% 定義2 設(shè)過票交易集T={T1,T2,…,Ts},其中T1=2016-08-02,Ts=2017-08-02 按最小漲幅篩選之后,可以由下圖看到,之前5萬多條數(shù)據(jù)驟減到了1345條,故時(shí)間段上我們將不做篩選調(diào)整,保留一年交易日的數(shù)據(jù): >mydata1<-subset(mydata,漲跌幅>=0.05) >view(mydata1) 5.apriori算法運(yùn)用 這樣之后,我們將mydata1讀出為txt格式,為后面讀入成transactions數(shù)據(jù)格式做準(zhǔn)備。然后使用read.transactions函數(shù)轉(zhuǎn)換成事務(wù)型數(shù)據(jù),可以利用dim(trans)和summary(trans)來查看數(shù)據(jù)集的基本情況。 圖1 apriori算法代碼展示 上圖得到前五個(gè)item的支持度分別為0.10169492、0.10169492、0.09322034、0.08898305、0.08898305。 這里我們所做的是在生成規(guī)則:知道了頻繁項(xiàng)集,過濾掉非頻繁項(xiàng)集,并找出第一步的頻繁項(xiàng)集中的規(guī)則: >sum(itemFreq) >trans[size(trans)>1] >myrules=apriori(trans,parameter=list(support=0.01,confidence=0.1,minlen=2,maxlen=20,target=“rules”)) 接下來我開始使用apriori算法生成一條關(guān)聯(lián)規(guī)則myrules如上圖:支持度為0.01,置信度為0.1,這里的minlen和maxlen是指規(guī)則的LHS+RHS的并集的元素個(gè)數(shù),具體的規(guī)則顯示在下圖中。 圖2 apriori算法顯示 從返回結(jié)果中看,可以看到總共有1299條規(guī)則生成。同時(shí),有236條交易記錄的transaction,225個(gè)商品item等信息。然后使用summary(myrules)可以查看規(guī)則匯總信息如下,包括每個(gè)籃子(交易)中含有的股票數(shù)目以及支持度、置信度的最小值、最大值和中位數(shù)等信息。 圖3 規(guī)則匯總信息 第一部分:規(guī)則的長度分布:就是minlen到maxlen之間的分布。如上例,len=2有492條規(guī)則,len=3有372條規(guī)則… 第二部分:quality measure的統(tǒng)計(jì)信息 第三部分:挖掘的相關(guān)信息。 了解了這些信息以后,我們所最關(guān)心的就是具體規(guī)則了,使用inspect()函數(shù)進(jìn)行查看具體的規(guī)則,下面我們先展現(xiàn)前十條規(guī)則: 圖4規(guī)則的具體展示 本文選擇了國泰安數(shù)據(jù)庫中的部分股票進(jìn)行關(guān)聯(lián)規(guī)則的應(yīng)用實(shí)驗(yàn)分析,得到了許多有意義的規(guī)則。如上圖,在支持度為1%,置信度為10%的條件下,代碼為000026和000678的兩只股票有同時(shí)上漲的趨勢,在上述挖掘結(jié)果的基礎(chǔ)上,我們可以進(jìn)行二次挖掘,進(jìn)一步分析各支股票之間趨勢變化的周期性和多維相似性等,得到更多有用的結(jié)果。 【參考文獻(xiàn)】 [1]Usama Fayyad,Gregpru Oatesdu-Shapiro,Padhraic Smyth,RAMASACY UTHURU SAMYMY,ETAL.Advances in Knowledge Discovery and Data Mining[M].AAAI Press/The MIT Press,1996. [2]Gregory Piatesdy-Shapiro,Willam J Frawley,Editors.Knowledge Discovery in Databases[M].AAAI Press,1991. [3]陸麗娜,陳亞萍,揚(yáng)麥順,等.挖掘關(guān)聯(lián)規(guī)則算法的優(yōu)化處理[J].計(jì)算機(jī)工程與應(yīng)用,2000,(8):99~102. [4]鄭朝霞,劉延建.關(guān)聯(lián)規(guī)則在股票分析中的應(yīng)用[J].成都大學(xué)學(xué)報(bào),2002,(12),46-49.三、相關(guān)結(jié)果